diff --git a/browser/3rdpartylicenses.txt b/browser/3rdpartylicenses.txt new file mode 100644 index 00000000..e95ca682 --- /dev/null +++ b/browser/3rdpartylicenses.txt @@ -0,0 +1,609 @@ +@angular/animations +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/cdk +MIT +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/common +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/core +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/forms +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/material +MIT +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/platform-browser +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@daelmaak/ngx-gallery +Apache-2.0 +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +rxjs +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +zone.js +MIT +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.io/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Roboto-Bold.ttf b/browser/Roboto-Bold.88d61d57d557fec8.ttf similarity index 100% rename from Roboto-Bold.ttf rename to browser/Roboto-Bold.88d61d57d557fec8.ttf diff --git a/Roboto-Medium.ttf b/browser/Roboto-Medium.af9d01395a70ca18.ttf similarity index 100% rename from Roboto-Medium.ttf rename to browser/Roboto-Medium.af9d01395a70ca18.ttf diff --git a/Roboto-Regular.ttf b/browser/Roboto-Regular.ae3a8db9374784f0.ttf similarity index 100% rename from Roboto-Regular.ttf rename to browser/Roboto-Regular.ae3a8db9374784f0.ttf diff --git a/assets/fonts/Roboto-Black.ttf b/browser/assets/fonts/Roboto-Black.ttf similarity index 100% rename from assets/fonts/Roboto-Black.ttf rename to browser/assets/fonts/Roboto-Black.ttf diff --git a/assets/fonts/Roboto-BlackItalic.ttf b/browser/assets/fonts/Roboto-BlackItalic.ttf similarity index 100% rename from assets/fonts/Roboto-BlackItalic.ttf rename to browser/assets/fonts/Roboto-BlackItalic.ttf diff --git a/assets/fonts/Roboto-Bold.ttf b/browser/assets/fonts/Roboto-Bold.ttf similarity index 100% rename from assets/fonts/Roboto-Bold.ttf rename to browser/assets/fonts/Roboto-Bold.ttf diff --git a/assets/fonts/Roboto-BoldItalic.ttf b/browser/assets/fonts/Roboto-BoldItalic.ttf similarity index 100% rename from assets/fonts/Roboto-BoldItalic.ttf rename to browser/assets/fonts/Roboto-BoldItalic.ttf diff --git a/assets/fonts/Roboto-Italic.ttf b/browser/assets/fonts/Roboto-Italic.ttf similarity index 100% rename from assets/fonts/Roboto-Italic.ttf rename to browser/assets/fonts/Roboto-Italic.ttf diff --git a/assets/fonts/Roboto-Light.ttf b/browser/assets/fonts/Roboto-Light.ttf similarity index 100% rename from assets/fonts/Roboto-Light.ttf rename to browser/assets/fonts/Roboto-Light.ttf diff --git a/assets/fonts/Roboto-LightItalic.ttf b/browser/assets/fonts/Roboto-LightItalic.ttf similarity index 100% rename from assets/fonts/Roboto-LightItalic.ttf rename to browser/assets/fonts/Roboto-LightItalic.ttf diff --git a/assets/fonts/Roboto-Medium.ttf b/browser/assets/fonts/Roboto-Medium.ttf similarity index 100% rename from assets/fonts/Roboto-Medium.ttf rename to browser/assets/fonts/Roboto-Medium.ttf diff --git a/assets/fonts/Roboto-MediumItalic.ttf b/browser/assets/fonts/Roboto-MediumItalic.ttf similarity index 100% rename from assets/fonts/Roboto-MediumItalic.ttf rename to browser/assets/fonts/Roboto-MediumItalic.ttf diff --git a/assets/fonts/Roboto-Regular.ttf b/browser/assets/fonts/Roboto-Regular.ttf similarity index 100% rename from assets/fonts/Roboto-Regular.ttf rename to browser/assets/fonts/Roboto-Regular.ttf diff --git a/assets/fonts/Roboto-Thin.ttf b/browser/assets/fonts/Roboto-Thin.ttf similarity index 100% rename from assets/fonts/Roboto-Thin.ttf rename to browser/assets/fonts/Roboto-Thin.ttf diff --git a/assets/fonts/Roboto-ThinItalic.ttf b/browser/assets/fonts/Roboto-ThinItalic.ttf similarity index 100% rename from assets/fonts/Roboto-ThinItalic.ttf rename to browser/assets/fonts/Roboto-ThinItalic.ttf diff --git a/assets/icons/GitHub-Mark-64px.png b/browser/assets/icons/GitHub-Mark-64px.png similarity index 100% rename from assets/icons/GitHub-Mark-64px.png rename to browser/assets/icons/GitHub-Mark-64px.png diff --git a/assets/icons/doe.ico b/browser/assets/icons/doe.ico similarity index 100% rename from assets/icons/doe.ico rename to browser/assets/icons/doe.ico diff --git a/assets/icons/doe.png b/browser/assets/icons/doe.png similarity index 100% rename from assets/icons/doe.png rename to browser/assets/icons/doe.png diff --git a/browser/assets/icons/logo.ico b/browser/assets/icons/logo.ico new file mode 100644 index 00000000..357b76ff Binary files /dev/null and b/browser/assets/icons/logo.ico differ diff --git a/browser/assets/icons/logo.png b/browser/assets/icons/logo.png new file mode 100644 index 00000000..0d038f28 Binary files /dev/null and b/browser/assets/icons/logo.png differ diff --git a/browser/assets/icons/logo.webp b/browser/assets/icons/logo.webp new file mode 100644 index 00000000..87f6d372 Binary files /dev/null and b/browser/assets/icons/logo.webp differ diff --git a/assets/icons/npm-logo.svg b/browser/assets/icons/npm-logo.svg similarity index 100% rename from assets/icons/npm-logo.svg rename to browser/assets/icons/npm-logo.svg diff --git a/assets/icons/stackblitz-logo-link.svg b/browser/assets/icons/stackblitz-logo-link.svg similarity index 100% rename from assets/icons/stackblitz-logo-link.svg rename to browser/assets/icons/stackblitz-logo-link.svg diff --git a/assets/icons/stackblitz-logo.svg b/browser/assets/icons/stackblitz-logo.svg similarity index 100% rename from assets/icons/stackblitz-logo.svg rename to browser/assets/icons/stackblitz-logo.svg diff --git a/assets/images/beach-1.mp4 b/browser/assets/images/beach-1.mp4 similarity index 100% rename from assets/images/beach-1.mp4 rename to browser/assets/images/beach-1.mp4 diff --git a/assets/images/cheers-1-lg.jpg b/browser/assets/images/cheers-1-lg.jpg similarity index 100% rename from assets/images/cheers-1-lg.jpg rename to browser/assets/images/cheers-1-lg.jpg diff --git a/assets/images/cheers-1-md.jpg b/browser/assets/images/cheers-1-md.jpg similarity index 100% rename from assets/images/cheers-1-md.jpg rename to browser/assets/images/cheers-1-md.jpg diff --git a/assets/images/cheers-1-sm.jpg b/browser/assets/images/cheers-1-sm.jpg similarity index 100% rename from assets/images/cheers-1-sm.jpg rename to browser/assets/images/cheers-1-sm.jpg diff --git a/assets/images/cheers-1-xl.jpg b/browser/assets/images/cheers-1-xl.jpg similarity index 100% rename from assets/images/cheers-1-xl.jpg rename to browser/assets/images/cheers-1-xl.jpg diff --git a/assets/images/church-1-lg.jpg b/browser/assets/images/church-1-lg.jpg similarity index 100% rename from assets/images/church-1-lg.jpg rename to browser/assets/images/church-1-lg.jpg diff --git a/assets/images/church-1-md.jpg b/browser/assets/images/church-1-md.jpg similarity index 100% rename from assets/images/church-1-md.jpg rename to browser/assets/images/church-1-md.jpg diff --git a/assets/images/church-1-sm.jpg b/browser/assets/images/church-1-sm.jpg similarity index 100% rename from assets/images/church-1-sm.jpg rename to browser/assets/images/church-1-sm.jpg diff --git a/assets/images/forest-1-lg.jpg b/browser/assets/images/forest-1-lg.jpg similarity index 100% rename from assets/images/forest-1-lg.jpg rename to browser/assets/images/forest-1-lg.jpg diff --git a/assets/images/forest-1-md.jpg b/browser/assets/images/forest-1-md.jpg similarity index 100% rename from assets/images/forest-1-md.jpg rename to browser/assets/images/forest-1-md.jpg diff --git a/assets/images/forest-1-sm.jpg b/browser/assets/images/forest-1-sm.jpg similarity index 100% rename from assets/images/forest-1-sm.jpg rename to browser/assets/images/forest-1-sm.jpg diff --git a/assets/images/house-1-lg.jpg b/browser/assets/images/house-1-lg.jpg similarity index 100% rename from assets/images/house-1-lg.jpg rename to browser/assets/images/house-1-lg.jpg diff --git a/assets/images/house-1-md.jpg b/browser/assets/images/house-1-md.jpg similarity index 100% rename from assets/images/house-1-md.jpg rename to browser/assets/images/house-1-md.jpg diff --git a/assets/images/house-1-sm.jpg b/browser/assets/images/house-1-sm.jpg similarity index 100% rename from assets/images/house-1-sm.jpg rename to browser/assets/images/house-1-sm.jpg diff --git a/assets/images/laptop-1-lg.jpg b/browser/assets/images/laptop-1-lg.jpg similarity index 100% rename from assets/images/laptop-1-lg.jpg rename to browser/assets/images/laptop-1-lg.jpg diff --git a/assets/images/laptop-1-md.jpg b/browser/assets/images/laptop-1-md.jpg similarity index 100% rename from assets/images/laptop-1-md.jpg rename to browser/assets/images/laptop-1-md.jpg diff --git a/assets/images/laptop-1-sm.jpg b/browser/assets/images/laptop-1-sm.jpg similarity index 100% rename from assets/images/laptop-1-sm.jpg rename to browser/assets/images/laptop-1-sm.jpg diff --git a/assets/images/lens-1-lg.jpg b/browser/assets/images/lens-1-lg.jpg similarity index 100% rename from assets/images/lens-1-lg.jpg rename to browser/assets/images/lens-1-lg.jpg diff --git a/assets/images/lens-1-md.jpg b/browser/assets/images/lens-1-md.jpg similarity index 100% rename from assets/images/lens-1-md.jpg rename to browser/assets/images/lens-1-md.jpg diff --git a/assets/images/lens-1-sm.jpg b/browser/assets/images/lens-1-sm.jpg similarity index 100% rename from assets/images/lens-1-sm.jpg rename to browser/assets/images/lens-1-sm.jpg diff --git a/assets/images/mesh-1-lg.jpg b/browser/assets/images/mesh-1-lg.jpg similarity index 100% rename from assets/images/mesh-1-lg.jpg rename to browser/assets/images/mesh-1-lg.jpg diff --git a/assets/images/mesh-1-md.jpg b/browser/assets/images/mesh-1-md.jpg similarity index 100% rename from assets/images/mesh-1-md.jpg rename to browser/assets/images/mesh-1-md.jpg diff --git a/assets/images/mesh-1-sm.jpg b/browser/assets/images/mesh-1-sm.jpg similarity index 100% rename from assets/images/mesh-1-sm.jpg rename to browser/assets/images/mesh-1-sm.jpg diff --git a/assets/images/mountains-1-lg.jpg b/browser/assets/images/mountains-1-lg.jpg similarity index 100% rename from assets/images/mountains-1-lg.jpg rename to browser/assets/images/mountains-1-lg.jpg diff --git a/assets/images/mountains-1-md.jpg b/browser/assets/images/mountains-1-md.jpg similarity index 100% rename from assets/images/mountains-1-md.jpg rename to browser/assets/images/mountains-1-md.jpg diff --git a/assets/images/mountains-1-sm.jpg b/browser/assets/images/mountains-1-sm.jpg similarity index 100% rename from assets/images/mountains-1-sm.jpg rename to browser/assets/images/mountains-1-sm.jpg diff --git a/assets/images/mountains-2-md.jpg b/browser/assets/images/mountains-2-md.jpg similarity index 100% rename from assets/images/mountains-2-md.jpg rename to browser/assets/images/mountains-2-md.jpg diff --git a/assets/images/mountains-2-sm.jpg b/browser/assets/images/mountains-2-sm.jpg similarity index 100% rename from assets/images/mountains-2-sm.jpg rename to browser/assets/images/mountains-2-sm.jpg diff --git a/assets/images/sky-1-lg.jpg b/browser/assets/images/sky-1-lg.jpg similarity index 100% rename from assets/images/sky-1-lg.jpg rename to browser/assets/images/sky-1-lg.jpg diff --git a/assets/images/sky-1-md.jpg b/browser/assets/images/sky-1-md.jpg similarity index 100% rename from assets/images/sky-1-md.jpg rename to browser/assets/images/sky-1-md.jpg diff --git a/assets/images/sky-1-sm.jpg b/browser/assets/images/sky-1-sm.jpg similarity index 100% rename from assets/images/sky-1-sm.jpg rename to browser/assets/images/sky-1-sm.jpg diff --git a/assets/images/snowflake-1-lg.jpg b/browser/assets/images/snowflake-1-lg.jpg similarity index 100% rename from assets/images/snowflake-1-lg.jpg rename to browser/assets/images/snowflake-1-lg.jpg diff --git a/assets/images/snowflake-1-md.jpg b/browser/assets/images/snowflake-1-md.jpg similarity index 100% rename from assets/images/snowflake-1-md.jpg rename to browser/assets/images/snowflake-1-md.jpg diff --git a/assets/images/snowflake-1-sm.jpg b/browser/assets/images/snowflake-1-sm.jpg similarity index 100% rename from assets/images/snowflake-1-sm.jpg rename to browser/assets/images/snowflake-1-sm.jpg diff --git a/assets/images/terraces-1-lg.jpg b/browser/assets/images/terraces-1-lg.jpg similarity index 100% rename from assets/images/terraces-1-lg.jpg rename to browser/assets/images/terraces-1-lg.jpg diff --git a/assets/images/terraces-1-md.jpg b/browser/assets/images/terraces-1-md.jpg similarity index 100% rename from assets/images/terraces-1-md.jpg rename to browser/assets/images/terraces-1-md.jpg diff --git a/assets/images/terraces-1-sm.jpg b/browser/assets/images/terraces-1-sm.jpg similarity index 100% rename from assets/images/terraces-1-sm.jpg rename to browser/assets/images/terraces-1-sm.jpg diff --git a/assets/images/tulip-1-lg.jpg b/browser/assets/images/tulip-1-lg.jpg similarity index 100% rename from assets/images/tulip-1-lg.jpg rename to browser/assets/images/tulip-1-lg.jpg diff --git a/assets/images/tulip-1-md.jpg b/browser/assets/images/tulip-1-md.jpg similarity index 100% rename from assets/images/tulip-1-md.jpg rename to browser/assets/images/tulip-1-md.jpg diff --git a/assets/images/tulip-1-sm.jpg b/browser/assets/images/tulip-1-sm.jpg similarity index 100% rename from assets/images/tulip-1-sm.jpg rename to browser/assets/images/tulip-1-sm.jpg diff --git a/favicon.ico b/browser/favicon.ico similarity index 100% rename from favicon.ico rename to browser/favicon.ico diff --git a/google08efa3d99d13d01e.html b/browser/google08efa3d99d13d01e.html similarity index 100% rename from google08efa3d99d13d01e.html rename to browser/google08efa3d99d13d01e.html diff --git a/browser/index.html b/browser/index.html new file mode 100644 index 00000000..df744a05 --- /dev/null +++ b/browser/index.html @@ -0,0 +1,17 @@ + + + + + Ngx Gallery + + + + + + + + + + + + diff --git a/browser/main.00e373f336046861.js b/browser/main.00e373f336046861.js new file mode 100644 index 00000000..6c875cf6 --- /dev/null +++ b/browser/main.00e373f336046861.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkdemo=self.webpackChunkdemo||[]).push([[792],{374:()=>{function rs(e,n){return Object.is(e,n)}let je=null,Nr=!1,Or=1;const sn=Symbol("SIGNAL");function ee(e){const n=je;return je=e,n}const os={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function hu(e){if(Nr)throw new Error("");if(null===je)return;je.consumerOnSignalRead(e);const n=je.nextProducerIndex++;Xa(je),ne.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function mu(e){Xa(e);for(let n=0;n0}function Xa(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function Yg(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function Qg(e){return void 0!==e.producerNode}function Xg(e){const n=Object.create(xT);n.computation=e;const t=()=>{if(Gg(n),hu(n),n.value===Ja)throw n.error;return n.value};return t[sn]=n,t}const gu=Symbol("UNSET"),bu=Symbol("COMPUTING"),Ja=Symbol("ERRORED"),xT={...os,value:gu,dirty:!0,error:null,equal:rs,producerMustRecompute:e=>e.value===gu||e.value===bu,producerRecomputeValue(e){if(e.value===bu)throw new Error("Detected cycle in computations.");const n=e.value;e.value=bu;const t=Ya(e);let i;try{i=e.computation()}catch(r){i=Ja,e.error=r}finally{fu(e,t)}n!==gu&&n!==Ja&&i!==Ja&&e.equal(n,i)?e.value=n:(e.value=i,e.version++)}};let Jg=function MT(){throw new Error};function eb(){Jg()}let ec=null;function tb(e,n){Wg()||eb(),e.equal(e.value,n)||(e.value=n,function AT(e){e.version++,function DT(){Or++}(),qg(e),ec?.()}(e))}const kT={...os,equal:rs,value:void 0};function tc(e){return"function"==typeof e}let vu=!1;const _n={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const n=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+n.stack)}else vu&&console.log("RxJS: Back to a better error behavior. Thank you. <3");vu=e},get useDeprecatedSynchronousErrorHandling(){return vu}};function Fr(e){setTimeout(()=>{throw e},0)}const nc={closed:!0,next(e){},error(e){if(_n.useDeprecatedSynchronousErrorHandling)throw e;Fr(e)},complete(){}},ic=Array.isArray||(e=>e&&"number"==typeof e.length);function yu(e){return null!==e&&"object"==typeof e}const rc=(()=>{function e(n){return Error.call(this),this.message=n?`${n.length} errors occurred during unsubscription:\n${n.map((t,i)=>`${i+1}) ${t.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=n,this}return e.prototype=Object.create(Error.prototype),e})();class me{constructor(n){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,n&&(this._ctorUnsubscribe=!0,this._unsubscribe=n)}unsubscribe(){let n;if(this.closed)return;let{_parentOrParents:t,_ctorUnsubscribe:i,_unsubscribe:r,_subscriptions:o}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,t instanceof me)t.remove(this);else if(null!==t)for(let s=0;sn.concat(t instanceof rc?t.errors:t),[])}me.EMPTY=((e=new me).closed=!0,e);const oc="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class Ce extends me{constructor(n,t,i){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=nc;break;case 1:if(!n){this.destination=nc;break}if("object"==typeof n){n instanceof Ce?(this.syncErrorThrowable=n.syncErrorThrowable,this.destination=n,n.add(this)):(this.syncErrorThrowable=!0,this.destination=new ib(this,n));break}default:this.syncErrorThrowable=!0,this.destination=new ib(this,n,t,i)}}[oc](){return this}static create(n,t,i){const r=new Ce(n,t,i);return r.syncErrorThrowable=!1,r}next(n){this.isStopped||this._next(n)}error(n){this.isStopped||(this.isStopped=!0,this._error(n))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(n){this.destination.next(n)}_error(n){this.destination.error(n),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:n}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=n,this}}class ib extends Ce{constructor(n,t,i,r){super(),this._parentSubscriber=n;let o,s=this;tc(t)?o=t:t&&(o=t.next,i=t.error,r=t.complete,t!==nc&&(s=Object.create(t),tc(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=o,this._error=i,this._complete=r}next(n){if(!this.isStopped&&this._next){const{_parentSubscriber:t}=this;_n.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?this.__tryOrSetError(t,this._next,n)&&this.unsubscribe():this.__tryOrUnsub(this._next,n)}}error(n){if(!this.isStopped){const{_parentSubscriber:t}=this,{useDeprecatedSynchronousErrorHandling:i}=_n;if(this._error)i&&t.syncErrorThrowable?(this.__tryOrSetError(t,this._error,n),this.unsubscribe()):(this.__tryOrUnsub(this._error,n),this.unsubscribe());else if(t.syncErrorThrowable)i?(t.syncErrorValue=n,t.syncErrorThrown=!0):Fr(n),this.unsubscribe();else{if(this.unsubscribe(),i)throw n;Fr(n)}}}complete(){if(!this.isStopped){const{_parentSubscriber:n}=this;if(this._complete){const t=()=>this._complete.call(this._context);_n.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?(this.__tryOrSetError(n,t),this.unsubscribe()):(this.__tryOrUnsub(t),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(n,t){try{n.call(this._context,t)}catch(i){if(this.unsubscribe(),_n.useDeprecatedSynchronousErrorHandling)throw i;Fr(i)}}__tryOrSetError(n,t,i){if(!_n.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{t.call(this._context,i)}catch(r){return _n.useDeprecatedSynchronousErrorHandling?(n.syncErrorValue=r,n.syncErrorThrown=!0,!0):(Fr(r),!0)}return!1}_unsubscribe(){const{_parentSubscriber:n}=this;this._context=null,this._parentSubscriber=null,n.unsubscribe()}}const as="function"==typeof Symbol&&Symbol.observable||"@@observable";function wu(e){return e}let Le=(()=>{class e{constructor(t){this._isScalar=!1,t&&(this._subscribe=t)}lift(t){const i=new e;return i.source=this,i.operator=t,i}subscribe(t,i,r){const{operator:o}=this,s=function RT(e,n,t){if(e){if(e instanceof Ce)return e;if(e[oc])return e[oc]()}return e||n||t?new Ce(e,n,t):new Ce(nc)}(t,i,r);if(s.add(o?o.call(s,this.source):this.source||_n.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),_n.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(t){try{return this._subscribe(t)}catch(i){_n.useDeprecatedSynchronousErrorHandling&&(t.syncErrorThrown=!0,t.syncErrorValue=i),function FT(e){for(;e;){const{closed:n,destination:t,isStopped:i}=e;if(n||i)return!1;e=t&&t instanceof Ce?t:null}return!0}(t)?t.error(i):console.warn(i)}}forEach(t,i){return new(i=ob(i))((r,o)=>{let s;s=this.subscribe(a=>{try{t(a)}catch(c){o(c),s&&s.unsubscribe()}},o,r)})}_subscribe(t){const{source:i}=this;return i&&i.subscribe(t)}[as](){return this}pipe(...t){return 0===t.length?this:function rb(e){return 0===e.length?wu:1===e.length?e[0]:function(t){return e.reduce((i,r)=>r(i),t)}}(t)(this)}toPromise(t){return new(t=ob(t))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return e.create=n=>new e(n),e})();function ob(e){if(e||(e=_n.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const Li=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class sb extends me{constructor(n,t){super(),this.subject=n,this.subscriber=t,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const n=this.subject,t=n.observers;if(this.subject=null,!t||0===t.length||n.isStopped||n.closed)return;const i=t.indexOf(this.subscriber);-1!==i&&t.splice(i,1)}}class ab extends Ce{constructor(n){super(n),this.destination=n}}let Ve=(()=>{class e extends Le{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[oc](){return new ab(this)}lift(t){const i=new cb(this,this);return i.operator=t,i}next(t){if(this.closed)throw new Li;if(!this.isStopped){const{observers:i}=this,r=i.length,o=i.slice();for(let s=0;snew cb(n,t),e})();class cb extends Ve{constructor(n,t){super(),this.destination=n,this.source=t}next(n){const{destination:t}=this;t&&t.next&&t.next(n)}error(n){const{destination:t}=this;t&&t.error&&this.destination.error(n)}complete(){const{destination:n}=this;n&&n.complete&&this.destination.complete()}_subscribe(n){const{source:t}=this;return t?this.source.subscribe(n):me.EMPTY}}class lb extends Ve{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const t=super._subscribe(n);return t&&!t.closed&&n.next(this._value),t}getValue(){if(this.hasError)throw this.thrownError;if(this.closed)throw new Li;return this._value}next(n){super.next(this._value=n)}}function ht(e,n){return function(i){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return i.lift(new PT(e,n))}}class PT{constructor(n,t){this.project=n,this.thisArg=t}call(n,t){return t.subscribe(new LT(n,this.project,this.thisArg))}}class LT extends Ce{constructor(n,t,i){super(n),this.project=t,this.count=0,this.thisArg=i||this}_next(n){let t;try{t=this.project.call(this.thisArg,n,this.count++)}catch(i){return void this.destination.error(i)}this.destination.next(t)}}const db=(()=>{function e(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return e.prototype=Object.create(Error.prototype),e})();function sc(e,n){return function(i){return i.lift(new VT(e,n))}}class VT{constructor(n,t){this.predicate=n,this.thisArg=t}call(n,t){return t.subscribe(new BT(n,this.predicate,this.thisArg))}}class BT extends Ce{constructor(n,t,i){super(n),this.predicate=t,this.thisArg=i,this.count=0}_next(n){let t;try{t=this.predicate.call(this.thisArg,n,this.count++)}catch(i){return void this.destination.error(i)}t&&this.destination.next(n)}}const jT=(()=>{function e(){return Error.call(this),this.message="argument out of range",this.name="ArgumentOutOfRangeError",this}return e.prototype=Object.create(Error.prototype),e})(),ub=new Le(e=>e.complete());function Cu(e){return e?function HT(e){return new Le(n=>e.schedule(()=>n.complete()))}(e):ub}function cs(e){return n=>0===e?Cu():n.lift(new UT(e))}class UT{constructor(n){if(this.total=n,this.total<0)throw new jT}call(n,t){return t.subscribe(new zT(n,this.total))}}class zT extends Ce{constructor(n,t){super(n),this.total=t,this.count=0}_next(n){const t=this.total,i=++this.count;i<=t&&(this.destination.next(n),i===t&&(this.destination.complete(),this.unsubscribe()))}}class GT{constructor(n){this.defaultValue=n}call(n,t){return t.subscribe(new qT(n,this.defaultValue))}}class qT extends Ce{constructor(n,t){super(n),this.defaultValue=t,this.isEmpty=!0}_next(n){this.isEmpty=!1,this.destination.next(n)}_complete(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}function WT(e=YT){return n=>n.lift(new ZT(e))}class ZT{constructor(n){this.errorFactory=n}call(n,t){return t.subscribe(new KT(n,this.errorFactory))}}class KT extends Ce{constructor(n,t){super(n),this.errorFactory=t,this.hasValue=!1}_next(n){this.hasValue=!0,this.destination.next(n)}_complete(){if(this.hasValue)return this.destination.complete();{let n;try{n=this.errorFactory()}catch(t){n=t}this.destination.error(n)}}}function YT(){return new db}const hb="https://g.co/ng/security#xss";class w extends Error{constructor(n,t){super(function gi(e,n){return`NG0${Math.abs(e)}${n?": "+n:""}`}(n,t)),this.code=n}}function Qn(e){return{toString:e}.toString()}const Pr="__parameters__";function Vr(e,n,t){return Qn(()=>{const i=function Eu(e){return function(...t){if(e){const i=e(...t);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(c,l,d){const u=c.hasOwnProperty(Pr)?c[Pr]:Object.defineProperty(c,Pr,{value:[]})[Pr];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),c}}return t&&(r.prototype=Object.create(t.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})}const Ae=globalThis;function ge(e){for(let n in e)if(e[n]===ge)return n;throw Error("Could not find renamed property on target object.")}function XT(e,n){for(const t in n)n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=n[t])}function Je(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(Je).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const n=e.toString();if(null==n)return""+n;const t=n.indexOf("\n");return-1===t?n:n.substring(0,t)}function Du(e,n){return null==e||""===e?null===n?"":n:null==n||""===n?e:e+" "+n}const eS=ge({__forward_ref__:ge});function be(e){return e.__forward_ref__=be,e.toString=function(){return Je(this())},e}function z(e){return cc(e)?e():e}function cc(e){return"function"==typeof e&&e.hasOwnProperty(eS)&&e.__forward_ref__===be}function L(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function He(e){return{providers:e.providers||[],imports:e.imports||[]}}function lc(e){return gb(e,uc)||gb(e,bb)}function gb(e,n){return e.hasOwnProperty(n)?e[n]:null}function dc(e){return e&&(e.hasOwnProperty(xu)||e.hasOwnProperty(oS))?e[xu]:null}const uc=ge({\u0275prov:ge}),xu=ge({\u0275inj:ge}),bb=ge({ngInjectableDef:ge}),oS=ge({ngInjectorDef:ge});class D{constructor(n,t){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof t?this.__NG_ELEMENT_ID__=t:void 0!==t&&(this.\u0275prov=L({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function ku(e){return e&&!!e.\u0275providers}const ls=ge({\u0275cmp:ge}),Au=ge({\u0275dir:ge}),Nu=ge({\u0275pipe:ge}),vb=ge({\u0275mod:ge}),Xn=ge({\u0275fac:ge}),ds=ge({__NG_ELEMENT_ID__:ge}),yb=ge({__NG_ENV_ID__:ge});function K(e){return"string"==typeof e?e:null==e?"":String(e)}function Ou(e,n){throw new w(-201,!1)}var oe=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(oe||{});let Fu;function wb(){return Fu}function Lt(e){const n=Fu;return Fu=e,n}function Cb(e,n,t){const i=lc(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:t&oe.Optional?null:void 0!==n?n:void Ou()}const us={},Ru="__NG_DI_FLAG__",hc="ngTempTokenPath",uS=/\n/gm,Eb="__source";let Br;function _i(e){const n=Br;return Br=e,n}function mS(e,n=oe.Default){if(void 0===Br)throw new w(-203,!1);return null===Br?Cb(e,void 0,n):Br.get(e,n&oe.Optional?null:void 0,n)}function N(e,n=oe.Default){return(wb()||mS)(z(e),n)}function T(e,n=oe.Default){return N(e,fc(n))}function fc(e){return typeof e>"u"||"number"==typeof e?e:(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Pu(e){const n=[];for(let t=0;tArray.isArray(t)?Hr(t,n):n(t))}function xb(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function pc(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}function Zt(e,n,t){let i=Ur(e,n);return i>=0?e[1|i]=t:(i=~i,function Mb(e,n,t,i){let r=e.length;if(r==n)e.push(t,i);else if(1===r)e.push(i,e[0]),e[0]=t;else{for(r--,e.push(e[r-1],e[r]);r>n;)e[r]=e[r-2],r--;e[n]=t,e[n+1]=i}}(e,i,n,t)),i}function Vu(e,n){const t=Ur(e,n);if(t>=0)return e[1|t]}function Ur(e,n){return function Ib(e,n,t){let i=0,r=e.length>>t;for(;r!==i;){const o=i+(r-i>>1),s=e[o<n?r=o:i=o+1}return~(r<n){s=o-1;break}}}for(;o-1){let o;for(;++ro?"":r[d+1].toLowerCase(),2&i&&l!==u){if(yn(i))return!1;s=!0}}}}else{if(!s&&!yn(i)&&!yn(c))return!1;if(s&&yn(c))continue;s=!1,i=c|1&i}}return yn(i)||s}function yn(e){return!(1&e)}function MS(e,n,t,i){if(null===n)return-1;let r=0;if(i||!t){let o=!1;for(;r-1)for(t++;t0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!yn(s)&&(n+=Fb(o,r),r=""),i=s,o=o||!yn(i);t++}return""!==r&&(n+=Fb(o,r)),n}function ft(e){return Qn(()=>{const n=Pb(e),t={...n,decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===_c.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||vn.Emulated,styles:e.styles||ae,_:null,schemas:e.schemas||null,tView:null,id:""};Lb(t);const i=e.dependencies;return t.directiveDefs=vc(i,!1),t.pipeDefs=vc(i,!0),t.id=function LS(e){let n=0;const t=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(const r of t)n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(t),t})}function FS(e){return re(e)||et(e)}function RS(e){return null!==e}function qe(e){return Qn(()=>({type:e.type,bootstrap:e.bootstrap||ae,declarations:e.declarations||ae,imports:e.imports||ae,exports:e.exports||ae,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Rb(e,n){if(null==e)return On;const t={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i];let o,s,a=vi.None;Array.isArray(r)?(a=r[0],o=r[1],s=r[2]??o):(o=r,s=r),n?(t[o]=a!==vi.None?[i,a]:i,n[o]=s):t[o]=i}return t}function V(e){return Qn(()=>{const n=Pb(e);return Lb(n),n})}function Tt(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function re(e){return e[ls]||null}function et(e){return e[Au]||null}function mt(e){return e[Nu]||null}function Pb(e){const n={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:n,inputTransforms:null,inputConfig:e.inputs||On,exportAs:e.exportAs||null,standalone:!0===e.standalone,signals:!0===e.signals,selectors:e.selectors||ae,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Rb(e.inputs,n),outputs:Rb(e.outputs),debugInfo:null}}function Lb(e){e.features?.forEach(n=>n(e))}function vc(e,n){if(!e)return null;const t=n?mt:FS;return()=>("function"==typeof e?e():e).map(i=>t(i)).filter(RS)}function ms(e){return{\u0275providers:e}}function VS(...e){return{\u0275providers:Uu(0,e),\u0275fromNgModule:!0}}function Uu(e,...n){const t=[],i=new Set;let r;const o=s=>{t.push(s)};return Hr(n,s=>{const a=s;yc(a,o,[],i)&&(r||=[],r.push(a))}),void 0!==r&&Vb(r,o),t}function Vb(e,n){for(let t=0;t{n(o,i)})}}function yc(e,n,t,i){if(!(e=z(e)))return!1;let r=null,o=dc(e);const s=!o&&re(e);if(o||s){if(s&&!s.standalone)return!1;r=e}else{const c=e.ngModule;if(o=dc(c),!o)return!1;r=c}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const c="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const l of c)yc(l,n,t,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let l;i.add(r);try{Hr(o.imports,d=>{yc(d,n,t,i)&&(l||=[],l.push(d))})}finally{}void 0!==l&&Vb(l,n)}if(!a){const l=Vi(r)||(()=>new r);n({provide:r,useFactory:l,deps:ae},r),n({provide:Bu,useValue:r,multi:!0},r),n({provide:Fn,useValue:()=>N(r),multi:!0},r)}const c=o.providers;if(null!=c&&!a){const l=e;zu(c,d=>{n(d,l)})}}}return r!==e&&void 0!==e.providers}function zu(e,n){for(let t of e)ku(t)&&(t=t.\u0275providers),Array.isArray(t)?zu(t,n):n(t)}const BS=ge({provide:String,useValue:ge});function $u(e){return null!==e&&"object"==typeof e&&BS in e}function ji(e){return"function"==typeof e}const Gu=new D(""),wc={},HS={};let qu;function Cc(){return void 0===qu&&(qu=new bc),qu}class wn{}class zr extends wn{get destroyed(){return this._destroyed}constructor(n,t,i,r){super(),this.parent=t,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Zu(n,s=>this.processProvider(s)),this.records.set(Tb,$r(void 0,this)),r.has("environment")&&this.records.set(wn,$r(void 0,this));const o=this.records.get(Gu);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Bu,ae,oe.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const n=ee(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const t=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of t)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),ee(n)}}onDestroy(n){return this.assertNotDestroyed(),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){this.assertNotDestroyed();const t=_i(this),i=Lt(void 0);try{return n()}finally{_i(t),Lt(i)}}get(n,t=us,i=oe.Default){if(this.assertNotDestroyed(),n.hasOwnProperty(yb))return n[yb](this);i=fc(i);const o=_i(this),s=Lt(void 0);try{if(!(i&oe.SkipSelf)){let c=this.records.get(n);if(void 0===c){const l=function qS(e){return"function"==typeof e||"object"==typeof e&&e instanceof D}(n)&&lc(n);c=l&&this.injectableDefInScope(l)?$r(Wu(n),wc):null,this.records.set(n,c)}if(null!=c)return this.hydrate(n,c)}return(i&oe.Self?Cc():this.parent).get(n,t=i&oe.Optional&&t===us?null:t)}catch(a){if("NullInjectorError"===a.name){if((a[hc]=a[hc]||[]).unshift(Je(n)),o)throw a;return function gS(e,n,t,i){const r=e[hc];throw n[Eb]&&r.unshift(n[Eb]),e.message=function bS(e,n,t,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=Je(n);if(Array.isArray(n))r=n.map(Je).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):Je(a)))}r=`{${o.join(", ")}}`}return`${t}${i?"("+i+")":""}[${r}]: ${e.replace(uS,"\n ")}`}("\n"+e.message,r,t,i),e.ngTokenPath=r,e[hc]=null,e}(a,n,"R3InjectorError",this.source)}throw a}finally{Lt(s),_i(o)}}resolveInjectorInitializers(){const n=ee(null),t=_i(this),i=Lt(void 0);try{const o=this.get(Fn,ae,oe.Self);for(const s of o)s()}finally{_i(t),Lt(i),ee(n)}}toString(){const n=[],t=this.records;for(const i of t.keys())n.push(Je(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new w(205,!1)}processProvider(n){let t=ji(n=z(n))?n:z(n&&n.provide);const i=function zS(e){return $u(e)?$r(void 0,e.useValue):$r(Hb(e),wc)}(n);if(!ji(n)&&!0===n.multi){let r=this.records.get(t);r||(r=$r(void 0,wc,!0),r.factory=()=>Pu(r.multi),this.records.set(t,r)),t=n,r.multi.push(n)}this.records.set(t,i)}hydrate(n,t){const i=ee(null);try{return t.value===wc&&(t.value=HS,t.value=t.factory()),"object"==typeof t.value&&t.value&&function GS(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{ee(i)}}injectableDefInScope(n){if(!n.providedIn)return!1;const t=z(n.providedIn);return"string"==typeof t?"any"===t||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(n){const t=this._onDestroyHooks.indexOf(n);-1!==t&&this._onDestroyHooks.splice(t,1)}}function Wu(e){const n=lc(e),t=null!==n?n.factory:Vi(e);if(null!==t)return t;if(e instanceof D)throw new w(204,!1);if(e instanceof Function)return function US(e){if(e.length>0)throw new w(204,!1);const t=function rS(e){return e&&(e[uc]||e[bb])||null}(e);return null!==t?()=>t.factory(e):()=>new e}(e);throw new w(204,!1)}function Hb(e,n,t){let i;if(ji(e)){const r=z(e);return Vi(r)||Wu(r)}if($u(e))i=()=>z(e.useValue);else if(function jb(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(...Pu(e.deps||[]));else if(function Bb(e){return!(!e||!e.useExisting)}(e))i=()=>N(z(e.useExisting));else{const r=z(e&&(e.useClass||e.provide));if(!function $S(e){return!!e.deps}(e))return Vi(r)||Wu(r);i=()=>new r(...Pu(e.deps))}return i}function $r(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function Zu(e,n){for(const t of e)Array.isArray(t)?Zu(t,n):t&&ku(t)?Zu(t.\u0275providers,n):n(t)}function Ub(){return void 0!==wb()||null!=function fS(){return Br}()}function Ku(e){if(!Ub())throw new w(-203,!1)}const Ne=0,M=1,P=2,We=3,Cn=4,pt=5,St=6,qr=7,xe=8,Ze=9,Rn=10,G=11,gs=12,$b=13,Wr=14,Oe=15,Hi=16,Zr=17,Jn=18,Kr=19,Gb=20,yi=21,Dc=22,an=23,R=25,Qu=1,bs=6,Pn=7,Yr=9,Ue=10;var Mc=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(Mc||{});function nt(e){return Array.isArray(e)&&"object"==typeof e[Qu]}function wt(e){return Array.isArray(e)&&!0===e[Qu]}function Xu(e){return!!(4&e.flags)}function Ui(e){return e.componentOffset>-1}function Ic(e){return!(1&~e.flags)}function En(e){return!!e.template}function _s(e){return!!(512&e[P])}class rk{constructor(n,t,i){this.previousValue=n,this.currentValue=t,this.firstChange=i}isFirstChange(){return this.firstChange}}function Yb(e,n,t,i){null!==n?n.applyValueToInputSignal(n,i):e[t]=i}function Bt(){return Qb}function Qb(e){return e.type.prototype.ngOnChanges&&(e.setInput=sk),ok}function ok(){const e=Jb(this),n=e?.current;if(n){const t=e.previous;if(t===On)e.previous=n;else for(let i in n)t[i]=n[i];e.current=null,this.ngOnChanges(n)}}function sk(e,n,t,i,r){const o=this.declaredInputs[i],s=Jb(e)||function ak(e,n){return e[Xb]=n}(e,{previous:On,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[o];a[o]=new rk(l&&l.currentValue,t,c===On),Yb(e,n,r,t)}Bt.ngInherit=!0;const Xb="__ngSimpleChanges__";function Jb(e){return e[Xb]||null}const Ln=function(e,n,t){};function ce(e){for(;Array.isArray(e);)e=e[Ne];return e}function vs(e,n){return ce(n[e])}function kt(e,n){return ce(n[e.index])}function ys(e,n){return e.data[n]}function zi(e,n){return e[n]}function Kt(e,n){const t=n[e];return nt(t)?t:t[Ne]}function ih(e){return!(128&~e[P])}function cn(e,n){return null==n?null:e[n]}function n_(e){e[Zr]=0}function i_(e){1024&e[P]||(e[P]|=1024,ih(e)&&Sc(e))}function Tc(e){return!!(9216&e[P]||e[an]?.dirty)}function rh(e){e[Rn].changeDetectionScheduler?.notify(8),64&e[P]&&(e[P]|=1024),Tc(e)&&Sc(e)}function Sc(e){e[Rn].changeDetectionScheduler?.notify(0);let n=ei(e);for(;null!==n&&!(8192&n[P])&&(n[P]|=8192,ih(n));)n=ei(n)}function kc(e,n){if(!(256&~e[P]))throw new w(911,!1);null===e[yi]&&(e[yi]=[]),e[yi].push(n)}function ei(e){const n=e[We];return wt(n)?n[We]:n}const q={lFrame:g_(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let o_=!1;function s_(){return q.bindingsEnabled}function $i(){return null!==q.skipHydrationRootTNode}function C(){return q.lFrame.lView}function te(){return q.lFrame.tView}function B(e){return q.lFrame.contextLView=e,e[xe]}function j(e){return q.lFrame.contextLView=null,e}function _e(){let e=a_();for(;null!==e&&64===e.type;)e=e.parent;return e}function a_(){return q.lFrame.currentTNode}function Dn(e,n){const t=q.lFrame;t.currentTNode=e,t.isParent=n}function ah(){return q.lFrame.isParent}function ch(){q.lFrame.isParent=!1}function d_(){return o_}function u_(e){o_=e}function At(){const e=q.lFrame;let n=e.bindingRootIndex;return-1===n&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function xn(){return q.lFrame.bindingIndex++}function ni(e){const n=q.lFrame,t=n.bindingIndex;return n.bindingIndex=n.bindingIndex+e,t}function wk(e,n){const t=q.lFrame;t.bindingIndex=t.bindingRootIndex=e,lh(n)}function lh(e){q.lFrame.currentDirectiveIndex=e}function uh(){return q.lFrame.currentQueryIndex}function Nc(e){q.lFrame.currentQueryIndex=e}function Ek(e){const n=e[M];return 2===n.type?n.declTNode:1===n.type?e[pt]:null}function m_(e,n,t){if(t&oe.SkipSelf){let r=n,o=e;for(;!(r=r.parent,null!==r||t&oe.Host||(r=Ek(o),null===r||(o=o[Wr],10&r.type))););if(null===r)return!1;n=r,e=o}const i=q.lFrame=p_();return i.currentTNode=n,i.lView=e,!0}function hh(e){const n=p_(),t=e[M];q.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function p_(){const e=q.lFrame,n=null===e?null:e.child;return null===n?g_(e):n}function g_(e){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=n),n}function b_(){const e=q.lFrame;return q.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const __=b_;function fh(){const e=b_();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function gt(){return q.lFrame.selectedIndex}function Gi(e){q.lFrame.selectedIndex=e}function Me(){const e=q.lFrame;return ys(e.tView,e.selectedIndex)}function mh(){q.lFrame.currentNamespace="svg"}function y_(){return q.lFrame.currentNamespace}let w_=!0;function Cs(){return w_}function Vn(e){w_=e}function Oc(e,n){for(let t=n.directiveStart,i=n.directiveEnd;t=i)break}else n[c]<0&&(e[Zr]+=65536),(a>14>16&&(3&e[P])===n&&(e[P]+=16384,E_(a,o)):E_(a,o)}const Qr=-1;class Es{constructor(n,t,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=t,this.injectImpl=i}}const bh={};class qi{constructor(n,t){this.injector=n,this.parentInjector=t}get(n,t,i){i=fc(i);const r=this.injector.get(n,bh,i);return r!==bh||t===bh?r:this.parentInjector.get(n,t,i)}}function _h(e){return e!==Qr}function Ds(e){return 32767&e}function xs(e,n){let t=function Ok(e){return e>>16}(e),i=n;for(;t>0;)i=i[Wr],t--;return i}let vh=!0;function Pc(e){const n=vh;return vh=e,n}const x_=255,M_=5;let Rk=0;const Bn={};function Lc(e,n){const t=I_(e,n);if(-1!==t)return t;const i=n[M];i.firstCreatePass&&(e.injectorIndex=n.length,yh(i.data,e),yh(n,null),yh(i.blueprint,null));const r=Vc(e,n),o=e.injectorIndex;if(_h(r)){const s=Ds(r),a=xs(r,n),c=a[M].data;for(let l=0;l<8;l++)n[o+l]=a[s+l]|c[s+l]}return n[o+8]=r,o}function yh(e,n){e.push(0,0,0,0,0,0,0,0,n)}function I_(e,n){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===n[e.injectorIndex+8]?-1:e.injectorIndex}function Vc(e,n){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let t=0,i=null,r=n;for(;null!==r;){if(i=F_(r),null===i)return Qr;if(t++,r=r[Wr],-1!==i.injectorIndex)return i.injectorIndex|t<<16}return Qr}function wh(e,n,t){!function Pk(e,n,t){let i;"string"==typeof t?i=t.charCodeAt(0)||0:t.hasOwnProperty(ds)&&(i=t[ds]),null==i&&(i=t[ds]=Rk++);const r=i&x_;n.data[e+(r>>M_)]|=1<=0?n&x_:jk:n}(t);if("function"==typeof o){if(!m_(n,e,i))return i&oe.Host?T_(r,0,i):S_(n,t,i,r);try{let s;if(s=o(i),null!=s||i&oe.Optional)return s;Ou()}finally{__()}}else if("number"==typeof o){let s=null,a=I_(e,n),c=Qr,l=i&oe.Host?n[Oe][pt]:null;for((-1===a||i&oe.SkipSelf)&&(c=-1===a?Vc(e,n):n[a+8],c!==Qr&&O_(i,!1)?(s=n[M],a=Ds(c),n=xs(c,n)):a=-1);-1!==a;){const d=n[M];if(N_(o,a,d.data)){const u=Vk(a,n,t,s,i,l);if(u!==Bn)return u}c=n[a+8],c!==Qr&&O_(i,n[M].data[a+8]===l)&&N_(o,a,n)?(s=d,a=Ds(c),n=xs(c,n)):a=-1}}return r}function Vk(e,n,t,i,r,o){const s=n[M],a=s.data[e+8],d=Bc(a,s,t,null==i?Ui(a)&&vh:i!=s&&!!(3&a.type),r&oe.Host&&o===a);return null!==d?Wi(n,s,d,a):Bn}function Bc(e,n,t,i,r){const o=e.providerIndexes,s=n.data,a=1048575&o,c=e.directiveStart,d=o>>20,h=r?a+d:e.directiveEnd;for(let f=i?a:a+d;f=c&&m.type===t)return f}if(r){const f=s[c];if(f&&En(f)&&f.type===t)return c}return null}function Wi(e,n,t,i){let r=e[t];const o=n.data;if(function Sk(e){return e instanceof Es}(r)){const s=r;s.resolving&&function cS(e,n){throw n&&n.join(" > "),new w(-200,e)}(function ue(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():K(e)}(o[t]));const a=Pc(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?Lt(s.injectImpl):null;m_(e,i,oe.Default);try{r=e[t]=s.factory(void 0,o,e,i),n.firstCreatePass&&t>=i.directiveStart&&function Ik(e,n,t){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=Qb(n);(t.preOrderHooks??=[]).push(e,s),(t.preOrderCheckHooks??=[]).push(e,s)}r&&(t.preOrderHooks??=[]).push(0-e,r),o&&((t.preOrderHooks??=[]).push(e,o),(t.preOrderCheckHooks??=[]).push(e,o))}(t,o[t],n)}finally{null!==l&&Lt(l),Pc(a),s.resolving=!1,__()}}return r}function N_(e,n,t){return!!(t[n+(e>>M_)]&1<{const n=Ch(z(e));return n&&n()}:Vi(e)}function F_(e){const n=e[M],t=n.type;return 2===t?n.declTNode:1===t?e[pt]:null}function Zi(e){return function Lk(e,n){if("class"===n)return e.classes;if("style"===n)return e.styles;const t=e.attrs;if(t){const i=t.length;let r=0;for(;rN(Tb)})}static{this.__NG_ELEMENT_ID__=-1}}new D("").__NG_ELEMENT_ID__=e=>{const n=_e();if(null===n)throw new w(204,!1);if(2&n.type)return n.value;if(e&oe.Optional)return null;throw new w(204,!1)};function Dh(e){return e.ngOriginalError}const U_=!0;let eo=(()=>{class e{static{this.__NG_ELEMENT_ID__=Qk}static{this.__NG_ENV_ID__=t=>t}}return e})();class Yk extends eo{constructor(n){super(),this._lView=n}onDestroy(n){return kc(this._lView,n),()=>function oh(e,n){if(null===e[yi])return;const t=e[yi].indexOf(n);-1!==t&&e[yi].splice(t,1)}(this._lView,n)}}function Qk(){return new Yk(C())}let to=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new lb(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const t=this.taskId++;return this.pendingTasks.add(t),t}remove(t){this.pendingTasks.delete(t),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275prov=L({token:e,providedIn:"root",factory:()=>new e})}}return e})();const de=class Xk extends Ve{constructor(n=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=n,Ub()&&(this.destroyRef=T(eo,{optional:!0})??void 0,this.pendingTasks=T(to,{optional:!0})??void 0)}emit(n){const t=ee(null);try{super.next(n)}finally{ee(t)}}subscribe(n,t,i){let r=n,o=t||(()=>null),s=i;if(n&&"object"==typeof n){const c=n;r=c.next?.bind(c),o=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(o=this.wrapInTimeout(o),r&&(r=this.wrapInTimeout(r)),s&&(s=this.wrapInTimeout(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof me&&n.add(a),a}wrapInTimeout(n){return t=>{const i=this.pendingTasks?.add();setTimeout(()=>{n(t),void 0!==i&&this.pendingTasks?.remove(i)})}}};function Hc(...e){}function z_(e){let n,t;function i(){e=Hc;try{void 0!==t&&"function"==typeof cancelAnimationFrame&&cancelAnimationFrame(t),void 0!==n&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{e(),i()}),"function"==typeof requestAnimationFrame&&(t=requestAnimationFrame(()=>{e(),i()})),()=>i()}function $_(e){return queueMicrotask(()=>e()),()=>{e=Hc}}const xh="isAngularZone",Uc=xh+"_ID";let Jk=0;class Y{constructor(n){this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new de(!1),this.onMicrotaskEmpty=new de(!1),this.onStable=new de(!1),this.onError=new de(!1);const{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:r=!1,scheduleInRootZone:o=U_}=n;if(typeof Zone>"u")throw new w(908,!1);Zone.assertZonePatched();const s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!r&&i,s.shouldCoalesceRunChangeDetection=r,s.callbackScheduled=!1,s.scheduleInRootZone=o,function nA(e){const n=()=>{!function tA(e){function n(){z_(()=>{e.callbackScheduled=!1,Ih(e),e.isCheckStableRunning=!0,Mh(e),e.isCheckStableRunning=!1})}e.isCheckStableRunning||e.callbackScheduled||(e.callbackScheduled=!0,e.scheduleInRootZone?Zone.root.run(()=>{n()}):e._outer.run(()=>{n()}),Ih(e))}(e)},t=Jk++;e._inner=e._inner.fork({name:"angular",properties:{[xh]:!0,[Uc]:t,[Uc+t]:!0},onInvokeTask:(i,r,o,s,a,c)=>{if(function iA(e){return W_(e,"__ignore_ng_zone__")}(c))return i.invokeTask(o,s,a,c);try{return G_(e),i.invokeTask(o,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===s.type||e.shouldCoalesceRunChangeDetection)&&n(),q_(e)}},onInvoke:(i,r,o,s,a,c,l)=>{try{return G_(e),i.invoke(o,s,a,c,l)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!function rA(e){return W_(e,"__scheduler_tick__")}(c)&&n(),q_(e)}},onHasTask:(i,r,o,s)=>{i.hasTask(o,s),r===o&&("microTask"==s.change?(e._hasPendingMicrotasks=s.microTask,Ih(e),Mh(e)):"macroTask"==s.change&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(i,r,o,s)=>(i.handleError(o,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}(s)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get(xh)}static assertInAngularZone(){if(!Y.isInAngularZone())throw new w(909,!1)}static assertNotInAngularZone(){if(Y.isInAngularZone())throw new w(909,!1)}run(n,t,i){return this._inner.run(n,t,i)}runTask(n,t,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,eA,Hc,Hc);try{return o.runTask(s,t,i)}finally{o.cancelTask(s)}}runGuarded(n,t,i){return this._inner.runGuarded(n,t,i)}runOutsideAngular(n){return this._outer.run(n)}}const eA={};function Mh(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Ih(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&!0===e.callbackScheduled)}function G_(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function q_(e){e._nesting--,Mh(e)}class Th{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new de,this.onMicrotaskEmpty=new de,this.onStable=new de,this.onError=new de}run(n,t,i){return n.apply(t,i)}runGuarded(n,t,i){return n.apply(t,i)}runOutsideAngular(n){return n()}runTask(n,t,i,r){return n.apply(t,i)}}function W_(e,n){return!(!Array.isArray(e)||1!==e.length)&&!0===e[0]?.data?.[n]}class Yt{constructor(){this._console=console}handleError(n){const t=this._findOriginalError(n);this._console.error("ERROR",n),t&&this._console.error("ORIGINAL ERROR",t)}_findOriginalError(n){let t=n&&Dh(n);for(;t&&Dh(t);)t=Dh(t);return t||null}}const sA=new D("",{providedIn:"root",factory:()=>{const e=T(Y),n=T(Yt);return t=>e.runOutsideAngular(()=>n.handleError(t))}});function aA(){return no(_e(),C())}function no(e,n){return new Ie(kt(e,n))}let Ie=(()=>{class e{constructor(t){this.nativeElement=t}static{this.__NG_ELEMENT_ID__=aA}}return e})();function K_(e){return e instanceof Ie?e.nativeElement:e}function cA(){return this._results[Symbol.iterator]()}class io{get changes(){return this._changes??=new de}constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const t=io.prototype;t[Symbol.iterator]||(t[Symbol.iterator]=cA)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,t){return this._results.reduce(n,t)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,t){this.dirty=!1;const i=function Vt(e){return e.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function wS(e,n,t){if(e.length!==n.length)return!1;for(let i=0;iSA}),SA="ng",pv=new D(""),ii=new D("",{providedIn:"platform",factory:()=>"unknown"}),so=new D(""),Fh=new D("",{providedIn:"root",factory:()=>wi().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});function NA(){const e=new ao;return"browser"===T(ii)&&(e.store=function OA(e,n){const t=e.getElementById(n+"-state");if(t?.textContent)try{return JSON.parse(t.textContent)}catch(i){console.warn("Exception while restoring TransferState for app "+n,i)}return{}}(wi(),T(oo))),e}let ao=(()=>{class e{constructor(){this.store={},this.onSerializeCallbacks={}}static{this.\u0275prov=L({token:e,providedIn:"root",factory:NA})}get(t,i){return void 0!==this.store[t]?this.store[t]:i}set(t,i){this.store[t]=i}remove(t){delete this.store[t]}hasKey(t){return this.store.hasOwnProperty(t)}get isEmpty(){return 0===Object.keys(this.store).length}onSerialize(t,i){this.onSerializeCallbacks[t]=i}toJson(){for(const t in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(t))try{this.store[t]=this.onSerializeCallbacks[t]()}catch(i){console.warn("Exception in onSerialize callback: ",i)}return JSON.stringify(this.store).replace(/null;function RA(e,n,t=!1){let i=e.getAttribute(As);if(null==i)return null;const[r,o]=i.split("|");if(i=t?o:r,!i)return null;const a=t?r:o?`|${o}`:"";let c={};if(""!==i){const d=n.get(ao,null,{optional:!0});null!==d&&(c=d.get(jh,[])[Number(i)])}const l={data:c,firstChild:e.firstChild??null};return t&&(l.firstChild=e,Zc(l,0,e.nextSibling)),a?e.setAttribute(As,a):e.removeAttribute(As),l}function Hh(e,n,t=!1){return gv(e,n,t)}function bv(e){let n=e._lView;return 2===n[M].type?null:(_s(n)&&(n=n[R]),n)}function Zc(e,n,t){e.segmentHeads??={},e.segmentHeads[n]=t}function zh(e,n){return e.segmentHeads?.[n]??null}function yv(e,n){return e.data[Ss]?.[n]??null}function $h(e,n){const t=yv(e,n)??[];let i=0;for(let r of t)i+=r[lo]*(r[qc]??1);return i}function Ki(e,n){if(typeof e.disconnectedNodes>"u"){const t=e.data[ks];e.disconnectedNodes=t?new Set(t):null}return!!function wv(e){if(typeof e.disconnectedNodes>"u"){const n=e.data[ks];e.disconnectedNodes=n?new Set(n):null}return e.disconnectedNodes}(e)?.has(n)}const Kc=new D(""),Dv=new D("",{providedIn:"root",factory:()=>!1});let Yc,Qc;function uo(e){return function qh(){if(void 0===Yc&&(Yc=null,Ae.trustedTypes))try{Yc=Ae.trustedTypes.createPolicy("angular",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Yc}()?.createHTML(e)||e}function Wh(){if(void 0===Qc&&(Qc=null,Ae.trustedTypes))try{Qc=Ae.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Qc}function Iv(e){return Wh()?.createHTML(e)||e}function Sv(e){return Wh()?.createScriptURL(e)||e}class Yi{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${hb})`}}class $A extends Yi{getTypeName(){return"HTML"}}class GA extends Yi{getTypeName(){return"Style"}}class qA extends Yi{getTypeName(){return"Script"}}class WA extends Yi{getTypeName(){return"URL"}}class ZA extends Yi{getTypeName(){return"ResourceURL"}}function Qt(e){return e instanceof Yi?e.changingThisBreaksApplicationSecurity:e}function jn(e,n){const t=function KA(e){return e instanceof Yi&&e.getTypeName()||null}(e);if(null!=t&&t!==n){if("ResourceURL"===t&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${t} (see ${hb})`)}return t===n}class tN{constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const t=(new window.DOMParser).parseFromString(uo(n),"text/html").body;return null===t?this.inertDocumentHelper.getInertBodyElement(n):(t.firstChild?.remove(),t)}catch{return null}}}class nN{constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const t=this.inertDocument.createElement("template");return t.innerHTML=uo(n),t}}const rN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Xc(e){return(e=String(e)).match(rN)?e:"unsafe:"+e}function ri(e){const n={};for(const t of e.split(","))n[t]=!0;return n}function Fs(...e){const n={};for(const t of e)for(const i in t)t.hasOwnProperty(i)&&(n[i]=!0);return n}const Av=ri("area,br,col,hr,img,wbr"),Nv=ri("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Ov=ri("rp,rt"),Zh=Fs(Av,Fs(Nv,ri("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Fs(Ov,ri("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Fs(Ov,Nv)),Kh=ri("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Fv=Fs(Kh,ri("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),ri("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),oN=ri("script,style,template");class sN{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(n){let t=n.firstChild,i=!0,r=[];for(;t;)if(t.nodeType===Node.ELEMENT_NODE?i=this.startElement(t):t.nodeType===Node.TEXT_NODE?this.chars(t.nodeValue):this.sanitizedSomething=!0,i&&t.firstChild)r.push(t),t=lN(t);else for(;t;){t.nodeType===Node.ELEMENT_NODE&&this.endElement(t);let o=cN(t);if(o){t=o;break}t=r.pop()}return this.buf.join("")}startElement(n){const t=Rv(n).toLowerCase();if(!Zh.hasOwnProperty(t))return this.sanitizedSomething=!0,!oN.hasOwnProperty(t);this.buf.push("<"),this.buf.push(t);const i=n.attributes;for(let r=0;r"),!0}endElement(n){const t=Rv(n).toLowerCase();Zh.hasOwnProperty(t)&&!Av.hasOwnProperty(t)&&(this.buf.push(""))}chars(n){this.buf.push(Lv(n))}}function cN(e){const n=e.nextSibling;if(n&&e!==n.previousSibling)throw Pv(n);return n}function lN(e){const n=e.firstChild;if(n&&function aN(e,n){return(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(e,n))throw Pv(n);return n}function Rv(e){const n=e.nodeName;return"string"==typeof n?n:"FORM"}function Pv(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}const dN=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,uN=/([^\#-~ |!])/g;function Lv(e){return e.replace(/&/g,"&").replace(dN,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(uN,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let Jc;function Vv(e,n){let t=null;try{Jc=Jc||function kv(e){const n=new nN(e);return function iN(){try{return!!(new window.DOMParser).parseFromString(uo(""),"text/html")}catch{return!1}}()?new tN(n):n}(e);let i=n?String(n):"";t=Jc.getInertBodyElement(i);let r=5,o=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=o,o=t.innerHTML,t=Jc.getInertBodyElement(i)}while(i!==o);return uo((new sN).sanitizeChildren(Yh(t)||t))}finally{if(t){const i=Yh(t)||t;for(;i.firstChild;)i.firstChild.remove()}}}function Yh(e){return"content"in e&&function hN(e){return e.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===e.nodeName}(e)?e.content:null}var _t=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(_t||{});function Qh(e){const n=Rs();return n?Iv(n.sanitize(_t.HTML,e)||""):jn(e,"HTML")?Iv(Qt(e)):Vv(wi(),K(e))}function ln(e){const n=Rs();return n?n.sanitize(_t.URL,e)||"":jn(e,"URL")?Qt(e):Xc(K(e))}function Xh(e){const n=Rs();if(n)return Sv(n.sanitize(_t.RESOURCE_URL,e)||"");if(jn(e,"ResourceURL"))return Sv(Qt(e));throw new w(904,!1)}function Rs(){const e=C();return e&&e[Rn].sanitizer}const vN=/^>|^->||--!>|)/g,wN="\u200b$1\u200b";function Jt(e){return"browser"===(e??T(at)).get(ii)}var Ci=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(Ci||{});let tf;function nf(e,n){return tf(e,n)}function fo(e,n,t,i,r){if(null!=i){let o,s=!1;wt(i)?o=i:nt(i)&&(s=!0,i=i[Ne]);const a=ce(i);0===e&&null!==t?null==r?Qv(n,t,a):Qi(n,t,a,r||null,!0):1===e&&null!==t?Qi(n,t,a,r||null,!0):2===e?Ls(n,a,s):3===e&&n.destroyNode(a),null!=o&&function HN(e,n,t,i,r){const o=t[Pn];o!==ce(t)&&fo(n,e,i,o,r);for(let a=Ue;an.replace(yN,wN))}(n))}function nl(e,n,t){return e.createElement(n,t)}function Zv(e,n){n[Rn].changeDetectionScheduler?.notify(9),ol(e,n,n[G],2,null,null)}function Kv(e,n){const t=e[Yr],i=n[We];(nt(i)||n[Oe]!==i[We][Oe])&&(e[P]|=Mc.HasTransplantedViews),null===t?e[Yr]=[n]:t.push(n)}function af(e,n){const t=e[Yr],i=t.indexOf(n);t.splice(i,1)}function Ps(e,n){if(e.length<=Ue)return;const t=Ue+n,i=e[t];if(i){const r=i[Hi];null!==r&&r!==e&&af(r,i),n>0&&(e[t-1][Cn]=i[Cn]);const o=pc(e,Ue+n);!function ON(e,n){Zv(e,n),n[Ne]=null,n[pt]=null}(i[M],i);const s=o[Jn];null!==s&&s.detachView(o[M]),i[We]=null,i[Cn]=null,i[P]&=-129}return i}function il(e,n){if(!(256&n[P])){const t=n[G];t.destroyNode&&ol(e,n,t,3,null,null),function RN(e){let n=e[gs];if(!n)return cf(e[M],e);for(;n;){let t=null;if(nt(n))t=n[gs];else{const i=n[Ue];i&&(t=i)}if(!t){for(;n&&!n[Cn]&&n!==e;)nt(n)&&cf(n[M],n),n=n[We];null===n&&(n=e),nt(n)&&cf(n[M],n),t=n&&n[Cn]}n=t}}(n)}}function cf(e,n){if(256&n[P])return;const t=ee(null);try{n[P]&=-129,n[P]|=256,n[an]&&pu(n[an]),function VN(e,n){let t;if(null!=e&&null!=(t=e.destroyHooks))for(let i=0;i=0?i[s]():i[-s].unsubscribe(),o+=2}else t[o].call(i[t[o+1]]);null!==i&&(n[qr]=null);const r=n[yi];if(null!==r){n[yi]=null;for(let o=0;o-1){const{encapsulation:o}=e.data[i.directiveStart+r];if(o===vn.None||o===vn.Emulated)return null}return kt(i,t)}}(e,n.parent,t)}function Qi(e,n,t,i,r){e.insertBefore(n,t,i,r)}function Qv(e,n,t){e.appendChild(n,t)}function Xv(e,n,t,i,r){null!==i?Qi(e,n,t,i,r):Qv(e,n,t)}function df(e,n){return e.parentNode(n)}function Jv(e,n,t){return ty(e,n,t)}let uf,ty=function ey(e,n,t){return 40&e.type?kt(e,t):null};function rl(e,n,t,i){const r=lf(e,i,n),o=n[G],a=Jv(i.parent||n[pt],i,n);if(null!=r)if(Array.isArray(t))for(let c=0;cR&&cy(e,n,R,!1),Ln(s?2:0,r),t(i,r)}finally{Gi(o),Ln(s?3:1,r)}}function pf(e,n,t){if(Xu(n)){const i=ee(null);try{const o=n.directiveEnd;for(let s=n.directiveStart;snull;function KN(e){Y_(e)?ry(e):function VA(e){const n=wi(),t=n.createNodeIterator(e,NodeFilter.SHOW_COMMENT,{acceptNode(o){const s=function LA(e){return e.textContent?.replace(/\s/gm,"")}(o);return"ngetn"===s||"ngtns"===s?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}});let i;const r=[];for(;i=t.nextNode();)r.push(i);for(const o of r)"ngetn"===o.textContent?o.replaceWith(n.createTextNode("")):o.remove()}(e)}function fy(e,n,t,i,r){for(let o in n){if(!n.hasOwnProperty(o))continue;const s=n[o];if(void 0===s)continue;i??={};let a,c=vi.None;Array.isArray(s)?(a=s[0],c=s[1]):a=s;let l=o;if(null!==r){if(!r.hasOwnProperty(o))continue;l=r[o]}0===e?my(i,t,l,a,c):my(i,t,l,a)}return i}function my(e,n,t,i,r){let o;e.hasOwnProperty(t)?(o=e[t]).push(n,i):o=e[t]=[n,i],void 0!==r&&o.push(r)}function Ht(e,n,t,i,r,o,s,a){const c=kt(n,t);let d,l=n.inputs;!a&&null!=l&&(d=l[i])?(Ef(e,t,d,i,r),Ui(n)&&function t1(e,n){const t=Kt(n,e);16&t[P]||(t[P]|=64)}(t,n.index)):3&n.type&&(i=function e1(e){return"class"===e?"className":"for"===e?"htmlFor":"formaction"===e?"formAction":"innerHtml"===e?"innerHTML":"readonly"===e?"readOnly":"tabindex"===e?"tabIndex":e}(i),r=null!=s?s(r,n.value||"",i):r,o.setProperty(c,i,r))}function vf(e,n,t,i){if(s_()){const r=null===i?null:{"":-1},o=function c1(e,n){const t=e.directiveRegistry;let i=null,r=null;if(t)for(let o=0;o0;){const t=e[--n];if("number"==typeof t&&t<0)return t}return 0})(s)!=a&&s.push(a),s.push(t,i,o)}}(e,n,i,Vs(e,t,r.hostVars,Q),r)}function Hn(e,n,t,i,r,o){const s=kt(e,n);!function wf(e,n,t,i,r,o,s){if(null==o)e.removeAttribute(n,r,t);else{const a=null==s?K(o):s(o,i||"",r);e.setAttribute(n,r,a,t)}}(n[G],s,o,e.value,t,i,r)}function m1(e,n,t,i,r,o){const s=o[n];if(null!==s)for(let a=0;a0&&(t[r-1][Cn]=n),i{Sc(e.lView)},consumerOnSignalRead(){this.lView[an]=this}},D1={...os,consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{let n=ei(e.lView);for(;n&&!xy(n[M]);)n=ei(n);n&&i_(n)},consumerOnSignalRead(){this.lView[an]=this}};function xy(e){return 2!==e.type}const x1=100;function ll(e,n=!0,t=0){const i=e[Rn],r=i.rendererFactory;r.begin?.();try{!function M1(e,n){const t=d_();try{u_(!0),Mf(e,n);let i=0;for(;Tc(e);){if(i===x1)throw new w(103,!1);i++,Mf(e,1)}}finally{u_(t)}}(e,t)}catch(s){throw n&&cl(e,s),s}finally{r.end?.(),i.inlineEffectRunner?.flush()}}function I1(e,n,t,i){const r=n[P];if(!(256&~r))return;n[Rn].inlineEffectRunner?.flush(),hh(n);let a=!0,c=null,l=null;xy(e)?(l=function v1(e){return e[an]??function y1(e){const n=Dy.pop()??Object.create(C1);return n.lView=e,n}(e)}(n),c=Ya(l)):null===function uu(){return je}()?(a=!1,l=function E1(e){const n=e[an]??Object.create(D1);return n.lView=e,n}(n),c=Ya(l)):n[an]&&(pu(n[an]),n[an]=null);try{n_(n),function h_(e){return q.lFrame.bindingIndex=e}(e.bindingStartIndex),null!==t&&dy(e,n,t,2,i);const d=!(3&~r);if(d){const f=e.preOrderCheckHooks;null!==f&&Fc(n,f,null)}else{const f=e.preOrderHooks;null!==f&&Rc(n,f,0,null),ph(n,0)}if(function T1(e){for(let n=ov(e);null!==n;n=sv(n)){if(!(n[P]&Mc.HasTransplantedViews))continue;const t=n[Yr];for(let i=0;i-1&&(Ps(n,i),pc(t,i))}this._attachedToViewContainer=!1}il(this._lView[M],this._lView)}onDestroy(n){kc(this._lView,n)}markForCheck(){js(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[P]&=-129}reattach(){rh(this._lView),this._lView[P]|=128}detectChanges(){this._lView[P]|=1024,ll(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new w(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;const n=_s(this._lView),t=this._lView[Hi];null!==t&&!n&&af(t,this._lView),Zv(this._lView[M],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new w(902,!1);this._appRef=n;const t=_s(this._lView),i=this._lView[Hi];null!==i&&!t&&Kv(i,this._lView),rh(this._lView)}}let si=(()=>{class e{static{this.__NG_ELEMENT_ID__=N1}}return e})();const k1=si,A1=class extends k1{constructor(n,t,i){super(),this._declarationLView=n,this._declarationTContainer=t,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,t){return this.createEmbeddedViewImpl(n,t)}createEmbeddedViewImpl(n,t,i){const r=mo(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:t,dehydratedView:i});return new Hs(r)}};function N1(){return dl(_e(),C())}function dl(e,n){return 4&e.type?new A1(n,e,no(e,n)):null}const Y1=new RegExp(`^(\\d+)*(${Ph}|${Rh})*(.*)`);function Af(e){return e.index-R}function Ws(e,n,t,i){const r=Af(i);let o=function Hy(e,n){const t=e.i18nNodes;if(t)return t.get(n)}(e,r);if(void 0===o){const s=e.data[Wc];if(s?.[r])o=function Uy(e,n){const[t,...i]=function X1(e){const n=e.match(Y1),[t,i,r,o]=n,s=i?parseInt(i,10):r,a=[];for(const[c,l,d]of o.matchAll(/(f|n)(\d*)/g)){const u=parseInt(d,10)||1;a.push(l,u)}return[s,...a]}(e);let r;r=t===Rh?n[Oe][Ne]:t===Ph?function zv(e){return e.ownerDocument.body}(n[Oe][Ne]):ce(n[Number(t)+R]);return function tO(e,n){let t=e;for(let i=0;inull;function CO(e,n){const t=e[bs];return n&&null!==t&&0!==t.length?t[0].data[Vh]===n?t.shift():(Zy(e),null):null}function nr(e,n){return Yy(e,n)}class bo{}const _o=new D("",{providedIn:"root",factory:()=>!1}),Qy=new D(""),Lf=new D("");class DO{}class Xy{}class MO{resolveComponentFactory(n){throw function xO(e){const n=Error(`No component factory found for ${Je(e)}.`);return n.ngComponent=e,n}(n)}}class gl{static{this.NULL=new MO}}class bl{}let ir=(()=>{class e{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>function IO(){const e=C(),t=Kt(_e().index,e);return(nt(t)?t:e)[G]}()}}return e})(),TO=(()=>{class e{static{this.\u0275prov=L({token:e,providedIn:"root",factory:()=>null})}}return e})();function vl(e,n,t){let i=t?e.styles:null,r=t?e.classes:null,o=0;if(null!==n)for(let s=0;s0&&sy(e,t,o.join(" "))}}(h,ie,m,i),void 0!==t&&function VO(e,n,t){const i=e.projection=[];for(let r=0;r{class e{static{this.__NG_ELEMENT_ID__=jO}}return e})();function jO(){return sw(_e(),C())}const HO=Un,rw=class extends HO{constructor(n,t,i){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=i}get element(){return no(this._hostTNode,this._hostLView)}get injector(){return new it(this._hostTNode,this._hostLView)}get parentInjector(){const n=Vc(this._hostTNode,this._hostLView);if(_h(n)){const t=xs(n,this._hostLView),i=Ds(n);return new it(t[M].data[i+8],t)}return new it(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const t=ow(this._lContainer);return null!==t&&t[n]||null}get length(){return this._lContainer.length-Ue}createEmbeddedView(n,t,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=nr(this._lContainer,n.ssrId),a=n.createEmbeddedViewImpl(t||{},o,s);return this.insertImpl(a,r,er(this._hostTNode,s)),a}createComponent(n,t,i,r,o){const s=n&&!function ps(e){return"function"==typeof e}(n);let a;if(s)a=t;else{const m=t||{};a=m.index,i=m.injector,r=m.projectableNodes,o=m.environmentInjector||m.ngModuleRef}const c=s?n:new Qs(re(n)),l=i||this.parentInjector;if(!o&&null==c.ngModule){const p=(s?l:this.parentInjector).get(wn,null);p&&(o=p)}const d=re(c.componentType??{}),u=nr(this._lContainer,d?.id??null),f=c.create(l,r,u?.firstChild??null,o);return this.insertImpl(f.hostView,a,er(this._hostTNode,u)),f}insert(n,t){return this.insertImpl(n,t,!0)}insertImpl(n,t,i){const r=n._lView;if(function uk(e){return wt(e[We])}(r)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const c=r[We],l=new rw(c,c[pt],c[We]);l.detach(l.indexOf(n))}}const o=this._adjustIndex(t),s=this._lContainer;return po(s,r,o,i),n.attachToViewContainerRef(),xb(jf(s),o,n),n}move(n,t){return this.insert(n,t)}indexOf(n){const t=ow(this._lContainer);return null!==t?t.indexOf(n):-1}remove(n){const t=this._adjustIndex(n,-1),i=Ps(this._lContainer,t);i&&(pc(jf(this._lContainer),t),il(i[M],i))}detach(n){const t=this._adjustIndex(n,-1),i=Ps(this._lContainer,t);return i&&null!=pc(jf(this._lContainer),t)?new Hs(i):null}_adjustIndex(n,t=0){return n??this.length+t}};function ow(e){return e[8]}function jf(e){return e[8]||(e[8]=[])}function sw(e,n){let t;const i=n[e.index];return wt(i)?t=i:(t=by(i,n,null,e),n[e.index]=t,al(n,t)),aw(t,n,e,i),new rw(t,e,n)}let aw=lw,Hf=()=>!1;function lw(e,n,t,i){if(e[Pn])return;let r;r=8&t.type?ce(i):function UO(e,n){const t=e[G],i=t.createComment(""),r=kt(n,e);return Qi(t,df(t,r),i,function BN(e,n){return e.nextSibling(n)}(t,r),!1),i}(n,t),e[Pn]=r}function zO(e,n,t){if(e[Pn]&&e[bs])return!0;const i=t[St],r=n.index-R;if(!i||function Ts(e){if(Is(e))return!0;let n=e.parent;for(;n;){if(Is(e)||Sh(n))return!0;n=n.parent}return!1}(n)||Ki(i,r))return!1;const s=zh(i,r),a=i.data[Ss]?.[r],[c,l]=function wO(e,n){const t=[];for(const i of n)for(let r=0;r<(i[qc]??1);r++){const o={data:i,firstChild:null};i[lo]>0&&(o.firstChild=e,e=ml(i[lo],e)),t.push(o)}return[e,t]}(s,a);return e[Pn]=c,e[bs]=l,!0}function $O(e,n,t,i){Hf(e,t,n)||lw(e,n,t,i)}class Uf{constructor(n){this.queryList=n,this.matches=null}clone(){return new Uf(this.queryList)}setDirty(){this.queryList.setDirty()}}class zf{constructor(n=[]){this.queries=n}createEmbeddedView(n){const t=n.queries;if(null!==t){const i=null!==n.contentQueries?n.contentQueries[0]:t.length,r=[];for(let o=0;on.trim())}(n):n}}class $f{constructor(n=[]){this.queries=n}elementStart(n,t){for(let i=0;i0)i.push(s[a/2]);else{const l=o[a+1],d=n[-c];for(let u=Ue;u(hu(n),n.value);return t[sn]=n,t}(e),i=t[sn];return n?.equal&&(i.equal=n.equal),t.set=r=>tb(i,r),t.update=r=>function ST(e,n){Wg()||eb(),tb(e,n(e.value))}(i,r),t.asReadonly=_w.bind(t),t}function _w(){const e=this[sn];if(void 0===e.readonlyFn){const n=()=>this();n[sn]=e,e.readonlyFn=n}return e.readonlyFn}function vw(e){return function yl(e){return"function"==typeof e&&void 0!==e[sn]}(e)&&"function"==typeof e.set}function Kf(e,n){let t;const i=Xg(()=>{t._dirtyCounter();const r=function XO(e,n){const t=e._lView,i=e._queryIndex;if(void 0===t||void 0===i||4&t[P])return n?void 0:ae;const r=Wf(t,i),o=gw(t,i);return r.reset(o,K_),n?r.first:r._changesDetected||void 0===e._flatValue?e._flatValue=r.toArray():e._flatValue}(t,e);if(n&&void 0===r)throw new w(-951,!1);return r});return t=i[sn],t._dirtyCounter=vo(0),t._flatValue=void 0,i}function Dw(e,n){return function yw(){return Kf(!0,!1)}()}const eF=(Dw.required=function JO(e,n){return function ww(){return Kf(!0,!0)}()},Dw);function pe(e){let n=function Aw(e){return Object.getPrototypeOf(e.prototype).constructor}(e.type),t=!0;const i=[e];for(;n;){let r;if(En(e))r=n.\u0275cmp||n.\u0275dir;else{if(n.\u0275cmp)throw new w(903,!1);r=n.\u0275dir}if(r){if(t){i.push(r);const s=e;s.inputs=Cl(e.inputs),s.inputTransforms=Cl(e.inputTransforms),s.declaredInputs=Cl(e.declaredInputs),s.outputs=Cl(e.outputs);const a=r.hostBindings;a&&fF(e,a);const c=r.viewQuery,l=r.contentQueries;if(c&&uF(e,c),l&&hF(e,l),lF(e,r),XT(e.outputs,r.outputs),En(r)&&r.data.animation){const d=e.data;d.animation=(d.animation||[]).concat(r.data.animation)}}const o=r.features;if(o)for(let s=0;s=0;i--){const r=e[i];r.hostVars=n+=r.hostVars,r.hostAttrs=fs(r.hostAttrs,t=fs(t,r.hostAttrs))}}(i)}function lF(e,n){for(const t in n.inputs){if(!n.inputs.hasOwnProperty(t)||e.inputs.hasOwnProperty(t))continue;const i=n.inputs[t];if(void 0!==i&&(e.inputs[t]=i,e.declaredInputs[t]=n.declaredInputs[t],null!==n.inputTransforms)){const r=Array.isArray(i)?i[0]:i;if(!n.inputTransforms.hasOwnProperty(r))continue;e.inputTransforms??={},e.inputTransforms[r]=n.inputTransforms[r]}}}function Cl(e){return e===On?{}:e===ae?[]:e}function uF(e,n){const t=e.viewQuery;e.viewQuery=t?(i,r)=>{n(i,r),t(i,r)}:n}function hF(e,n){const t=e.contentQueries;e.contentQueries=t?(i,r,o)=>{n(i,r,o),t(i,r,o)}:n}function fF(e,n){const t=e.hostBindings;e.hostBindings=t?(i,r)=>{n(i,r),t(i,r)}:n}function Js(e){const n=e.inputConfig,t={};for(const i in n)if(n.hasOwnProperty(i)){const r=n[i];Array.isArray(r)&&r[3]&&(t[i]=r[3])}e.inputTransforms=t}class or{}class vF{}class Yf extends or{constructor(n,t,i,r=!0){super(),this.ngModuleType=n,this._parent=t,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new nw(this);const o=function yt(e,n){const t=e[vb]||null;if(!t&&!0===n)throw new Error(`Type ${Je(e)} does not have '\u0275mod' property.`);return t}(n);this._bootstrapComponents=function Xt(e){return e instanceof Function?e():e}(o.bootstrap),this._r3Injector=j_(n,t,[{provide:or,useValue:this},{provide:gl,useValue:this.componentFactoryResolver},...i],Je(n),new Set(["environment"])),r&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class Qf extends vF{constructor(n){super(),this.moduleType=n}create(n){return new Yf(this.moduleType,n,[])}}class Rw extends or{constructor(n){super(),this.componentFactoryResolver=new nw(this),this.instance=null;const t=new zr([...n.providers,{provide:or,useValue:this},{provide:gl,useValue:this.componentFactoryResolver}],n.parent||Cc(),n.debugName,new Set(["environment"]));this.injector=t,n.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function El(e){return!!function Xf(e){return null!==e&&("function"==typeof e||"object"==typeof e)}(e)&&(Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e)}function zn(e,n,t){return e[n]=t}function ze(e,n,t){return!Object.is(e[n],t)&&(e[n]=t,!0)}function sr(e,n,t,i){const r=ze(e,n,t);return ze(e,n+1,i)||r}function wo(e){return!(32&~e.flags)}function ta(e,n,t,i,r,o,s,a,c,l){const d=t+R,u=n.firstCreatePass?function MF(e,n,t,i,r,o,s,a,c){const l=n.consts,d=Ji(n,e,4,s||null,a||null);vf(n,t,d,cn(l,c)),Oc(n,d);const u=d.tView=_f(2,d,i,r,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,l,null);return null!==n.queries&&(n.queries.template(n,d),u.queries=n.queries.embeddedTView(d)),d}(d,n,e,i,r,o,s,a,c):n.data[d];Dn(u,!1);const h=Lw(n,e,u,t);Cs()&&rl(n,e,h,u),Ct(h,e);const f=by(h,e,h,u);return e[d]=f,al(e,f),function cw(e,n,t){return Hf(e,n,t)}(f,u,e),Ic(u)&&gf(n,e,u),null!=c&&bf(e,u,l),u}function J(e,n,t,i,r,o,s,a){const c=C(),l=te();return ta(c,l,e,n,t,i,r,cn(l.consts,o),s,a),J}let Lw=Vw;function Vw(e,n,t,i){return Vn(!0),n[G].createComment("")}function IF(e,n,t,i){const r=n[St],o=!r||$i()||wo(t)||Ki(r,i);if(Vn(o),o)return Vw(0,n);const s=r.data[Lh]?.[i]??null;null!==s&&null!==t.tView&&null===t.tView.ssrId&&(t.tView.ssrId=s);const a=Ws(r,e,n,t);return Zc(r,i,a),ml($h(r,i),a)}var Eo=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(Eo||{});let $w=(()=>{class e{constructor(){this.impl=null}execute(){this.impl?.execute()}static{this.\u0275prov=L({token:e,providedIn:"root",factory:()=>new e})}}return e})();class ra{constructor(){this.ngZone=T(Y),this.scheduler=T(bo),this.errorHandler=T(Yt,{optional:!0}),this.sequences=new Set,this.deferredRegistrations=new Set,this.executing=!1}static{this.PHASES=[Eo.EarlyRead,Eo.Write,Eo.MixedReadWrite,Eo.Read]}execute(){this.executing=!0;for(const n of ra.PHASES)for(const t of this.sequences)if(!t.erroredOrDestroyed&&t.hooks[n])try{t.pipelinedValue=this.ngZone.runOutsideAngular(()=>t.hooks[n](t.pipelinedValue))}catch(i){t.erroredOrDestroyed=!0,this.errorHandler?.handleError(i)}this.executing=!1;for(const n of this.sequences)n.afterRun(),n.once&&(this.sequences.delete(n),n.destroy());for(const n of this.deferredRegistrations)this.sequences.add(n);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear()}register(n){this.executing?this.deferredRegistrations.add(n):(this.sequences.add(n),this.scheduler.notify(6))}unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestroyed=!0,n.pipelinedValue=void 0,n.once=!0):(this.sequences.delete(n),this.deferredRegistrations.delete(n))}static{this.\u0275prov=L({token:ra,providedIn:"root",factory:()=>new ra})}}class kF{constructor(n,t,i,r){this.impl=n,this.hooks=t,this.once=i,this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.()}}function ar(e,n){!n?.injector&&Ku();const t=n?.injector??T(at);return Jt(t)?(Et("NgAfterNextRender"),qw(e,t,n,!0)):Ww}function qw(e,n,t,i){const r=n.get($w);r.impl??=n.get(ra);const o=t?.phase??Eo.MixedReadWrite,s=!0!==t?.manualCleanup?n.get(eo):null,a=new kF(r.impl,function AF(e,n){if(e instanceof Function){const t=[void 0,void 0,void 0,void 0];return t[n]=e,t}return[e.earlyRead,e.write,e.mixedReadWrite,e.read]}(e,o),i,s);return r.impl.register(a),a}const Ww={destroy(){}};function Fe(e,n,t,i){const r=C();return ze(r,xn(),n)&&(te(),Hn(Me(),r,e,n,t,i)),Fe}function Ao(e,n,t,i,r,o){const a=sr(e,function ti(){return q.lFrame.bindingIndex}(),t,r);return ni(2),a?n+K(t)+i+K(r)+o:Q}function kl(e,n){return e<<17|n<<2}function xi(e){return e>>17&32767}function lm(e){return 2|e}function lr(e){return(131068&e)>>2}function dm(e,n){return-131069&e|n<<2}function um(e){return 1|e}function vC(e,n,t,i){const r=e[t+1],o=null===n;let s=i?xi(r):lr(r),a=!1;for(;0!==s&&(!1===a||o);){const l=e[s+1];fR(e[s],n)&&(a=!0,e[s+1]=i?um(l):lm(l)),s=i?xi(l):lr(l)}a&&(e[t+1]=i?lm(r):um(r))}function fR(e,n){return null===e||null==n||(Array.isArray(e)?e[1]:e)===n||!(!Array.isArray(e)||"string"!=typeof n)&&Ur(e,n)>=0}const rt={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function yC(e){return e.substring(rt.key,rt.keyEnd)}function wC(e,n){const t=rt.textEnd;return t===n?-1:(n=rt.keyEnd=function bR(e,n,t){for(;n32;)n++;return n}(e,rt.key=n,t),Vo(e,n,t))}function Vo(e,n,t){for(;n=0;t=wC(n,t))Zt(e,yC(n),!0)}function Mn(e,n,t,i){const r=C(),o=te(),s=ni(2);o.firstUpdatePass&&IC(o,e,s,i),n!==Q&&ze(r,s,n)&&SC(o,o.data[gt()],r,r[G],e,r[s+1]=function TR(e,n){return null==e||""===e||("string"==typeof n?e+=n:"object"==typeof e&&(e=Je(Qt(e)))),e}(n,t),i,s)}function MC(e,n){return n>=e.expandoStartIndex}function IC(e,n,t,i){const r=e.data;if(null===r[t+1]){const o=r[gt()],s=MC(e,t);AC(o,i)&&null===n&&!s&&(n=!1),n=function wR(e,n,t,i){const r=function dh(e){const n=q.lFrame.currentDirectiveIndex;return-1===n?null:e[n]}(e);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(t=ca(t=fm(null,e,n,t,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||e[s]!==r)if(t=fm(r,e,n,t,i),null===o){let c=function CR(e,n,t){const i=t?n.classBindings:n.styleBindings;if(0!==lr(i))return e[xi(i)]}(e,n,i);void 0!==c&&Array.isArray(c)&&(c=fm(null,e,n,c[1],i),c=ca(c,n.attrs,i),function ER(e,n,t,i){e[xi(t?n.classBindings:n.styleBindings)]=i}(e,n,i,c))}else o=function DR(e,n,t){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(l=!0)):d=t,r)if(0!==c){const h=xi(e[a+1]);e[i+1]=kl(h,a),0!==h&&(e[h+1]=dm(e[h+1],i)),e[a+1]=function lR(e,n){return 131071&e|n<<17}(e[a+1],i)}else e[i+1]=kl(a,0),0!==a&&(e[a+1]=dm(e[a+1],i)),a=i;else e[i+1]=kl(c,0),0===a?a=i:e[c+1]=dm(e[c+1],i),c=i;l&&(e[i+1]=lm(e[i+1])),vC(e,d,i,!0),vC(e,d,i,!1),function hR(e,n,t,i,r){const o=r?e.residualClasses:e.residualStyles;null!=o&&"string"==typeof n&&Ur(o,n)>=0&&(t[i+1]=um(t[i+1]))}(n,d,e,i,o),s=kl(a,c),o?n.classBindings=s:n.styleBindings=s}(r,o,n,t,s,i)}}function fm(e,n,t,i,r){let o=null;const s=t.directiveEnd;let a=t.directiveStylingLast;for(-1===a?a=t.directiveStart:a++;a0;){const c=e[r],l=Array.isArray(c),d=l?c[1]:c,u=null===d;let h=t[r+1];h===Q&&(h=u?ae:void 0);let f=u?Vu(h,i):d===i?h:void 0;if(l&&!Al(f)&&(f=Vu(c,i)),Al(f)&&(a=f,s))return a;const m=e[r+1];r=s?xi(m):lr(m)}if(null!==n){let c=o?n.residualClasses:n.residualStyles;null!=c&&(a=Vu(c,i))}return a}function Al(e){return void 0!==e}function AC(e,n){return!!(e.flags&(n?8:16))}function Ut(e,n){Et("NgControlFlow");const t=C(),i=xn(),r=t[i]!==Q?t[i]:-1,o=-1!==r?Nl(t,R+r):void 0;if(ze(t,i,e)){const a=ee(null);try{if(void 0!==o&&function xf(e,n){const t=Ps(e,n);return void 0!==t&&il(t[M],t),t}(o,0),-1!==e){const c=R+e,l=Nl(t,c),d=function gm(e,n){return ys(e,n)}(t[M],c),u=nr(l,d.tView.ssrId);po(l,mo(t,d,n,{dehydratedView:u}),0,er(d,u))}}finally{ee(a)}}else if(void 0!==o){const a=function Cy(e,n){const t=Ue+n;if(t(Vn(!0),nl(i,r,y_()));function QR(e,n,t,i,r,o){const s=n[St],a=!s||$i()||wo(t)||Ki(s,o);if(Vn(a),a)return nl(i,r,y_());const c=Ws(s,e,n,t);return yv(s,o)&&Zc(s,o,c.nextSibling),s&&(Sh(t)||Y_(c))&&Ui(t)&&(function bk(e){q.skipHydrationRootTNode=e}(t),ry(c)),c}function dr(e,n,t){const i=C(),r=te(),o=e+R,s=r.firstCreatePass?function JR(e,n,t,i,r){const o=n.consts,s=cn(o,i),a=Ji(n,e,8,"ng-container",s);return null!==s&&vl(a,s,!0),vf(n,t,a,cn(o,r)),null!==n.queries&&n.queries.elementStart(n,a),a}(o,r,i,n,t):r.data[o];Dn(s,!0);const a=PC(r,i,s,e);return i[o]=a,Cs()&&rl(r,i,a,s),Ct(a,i),Ic(s)&&(gf(r,i,s),pf(r,s,i)),null!=t&&bf(i,s),dr}function ur(){let e=_e();const n=te();return ah()?ch():(e=e.parent,Dn(e,!1)),n.firstCreatePass&&(Oc(n,e),Xu(e)&&n.queries.elementEnd(e)),ur}function Bo(e,n,t){return dr(e,n,t),ur(),Bo}let PC=(e,n,t,i)=>(Vn(!0),sf(n[G],""));function eP(e,n,t,i){let r;const o=n[St],s=!o||$i()||Ki(o,i)||wo(t);if(Vn(s),s)return sf(n[G],"");const a=Ws(o,e,n,t),c=function vv(e,n){const t=e.data;let i=t[Gc]?.[n]??null;return null===i&&t[Ss]?.[n]&&(i=$h(e,n)),i}(o,i);return Zc(o,i,a),r=ml(c,a),r}function Dt(){return C()}function la(e,n,t){const i=C();return ze(i,xn(),n)&&Ht(te(),Me(),i,e,n,i[G],t,!0),la}const Ol="en-US";let jC=Ol,rE=(e,n,t)=>{};function ne(e,n,t,i){const r=C(),o=te(),s=_e();return vm(o,r,r[G],s,e,n,i),ne}function vm(e,n,t,i,r,o,s){const a=Ic(i),l=e.firstCreatePass&&yy(e),d=n[xe],u=vy(n);let h=!0;if(3&i.type||s){const p=kt(i,n),b=s?s(p):p,E=u.length,g=s?A=>s(ce(A[i.index])):i.index;let S=null;if(!s&&a&&(S=function qP(e,n,t,i){const r=e.cleanup;if(null!=r)for(let o=0;oc?a[c]:null}"string"==typeof s&&(o+=2)}return null}(e,n,r,i.index)),null!==S)(S.__ngLastListenerFn__||S).__ngNextListenerFn__=o,S.__ngLastListenerFn__=o,h=!1;else{o=cE(i,n,d,o),rE(p,r,o);const A=t.listen(b,r,o);u.push(o,A),l&&l.push(r,g,E,E+1)}}else o=cE(i,n,d,o);const f=i.outputs;let m;if(h&&null!==f&&(m=f[r])){const p=m.length;if(p)for(let b=0;b-1?Kt(e.index,n):n,5);let a=aE(n,t,i,o),c=r.__ngNextListenerFn__;for(;c;)a=aE(n,t,c,o)&&a,c=c.__ngNextListenerFn__;return a}}function O(e=1){return function Dk(e){return(q.lFrame.contextLView=function r_(e,n){for(;e>0;)n=n[Wr],e--;return n}(e,q.lFrame.contextLView))[xe]}(e)}function WP(e,n){let t=null;const i=function IS(e){const n=e.attrs;if(null!=n){const t=n.indexOf(5);if(!(1&t))return n[t+1]}return null}(e);for(let r=0;rt._dirtyCounter.update(i=>i+1))}(n,mw(e,t,i,r))}function Tn(e){return zi(function c_(){return q.lFrame.contextLView}(),R+e)}function k(e,n=""){const t=C(),i=te(),r=e+R,o=i.firstCreatePass?Ji(i,r,1,n,null):i.data[r],s=SE(i,t,o,n,e);t[r]=s,Cs()&&rl(i,t,s,o),Dn(o,!1)}let SE=(e,n,t,i,r)=>(Vn(!0),rf(n[G],i));function oL(e,n,t,i,r){const o=n[St],s=!o||$i()||wo(t)||Ki(o,r);return Vn(s),s?rf(n[G],i):Ws(o,e,n,t)}function ai(e){return Ho("",e,""),ai}function Ho(e,n,t){const i=C(),r=function ko(e,n,t,i){return ze(e,xn(),t)?n+K(t)+i:Q}(i,e,n,t);return r!==Q&&oi(i,gt(),r),Ho}function Cm(e,n,t,i,r){const o=C(),s=Ao(o,e,n,t,i,r);return s!==Q&&oi(o,gt(),s),Cm}function Ke(e,n,t){vw(n)&&(n=n());const i=C();return ze(i,xn(),n)&&Ht(te(),Me(),i,e,n,i[G],t,!1),Ke}function ot(e,n){const t=vw(e);return t&&e.set(n),t}function Ye(e,n){const t=C(),i=te(),r=_e();return vm(i,t,t[G],r,e,n),Ye}function Em(e,n,t,i,r){if(e=z(e),Array.isArray(e))for(let o=0;o>20;if(ji(e)||!e.multi){const f=new Es(l,r,v),m=xm(c,n,r?d:d+h,u);-1===m?(wh(Lc(a,s),o,c),Dm(o,e,n.length),n.push(c),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),t.push(f),s.push(f)):(t[m]=f,s[m]=f)}else{const f=xm(c,n,d+h,u),m=xm(c,n,d,d+h),b=m>=0&&t[m];if(r&&!b||!r&&!(f>=0&&t[f])){wh(Lc(a,s),o,c);const E=function hL(e,n,t,i,r){const o=new Es(e,t,v);return o.multi=[],o.index=n,o.componentProviders=0,BE(o,r,i&&!t),o}(r?uL:dL,t.length,r,i,l);!r&&b&&(t[m].providerFactory=E),Dm(o,e,n.length,0),n.push(c),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),t.push(E),s.push(E)}else Dm(o,e,f>-1?f:m,BE(t[r?m:f],l,!r&&i));!r&&i&&b&&t[m].componentProviders++}}}function Dm(e,n,t,i){const r=ji(n),o=function jS(e){return!!e.useClass}(n);if(r||o){const c=(o?z(n.useClass):n).prototype.ngOnDestroy;if(c){const l=e.destroyHooks||(e.destroyHooks=[]);if(!r&&n.multi){const d=l.indexOf(t);-1===d?l.push(t,[i,c]):l[d+1].push(i,c)}else l.push(t,c)}}}function BE(e,n,t){return t&&e.componentProviders++,e.multi.push(n)-1}function xm(e,n,t,i){for(let r=t;r{t.providersResolver=(i,r)=>function lL(e,n,t){const i=te();if(i.firstCreatePass){const r=En(e);Em(t,i.data,i.blueprint,r,!0),Em(n,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,n)}}let fL=(()=>{class e{constructor(t){this._injector=t,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t)){const i=Uu(0,t.type),r=i.length>0?function Pw(e,n,t=null){return new Rw({providers:e,parent:n,debugName:t,runEnvironmentInitializers:!0}).injector}([i],this._injector,`Standalone[${t.type.name}]`):null;this.cachedInjectors.set(t,r)}return this.cachedInjectors.get(t)}ngOnDestroy(){try{for(const t of this.cachedInjectors.values())null!==t&&t.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=L({token:e,providedIn:"environment",factory:()=>new e(N(wn))})}}return e})();function un(e){Et("NgStandalone"),e.getStandaloneInjector=n=>n.get(fL).getOrCreateStandaloneInjector(e)}function zE(e,n,t,i,r,o){return function WE(e,n,t,i,r,o,s,a){const c=n+t;return function Dl(e,n,t,i,r){const o=sr(e,n,t,i);return ze(e,n+2,r)||o}(e,c,r,o,s)?zn(e,c+3,a?i.call(a,r,o,s):i(r,o,s)):pa(e,c+3)}(C(),At(),e,n,t,i,r,o)}function $E(e,n,t,i,r,o,s){return function ZE(e,n,t,i,r,o,s,a,c){const l=n+t;return function dn(e,n,t,i,r,o){const s=sr(e,n,t,i);return sr(e,n+2,r,o)||s}(e,l,r,o,s,a)?zn(e,l+4,c?i.call(c,r,o,s,a):i(r,o,s,a)):pa(e,l+4)}(C(),At(),e,n,t,i,r,o,s)}function pa(e,n){const t=e[n];return t===Q?void 0:t}function GE(e,n,t,i,r,o){const s=n+t;return ze(e,s,r)?zn(e,s+1,o?i.call(o,r):i(r)):pa(e,s+1)}function Im(e,n){const t=te();let i;const r=e+R;t.firstCreatePass?(i=function DL(e,n){if(n)for(let t=n.length-1;t>=0;t--){const i=n[t];if(e===i.name)return i}}(n,t.pipeRegistry),t.data[r]=i,i.onDestroy&&(t.destroyHooks??=[]).push(r,i.onDestroy)):i=t.data[r];const o=i.factory||(i.factory=Vi(i.type)),a=Lt(v);try{const c=Pc(!1),l=o();return Pc(c),function wm(e,n,t,i){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=i}(t,C(),r,l),l}finally{Lt(a)}}function Tm(e,n,t){const i=e+R,r=C(),o=zi(r,i);return function ga(e,n){return e[M].data[n].pure}(r,i)?GE(r,At(),n,o.transform,t,o):o.transform(t)}function $t(e,n){return dl(e,n)}const gD=new D(""),Hl=new D("");let Pm,Fm=(()=>{class e{constructor(t,i,r){this._ngZone=t,this.registry=i,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,Pm||(function wV(e){Pm=e}(r),r.addToWindow(i)),this._watchAngularEvents(),t.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Y.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}isStable(){return this._isZoneStable&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let t=this._callbacks.pop();clearTimeout(t.timeoutId),t.doneCb()}});else{let t=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(t)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(t=>({source:t.source,creationLocation:t.creationLocation,data:t.data})):[]}addCallback(t,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),t()},i)),this._callbacks.push({doneCb:t,timeoutId:o,updateCb:r})}whenStable(t,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(t,i,r),this._runCallbacksIfReady()}registerApplication(t){this.registry.registerApplication(t,this)}unregisterApplication(t){this.registry.unregisterApplication(t)}findProviders(t,i,r){return[]}static{this.\u0275fac=function(i){return new(i||e)(N(Y),N(Rm),N(Hl))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})(),Rm=(()=>{class e{constructor(){this._applications=new Map}registerApplication(t,i){this._applications.set(t,i)}unregisterApplication(t){this._applications.delete(t)}unregisterAllApplications(){this._applications.clear()}getTestability(t){return this._applications.get(t)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(t,i=!0){return Pm?.findTestabilityInTree(this,t,i)??null}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})();function Ul(e){return!!e&&"function"==typeof e.then}function bD(e){return!!e&&"function"==typeof e.subscribe}const CV=new D("");let _D=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,i)=>{this.resolve=t,this.reject=i}),this.appInits=T(CV,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const t=[];for(const r of this.appInits){const o=r();if(Ul(o))t.push(o);else if(bD(o)){const s=new Promise((a,c)=>{o.subscribe({complete:a,error:c})});t.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(t).then(()=>{i()}).catch(r=>{this.reject(r)}),0===t.length&&i(),this.initialized=!0}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const zl=new D("");function yD(e,n){return Array.isArray(n)?n.reduce(yD,e):{...e,...n}}let Gl,qn=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=T(sA),this.afterRenderManager=T($w),this.zonelessEnabled=T(_o),this.dirtyFlags=0,this.deferredDirtyFlags=0,this.externalTestViews=new Set,this.beforeRender=new Ve,this.afterTick=new Ve,this.componentTypes=[],this.components=[],this.isStable=T(to).hasPendingTasks.pipe(ht(t=>!t)),this._injector=T(wn)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}whenStable(){let t;return new Promise(i=>{t=this.isStable.subscribe({next:r=>{r&&i()}})}).finally(()=>{t.unsubscribe()})}get injector(){return this._injector}bootstrap(t,i){const r=t instanceof Xy;if(!this._injector.get(_D).done)throw!r&&function Bi(e){const n=re(e)||et(e)||mt(e);return null!==n&&n.standalone}(t),new w(405,!1);let s;s=r?t:this._injector.get(gl).resolveComponentFactory(t),this.componentTypes.push(s.componentType);const a=function EV(e){return e.isBoundToModule}(s)?void 0:this._injector.get(or),l=s.create(at.NULL,[],i||s.selector,a),d=l.location.nativeElement,u=l.injector.get(gD,null);return u?.registerApplication(d),l.onDestroy(()=>{this.detachView(l.hostView),$l(this.components,l),u?.unregisterApplication(d)}),this._loadComponent(l),l}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){if(this._runningTick)throw new w(101,!1);const t=ee(null);try{this._runningTick=!0,this.synchronize()}catch(i){this.internalErrorHandler(i)}finally{this._runningTick=!1,ee(t),this.afterTick.next()}}synchronize(){let t=null;this._injector.destroyed||(t=this._injector.get(bl,null,{optional:!0})),this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0;let i=0;for(;0!==this.dirtyFlags&&i++<10;)this.synchronizeOnce(t)}synchronizeOnce(t){if(this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0,7&this.dirtyFlags){const i=!!(1&this.dirtyFlags);this.dirtyFlags&=-8,this.dirtyFlags|=8,this.beforeRender.next(i);for(let{_lView:r,notifyErrorHandler:o}of this._views)MV(r,o,i,this.zonelessEnabled);if(this.dirtyFlags&=-5,this.syncDirtyFlagsWithViews(),7&this.dirtyFlags)return}else t?.begin?.(),t?.end?.();8&this.dirtyFlags&&(this.dirtyFlags&=-9,this.afterRenderManager.execute()),this.syncDirtyFlagsWithViews()}syncDirtyFlagsWithViews(){this.allViews.some(({_lView:t})=>Tc(t))?this.dirtyFlags|=2:this.dirtyFlags&=-8}attachView(t){const i=t;this._views.push(i),i.attachToAppRef(this)}detachView(t){const i=t;$l(this._views,i),i.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t);const i=this._injector.get(zl,[]);[...this._bootstrapListeners,...i].forEach(r=>r(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>$l(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new w(406,!1);const t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function $l(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}function Lm(e){Gl??=new WeakMap;const n=Gl.get(e);if(n)return n;const t=e.isStable.pipe(function QT(e,n){const t=arguments.length>=2;return i=>i.pipe(e?sc((r,o)=>e(r,o,i)):wu,cs(1),t?function $T(e=null){return n=>n.lift(new GT(e))}(n):WT(()=>new db))}(i=>i)).toPromise().then(()=>{});return Gl.set(e,t),e.onDestroy(()=>Gl?.delete(e)),t}function MV(e,n,t,i){(t||Tc(e))&&ll(e,n,t&&!i?0:1)}let kV=(()=>{class e{constructor(){this.zone=T(Y),this.changeDetectionScheduler=T(bo),this.applicationRef=T(qn)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Vm({ngZoneFactory:e,ignoreChangesOutsideZone:n,scheduleInRootZone:t}){return e??=()=>new Y({...Bm(),scheduleInRootZone:t}),[{provide:Y,useFactory:e},{provide:Fn,multi:!0,useFactory:()=>{const i=T(kV,{optional:!0});return()=>i.initialize()}},{provide:Fn,multi:!0,useFactory:()=>{const i=T(NV);return()=>{i.initialize()}}},!0===n?{provide:Qy,useValue:!0}:[],{provide:Lf,useValue:t??U_}]}function Bm(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}let NV=(()=>{class e{constructor(){this.subscription=new me,this.initialized=!1,this.zone=T(Y),this.pendingTasks=T(to)}initialize(){if(this.initialized)return;this.initialized=!0;let t=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(t=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Y.assertNotInAngularZone(),queueMicrotask(()=>{null!==t&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(t),t=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Y.assertInAngularZone(),t??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),va=(()=>{class e{constructor(){this.appRef=T(qn),this.taskService=T(to),this.ngZone=T(Y),this.zonelessEnabled=T(_o),this.disableScheduling=T(Qy,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new me,this.angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Uc):null,this.scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(T(Lf,{optional:!0})??!1),this.cancelScheduledCallback=null,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Th||!this.zoneIsDefined)}notify(t){if(!this.zonelessEnabled&&5===t)return;switch(t){case 0:this.appRef.dirtyFlags|=2;break;case 3:case 2:case 4:case 5:case 1:this.appRef.dirtyFlags|=4;break;case 7:this.appRef.deferredDirtyFlags|=8;break;default:this.appRef.dirtyFlags|=8}if(!this.shouldScheduleTick())return;const i=this.useMicrotaskScheduler?$_:z_;this.pendingRenderTaskId=this.taskService.add(),this.cancelScheduledCallback=this.scheduleInRootZone?Zone.root.run(()=>i(()=>this.tick())):this.ngZone.runOutsideAngular(()=>i(()=>this.tick()))}shouldScheduleTick(){return!(this.disableScheduling||null!==this.pendingRenderTaskId||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(Uc+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;!this.zonelessEnabled&&7&this.appRef.dirtyFlags&&(this.appRef.dirtyFlags|=1);const t=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(i){throw this.taskService.remove(t),i}finally{this.cleanup()}this.useMicrotaskScheduler=!0,$_(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(t)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,null!==this.pendingRenderTaskId){const t=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(t)}}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const ci=new D("",{providedIn:"root",factory:()=>T(ci,oe.Optional|oe.SkipSelf)||function OV(){return typeof $localize<"u"&&$localize.locale||Ol}()}),ql=new D("");function Wl(e){return!e.moduleRef}let MD=(()=>{class e{constructor(t){this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(t,i){const r=i?.scheduleInRootZone,s=i?.ignoreChangesOutsideZone,a=[Vm({ngZoneFactory:()=>function oA(e="zone.js",n){return"noop"===e?new Th:"zone.js"===e?new Y(n):e}(i?.ngZone,{...Bm({eventCoalescing:i?.ngZoneEventCoalescing,runCoalescing:i?.ngZoneRunCoalescing}),scheduleInRootZone:r}),ignoreChangesOutsideZone:s}),{provide:bo,useExisting:va}],c=function wF(e,n,t){return new Yf(e,n,t,!1)}(t.moduleType,this.injector,a);return function xD(e){const n=Wl(e)?e.r3Injector:e.moduleRef.injector,t=n.get(Y);return t.run(()=>{Wl(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();const i=n.get(Yt,null);let r;if(t.runOutsideAngular(()=>{r=t.onError.subscribe({next:o=>{i.handleError(o)}})}),Wl(e)){const o=()=>n.destroy(),s=e.platformInjector.get(ql);s.add(o),n.onDestroy(()=>{r.unsubscribe(),s.delete(o)})}else{const o=()=>e.moduleRef.destroy(),s=e.platformInjector.get(ql);s.add(o),e.moduleRef.onDestroy(()=>{$l(e.allPlatformModules,e.moduleRef),r.unsubscribe(),s.delete(o)})}return function xV(e,n,t){try{const i=t();return Ul(i)?i.catch(r=>{throw n.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>e.handleError(i)),i}}(i,t,()=>{const o=n.get(_D);return o.runInitializers(),o.donePromise.then(()=>{if(function cP(e){"string"==typeof e&&(jC=e.toLowerCase().replace(/_/g,"-"))}(n.get(ci,Ol)||Ol),Wl(e)){const a=n.get(qn);return void 0!==e.rootComponent&&a.bootstrap(e.rootComponent),a}return function BV(e,n){const t=e.injector.get(qn);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(i=>t.bootstrap(i));else{if(!e.instance.ngDoBootstrap)throw new w(-403,!1);e.instance.ngDoBootstrap(t)}n.push(e)}(e.moduleRef,e.allPlatformModules),e.moduleRef})})})}({moduleRef:c,allPlatformModules:this._modules,platformInjector:this.injector})}bootstrapModule(t,i=[]){const r=yD({},i);return function SV(e,n,t){const i=new Qf(t);return Promise.resolve(i)}(0,0,t).then(o=>this.bootstrapModuleFactory(o,r))}onDestroy(t){this._destroyListeners.push(t)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new w(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const t=this._injector.get(ql,null);t&&(t.forEach(i=>i()),t.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static{this.\u0275fac=function(i){return new(i||e)(N(at))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})(),Ii=null;const ID=new D("");function TD(e,n,t=[]){const i=`Platform: ${n}`,r=new D(i);return(o=[])=>{let s=Hm();if(!s||s.injector.get(ID,!1)){const a=[...t,...o,{provide:r,useValue:!0}];e?e(a):function jV(e){if(Ii&&!Ii.get(ID,!1))throw new w(400,!1);(function vD(){!function IT(e){Jg=e}(()=>{throw new w(600,!1)})})(),Ii=e;const n=e.get(MD);(function kD(e){e.get(pv,null)?.forEach(t=>t())})(e)}(function SD(e=[],n){return at.create({name:n,providers:[{provide:Gu,useValue:"platform"},{provide:ql,useValue:new Set([()=>Ii=null])},...e]})}(a,i))}return function HV(){const n=Hm();if(!n)throw new w(401,!1);return n}()}}function Hm(){return Ii?.get(MD)??null}let Sn=(()=>{class e{static{this.__NG_ELEMENT_ID__=zV}}return e})();function zV(e){return function $V(e,n,t){if(Ui(e)&&!t){const i=Kt(e.index,n);return new Hs(i,i)}return 175&e.type?new Hs(n[Oe],n):null}(_e(),C(),!(16&~e))}class RD{constructor(){}supports(n){return El(n)}create(n){return new KV(n)}}const ZV=(e,n)=>n;class KV{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||ZV}forEachItem(n){let t;for(t=this._itHead;null!==t;t=t._next)n(t)}forEachOperation(n){let t=this._itHead,i=this._removalsHead,r=0,o=null;for(;t||i;){const s=!i||t&&t.currentIndex{s=this._trackByFn(r,a),null!==t&&Object.is(t.trackById,s)?(i&&(t=this._verifyReinsertion(t,a,s,r)),Object.is(t.item,a)||this._addIdentityChange(t,a)):(t=this._mismatch(t,a,s,r),i=!0),t=t._next,r++}),this.length=r;return this._truncate(t),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,t,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,t)||this._addIdentityChange(n,t),this._moveAfter(n,o,r)):n=this._addAfter(new YV(t,i),o,r),n}_verifyReinsertion(n,t,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const t=n._next;this._addToRemovals(this._unlink(n)),n=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,t,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,t,i),this._addToMoves(n,i),n}_moveAfter(n,t,i){return this._unlink(n),this._insertAfter(n,t,i),this._addToMoves(n,i),n}_addAfter(n,t,i){return this._insertAfter(n,t,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,t,i){const r=null===t?this._itHead:t._next;return n._next=r,n._prev=t,null===r?this._itTail=n:r._prev=n,null===t?this._itHead=n:t._next=n,null===this._linkedRecords&&(this._linkedRecords=new PD),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const t=n._prev,i=n._next;return null===t?this._itHead=i:t._next=i,null===i?this._itTail=t:i._prev=t,n}_addToMoves(n,t){return n.previousIndex===t||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new PD),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,t){return n.item=t,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class YV{constructor(n,t){this.item=n,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class QV{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,t){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===t||t<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const t=n._prevDup,i=n._nextDup;return null===t?this._head=i:t._nextDup=i,null===i?this._tail=t:i._prevDup=t,null===this._head}}class PD{constructor(){this.map=new Map}put(n){const t=n.trackById;let i=this.map.get(t);i||(i=new QV,this.map.set(t,i)),i.add(n)}get(n,t){const r=this.map.get(n);return r?r.get(n,t):null}remove(n){const t=n.trackById;return this.map.get(t).remove(n)&&this.map.delete(t),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function LD(e,n,t){const i=e.previousIndex;if(null===i)return i;let r=0;return t&&i{class e{static{this.\u0275prov=L({token:e,providedIn:"root",factory:BD})}constructor(t){this.factories=t}static create(t,i){if(null!=i){const r=i.factories.slice();t=t.concat(r)}return new e(t)}static extend(t){return{provide:e,useFactory:i=>e.create(t,i||BD()),deps:[[e,new mc,new jr]]}}find(t){const i=this.factories.find(r=>r.supports(t));if(null!=i)return i;throw new w(901,!1)}}return e})();const n2=TD(null,"core",[]);let i2=(()=>{class e{constructor(t){}static{this.\u0275fac=function(i){return new(i||e)(N(qn))}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({})}}return e})(),c0=!1;function O2(){return ms([{provide:Kc,useFactory:()=>{let e=!0;return Jt()&&(e=!!T(ao,{optional:!0})?.get(jh,null)),e&&Et("NgHydration"),e}},{provide:Fn,useValue:()=>{(function qy(e){$y=e})(!1),Jt()&&T(Kc)&&(function F2(){const e=wi();let n;for(const t of e.body.childNodes)if(t.nodeType===Node.COMMENT_NODE&&t.textContent?.trim()===FA){n=t;break}if(!n)throw new w(-507,!1)}(),function k2(){c0||(c0=!0,function PA(){gv=RA}(),function XR(){RC=QR}(),function sL(){SE=oL}(),function tP(){PC=eP}(),function TF(){Lw=IF}(),function GO(){aw=$O,Hf=zO}(),function EO(){Yy=CO}(),function YN(){hy=KN}())}())},multi:!0},{provide:Dv,useFactory:()=>Jt()&&T(Kc)},{provide:zl,useFactory:()=>{if(Jt()&&T(Kc)){const e=T(qn);return T(at),()=>{(function N2(e){return Lm(e)})(e).then(()=>{!function yO(e){const n=e._views;for(const t of n){const i=bv(t);null!==i&&null!==i[Ne]&&(nt(i)?pl(i):Ky(i))}}(e)})}}return()=>{}},multi:!0}])}function ct(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}function Km(e,n=NaN){return isNaN(parseFloat(e))||isNaN(Number(e))?n:Number(e)}function pr(e,n){Et("NgSignals");const t=Xg(e);return n?.equal&&(t[sn].equal=n.equal),t}function Wn(e){const n=ee(null);try{return e()}finally{ee(n)}}let u0=null;function Ea(){return u0}class H2{}const lt=new D("");class kB{constructor(n,t,i,r){this.$implicit=n,this.ngForOf=t,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let sp=(()=>{class e{set ngForOf(t){this._ngForOf=t,this._ngForOfDirty=!0}set ngForTrackBy(t){this._trackByFn=t}get ngForTrackBy(){return this._trackByFn}constructor(t,i,r){this._viewContainer=t,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(t){t&&(this._template=t)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const t=this._ngForOf;!this._differ&&t&&(this._differ=this._differs.find(t).create(this.ngForTrackBy))}if(this._differ){const t=this._differ.diff(this._ngForOf);t&&this._applyChanges(t)}}_applyChanges(t){const i=this._viewContainer;t.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new kB(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),C0(a,r)}});for(let r=0,o=i.length;r{C0(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(t,i){return!0}static{this.\u0275fac=function(i){return new(i||e)(v(Un),v(si),v(qm))}}static{this.\u0275dir=V({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}}return e})();function C0(e,n){e.context.$implicit=n.item}let gr=(()=>{class e{constructor(t,i){this._viewContainer=t,this._context=new AB,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(t){this._context.$implicit=this._context.ngIf=t,this._updateView()}set ngIfThen(t){E0("ngIfThen",t),this._thenTemplateRef=t,this._thenViewRef=null,this._updateView()}set ngIfElse(t){E0("ngIfElse",t),this._elseTemplateRef=t,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(t,i){return!0}static{this.\u0275fac=function(i){return new(i||e)(v(Un),v(si))}}static{this.\u0275dir=V({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}}return e})();class AB{constructor(){this.$implicit=null,this.ngIf=null}}function E0(e,n){if(n&&!n.createEmbeddedView)throw new Error(`${e} must be a TemplateRef, but received '${Je(n)}'.`)}let md=(()=>{class e{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(t){if(this._shouldRecreateView(t)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const r=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,r,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(t){return!!t.ngTemplateOutlet||!!t.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(t,i,r)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,r),get:(t,i,r)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,r)}})}static{this.\u0275fac=function(i){return new(i||e)(v(Un))}}static{this.\u0275dir=V({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[Bt]})}}return e})();class PB{createSubscription(n,t){return Wn(()=>n.subscribe({next:t,error:i=>{throw i}}))}dispose(n){Wn(()=>n.unsubscribe())}}class LB{createSubscription(n,t){return n.then(t,i=>{throw i})}dispose(n){}}const VB=new LB,BB=new PB;let x0=(()=>{class e{constructor(t){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=t}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(t){if(!this._obj){if(t)try{this.markForCheckOnValueUpdate=!1,this._subscribe(t)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return t!==this._obj?(this._dispose(),this.transform(t)):this._latestValue}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,i=>this._updateLatestValue(t,i))}_selectStrategy(t){if(Ul(t))return VB;if(bD(t))return BB;throw function An(e,n){return new w(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,i){t===this._obj&&(this._latestValue=i,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static{this.\u0275fac=function(i){return new(i||e)(v(Sn,16))}}static{this.\u0275pipe=Tt({name:"async",type:e,pure:!1,standalone:!0})}}return e})(),br=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({})}}return e})();const I0="browser",ij="server";function up(e){return e===ij}function _d(e){return e&&"function"==typeof e.schedule}const V0=e=>n=>{for(let t=0,i=e.length;t{const i=new me;let r=0;return i.add(n.schedule(function(){r!==e.length?(t.next(e[r++]),t.closed||i.add(this.schedule())):t.complete()})),i})}function gp(e,n){return n?pp(e,n):new Le(V0(e))}function Rt(...e){let n=e[e.length-1];return _d(n)?(e.pop(),pp(e,n)):gp(e)}const vd=function Rj(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}(),B0=e=>e&&"number"==typeof e.length&&"function"!=typeof e;function j0(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}const bp=e=>{if(e&&"function"==typeof e[as])return(e=>n=>{const t=e[as]();if("function"!=typeof t.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return t.subscribe(n)})(e);if(B0(e))return V0(e);if(j0(e))return(e=>n=>(e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,Fr),n))(e);if(e&&"function"==typeof e[vd])return(e=>n=>{const t=e[vd]();for(;;){let i;try{i=t.next()}catch(r){return n.error(r),n}if(i.done){n.complete();break}if(n.next(i.value),n.closed)break}return"function"==typeof t.return&&n.add(()=>{t.return&&t.return()}),n})(e);{const t=`You provided ${yu(e)?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.`;throw new TypeError(t)}};function Ia(e,n){return n?function zj(e,n){if(null!=e){if(function Hj(e){return e&&"function"==typeof e[as]}(e))return function Vj(e,n){return new Le(t=>{const i=new me;return i.add(n.schedule(()=>{const r=e[as]();i.add(r.subscribe({next(o){i.add(n.schedule(()=>t.next(o)))},error(o){i.add(n.schedule(()=>t.error(o)))},complete(){i.add(n.schedule(()=>t.complete()))}}))})),i})}(e,n);if(j0(e))return function Bj(e,n){return new Le(t=>{const i=new me;return i.add(n.schedule(()=>e.then(r=>{i.add(n.schedule(()=>{t.next(r),i.add(n.schedule(()=>t.complete()))}))},r=>{i.add(n.schedule(()=>t.error(r)))}))),i})}(e,n);if(B0(e))return pp(e,n);if(function Uj(e){return e&&"function"==typeof e[vd]}(e)||"string"==typeof e)return function jj(e,n){if(!e)throw new Error("Iterable cannot be null");return new Le(t=>{const i=new me;let r;return i.add(()=>{r&&"function"==typeof r.return&&r.return()}),i.add(n.schedule(()=>{r=e[vd](),i.add(n.schedule(function(){if(t.closed)return;let o,s;try{const a=r.next();o=a.value,s=a.done}catch(a){return void t.error(a)}s?t.complete():(t.next(o),this.schedule())}))})),i})}(e,n)}throw new TypeError((null!==e&&typeof e||e)+" is not observable")}(e,n):e instanceof Le?e:new Le(bp(e))}class yd extends Ce{constructor(n){super(),this.parent=n}_next(n){this.parent.notifyNext(n)}_error(n){this.parent.notifyError(n),this.unsubscribe()}_complete(){this.parent.notifyComplete(),this.unsubscribe()}}class wd extends Ce{notifyNext(n){this.destination.next(n)}notifyError(n){this.destination.error(n)}notifyComplete(){this.destination.complete()}}function Cd(e,n){if(n.closed)return;if(e instanceof Le)return e.subscribe(n);let t;try{t=bp(e)(n)}catch(i){n.error(i)}return t}function _p(e,n,t=Number.POSITIVE_INFINITY){return"function"==typeof n?i=>i.pipe(_p((r,o)=>Ia(e(r,o)).pipe(ht((s,a)=>n(r,s,o,a))),t)):("number"==typeof n&&(t=n),i=>i.lift(new $j(e,t)))}class $j{constructor(n,t=Number.POSITIVE_INFINITY){this.project=n,this.concurrent=t}call(n,t){return t.subscribe(new Gj(n,this.project,this.concurrent))}}class Gj extends wd{constructor(n,t,i=Number.POSITIVE_INFINITY){super(n),this.project=t,this.concurrent=i,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}_next(n){this.active0?this._next(n.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}function Ti(){}function Ta(e,n,t){return function(r){return r.lift(new Wj(e,n,t))}}class Wj{constructor(n,t,i){this.nextOrObserver=n,this.error=t,this.complete=i}call(n,t){return t.subscribe(new Zj(n,this.nextOrObserver,this.error,this.complete))}}class Zj extends Ce{constructor(n,t,i,r){super(n),this._tapNext=Ti,this._tapError=Ti,this._tapComplete=Ti,this._tapError=i||Ti,this._tapComplete=r||Ti,tc(t)?(this._context=this,this._tapNext=t):t&&(this._context=t,this._tapNext=t.next||Ti,this._tapError=t.error||Ti,this._tapComplete=t.complete||Ti)}_next(n){try{this._tapNext.call(this._context,n)}catch(t){return void this.destination.error(t)}this.destination.next(n)}_error(n){try{this._tapError.call(this._context,n)}catch(t){return void this.destination.error(t)}this.destination.error(n)}_complete(){try{this._tapComplete.call(this._context)}catch(n){return void this.destination.error(n)}return this.destination.complete()}}class vp{}class ui{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(t=>{const i=t.indexOf(":");if(i>0){const r=t.slice(0,i),o=r.toLowerCase(),s=t.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((t,i)=>{this.setHeaderEntries(i,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([t,i])=>{this.setHeaderEntries(t,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const t=this.headers.get(n.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,t){return this.clone({name:n,value:t,op:"a"})}set(n,t){return this.clone({name:n,value:t,op:"s"})}delete(n,t){return this.clone({name:n,value:t,op:"d"})}maybeSetNormalizedName(n,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,n)}init(){this.lazyInit&&(this.lazyInit instanceof ui?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(t=>{this.headers.set(t,n.headers.get(t)),this.normalizedNames.set(t,n.normalizedNames.get(t))})}clone(n){const t=new ui;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof ui?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([n]),t}applyUpdate(n){const t=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,t);const r=("a"===n.op?this.headers.get(t):void 0)||[];r.push(...i),this.headers.set(t,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(t);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,s)}else this.headers.delete(t),this.normalizedNames.delete(t)}}setHeaderEntries(n,t){const i=(Array.isArray(t)?t:[t]).map(o=>o.toString()),r=n.toLowerCase();this.headers.set(r,i),this.maybeSetNormalizedName(n,r)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>n(this.normalizedNames.get(t),this.headers.get(t)))}}class Kj{encodeKey(n){return H0(n)}encodeValue(n){return H0(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const Qj=/%(\d[a-f0-9])/gi,Xj={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function H0(e){return encodeURIComponent(e).replace(Qj,(n,t)=>Xj[t]??n)}function Ed(e){return`${e}`}class Si{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new Kj,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function Yj(e,n){const t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],c=t.get(s)||[];c.push(a),t.set(s,c)}),t}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(t=>{const i=n.fromObject[t],r=Array.isArray(i)?i.map(Ed):[Ed(i)];this.map.set(t,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const t=this.map.get(n);return t?t[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,t){return this.clone({param:n,value:t,op:"a"})}appendAll(n){const t=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{t.push({param:i,value:o,op:"a"})}):t.push({param:i,value:r,op:"a"})}),this.clone(t)}set(n,t){return this.clone({param:n,value:t,op:"s"})}delete(n,t){return this.clone({param:n,value:t,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const t=this.encoder.encodeKey(n);return this.map.get(n).map(i=>t+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const t=new Si({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(n),t}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const t=("a"===n.op?this.map.get(n.param):void 0)||[];t.push(Ed(n.value)),this.map.set(n.param,t);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(Ed(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}class Jj{constructor(){this.map=new Map}set(n,t){return this.map.set(n,t),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}function U0(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function z0(e){return typeof Blob<"u"&&e instanceof Blob}function $0(e){return typeof FormData<"u"&&e instanceof FormData}class Sa{constructor(n,t,i,r){let o;if(this.url=t,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function eH(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new ui,this.context??=new Jj,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=t;else{const a=t.indexOf("?");this.urlWithParams=t+(-1===a?"?":ah.set(f,n.setHeaders[f]),l)),n.setParams&&(d=Object.keys(n.setParams).reduce((h,f)=>h.set(f,n.setParams[f]),d)),new Sa(t,i,s,{params:d,headers:l,context:u,reportProgress:c,responseType:r,withCredentials:a,transferCache:o})}}var wp=function(e){return e[e.Sent=0]="Sent",e[e.UploadProgress=1]="UploadProgress",e[e.ResponseHeader=2]="ResponseHeader",e[e.DownloadProgress=3]="DownloadProgress",e[e.Response=4]="Response",e[e.User=5]="User",e}(wp||{});class Cp{constructor(n,t=200,i="OK"){this.headers=n.headers||new ui,this.status=void 0!==n.status?n.status:t,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class ka extends Cp{constructor(n={}){super(n),this.type=wp.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new ka({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}function Ep(e,n){return{body:n,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials,transferCache:e.transferCache}}let Dp=(()=>{class e{constructor(t){this.handler=t}request(t,i,r={}){let o;if(t instanceof Sa)o=t;else{let c,l;c=r.headers instanceof ui?r.headers:new ui(r.headers),r.params&&(l=r.params instanceof Si?r.params:new Si({fromObject:r.params})),o=new Sa(t,i,void 0!==r.body?r.body:null,{headers:c,context:r.context,params:l,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials,transferCache:r.transferCache})}const s=Rt(o).pipe(function qj(e,n){return _p(e,n,1)}(c=>this.handler.handle(c)));if(t instanceof Sa||"events"===r.observe)return s;const a=s.pipe(sc(c=>c instanceof ka));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(ht(c=>{if(null!==c.body&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return a.pipe(ht(c=>{if(null!==c.body&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return a.pipe(ht(c=>{if(null!==c.body&&"string"!=typeof c.body)throw new Error("Response is not a string.");return c.body}));default:return a.pipe(ht(c=>c.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(t,i={}){return this.request("DELETE",t,i)}get(t,i={}){return this.request("GET",t,i)}head(t,i={}){return this.request("HEAD",t,i)}jsonp(t,i){return this.request("JSONP",t,{params:(new Si).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,i={}){return this.request("OPTIONS",t,i)}patch(t,i,r={}){return this.request("PATCH",t,Ep(r,i))}post(t,i,r={}){return this.request("POST",t,Ep(r,i))}put(t,i,r={}){return this.request("PUT",t,Ep(r,i))}static{this.\u0275fac=function(i){return new(i||e)(N(vp))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const aH=new D(""),vH=new D(""),J0="b",ex="h",tx="s",nx="st",ix="u",rx="rt",xd=new D(""),yH=["GET","HEAD"];function wH(e,n){const{isCacheActive:t,...i}=T(xd),{transferCache:r,method:o}=e;if(!t||!1===r||"POST"===o&&!i.includePostRequests&&!r||"POST"!==o&&!yH.includes(o)||!i.includeRequestsWithAuthHeaders&&function CH(e){return e.headers.has("authorization")||e.headers.has("proxy-authorization")}(e)||!1===i.filter?.(e))return n(e);const s=T(ao),a=T(vH,{optional:!0}),c=up(T(ii));if(a&&!c)throw new w(2803,!1);const l=c&&a?function IH(e,n){const t=new URL(e,"resolve://").origin,i=n[t];return i?e.replace(t,i):e}(e.url,a):e.url,d=function DH(e,n){const{params:t,method:i,responseType:r}=e,o=ox(t);let s=e.serializeBody();s instanceof URLSearchParams?s=ox(s):"string"!=typeof s&&(s="");const c=function xH(e){let n=0;for(const t of e)n=Math.imul(31,n)+t.charCodeAt(0)|0;return n+=2147483648,n.toString()}([i,r,n,s,o].join("|"));return c}(e,l),u=s.get(d,null);let h=i.includeHeaders;if("object"==typeof r&&r.includeHeaders&&(h=r.includeHeaders),u){const{[J0]:f,[rx]:m,[ex]:p,[tx]:b,[nx]:E,[ix]:g}=u;let S=f;switch(m){case"arraybuffer":S=(new TextEncoder).encode(f).buffer;break;case"blob":S=new Blob([f])}let A=new ui(p);return Rt(new ka({body:S,headers:A,status:b,statusText:E,url:g}))}return n(e).pipe(Ta(f=>{f instanceof ka&&c&&s.set(d,{[J0]:f.body,[ex]:EH(f.headers,h),[tx]:f.status,[nx]:f.statusText,[ix]:l,[rx]:e.responseType})}))}function EH(e,n){if(!n)return{};const t={};for(const i of n){const r=e.getAll(i);null!==r&&(t[i]=r)}return t}function ox(e){return[...e.keys()].sort().map(n=>`${n}=${e.getAll(n)}`).join("&")}function MH(e){return[{provide:xd,useFactory:()=>(Et("NgHttpTransferCache"),{isCacheActive:!0,...e})},{provide:aH,useValue:wH,multi:!0,deps:[ao,xd]},{provide:zl,multi:!0,useFactory:()=>{const n=T(qn),t=T(xd);return()=>{Lm(n).then(()=>{t.isCacheActive=!1})}}}]}class TH extends H2{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class Ip extends TH{static makeCurrent(){!function j2(e){u0??=e}(new Ip)}onAndCancel(n,t,i){return n.addEventListener(t,i),()=>{n.removeEventListener(t,i)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.remove()}createElement(n,t){return(t=t||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return"window"===t?window:"document"===t?n:"body"===t?n.body:null}getBaseHref(n){const t=function SH(){return Aa=Aa||document.querySelector("base"),Aa?Aa.getAttribute("href"):null}();return null==t?null:function kH(e){return new URL(e,document.baseURI).pathname}(t)}resetBaseElement(){Aa=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return function IB(e,n){n=encodeURIComponent(n);for(const t of e.split(";")){const i=t.indexOf("="),[r,o]=-1==i?[t,""]:[t.slice(0,i),t.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}(document.cookie,n)}}let Aa=null,NH=(()=>{class e{build(){return new XMLHttpRequest}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const Tp=new D("");let sx=(()=>{class e{constructor(t,i){this._zone=i,this._eventNameToPlugin=new Map,t.forEach(r=>{r.manager=this}),this._plugins=t.slice().reverse()}addEventListener(t,i,r){return this._findPluginFor(i).addEventListener(t,i,r)}getZone(){return this._zone}_findPluginFor(t){let i=this._eventNameToPlugin.get(t);if(i)return i;if(i=this._plugins.find(o=>o.supports(t)),!i)throw new w(5101,!1);return this._eventNameToPlugin.set(t,i),i}static{this.\u0275fac=function(i){return new(i||e)(N(Tp),N(Y))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();class ax{constructor(n){this._doc=n}}const Sp="ng-app-id";let cx=(()=>{class e{constructor(t,i,r,o={}){this.doc=t,this.appId=i,this.nonce=r,this.platformId=o,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=up(o),this.resetHostNodes()}addStyles(t){for(const i of t)1===this.changeUsageCount(i,1)&&this.onStyleAdded(i)}removeStyles(t){for(const i of t)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){const t=this.styleNodesInDOM;t&&(t.forEach(i=>i.remove()),t.clear());for(const i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(t){this.hostNodes.add(t);for(const i of this.getAllStyles())this.addStyleToHost(t,i)}removeHost(t){this.hostNodes.delete(t)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(t){for(const i of this.hostNodes)this.addStyleToHost(i,t)}onStyleRemoved(t){const i=this.styleRef;i.get(t)?.elements?.forEach(r=>r.remove()),i.delete(t)}collectServerRenderedStyles(){const t=this.doc.head?.querySelectorAll(`style[${Sp}="${this.appId}"]`);if(t?.length){const i=new Map;return t.forEach(r=>{null!=r.textContent&&i.set(r.textContent,r)}),i}return null}changeUsageCount(t,i){const r=this.styleRef;if(r.has(t)){const o=r.get(t);return o.usage+=i,o.usage}return r.set(t,{usage:i,elements:[]}),i}getStyleElement(t,i){const r=this.styleNodesInDOM,o=r?.get(i);if(o?.parentNode===t)return r.delete(i),o.removeAttribute(Sp),o;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=i,this.platformIsServer&&s.setAttribute(Sp,this.appId),t.appendChild(s),s}}addStyleToHost(t,i){const r=this.getStyleElement(t,i),o=this.styleRef,s=o.get(i)?.elements;s?s.push(r):o.set(i,{elements:[r],usage:1})}resetHostNodes(){const t=this.hostNodes;t.clear(),t.add(this.doc.head)}static{this.\u0275fac=function(i){return new(i||e)(N(lt),N(oo),N(Fh,8),N(ii))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const kp={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},Ap=/%COMP%/g,PH=new D("",{providedIn:"root",factory:()=>!0});function dx(e,n){return n.map(t=>t.replace(Ap,e))}let Np=(()=>{class e{constructor(t,i,r,o,s,a,c,l=null){this.eventManager=t,this.sharedStylesHost=i,this.appId=r,this.removeStylesOnCompDestroy=o,this.doc=s,this.platformId=a,this.ngZone=c,this.nonce=l,this.rendererByCompId=new Map,this.platformIsServer=up(a),this.defaultRenderer=new Op(t,s,c,this.platformIsServer)}createRenderer(t,i){if(!t||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===vn.ShadowDom&&(i={...i,encapsulation:vn.Emulated});const r=this.getOrCreateRenderer(t,i);return r instanceof hx?r.applyToHost(t):r instanceof Fp&&r.applyStyles(),r}getOrCreateRenderer(t,i){const r=this.rendererByCompId;let o=r.get(i.id);if(!o){const s=this.doc,a=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,d=this.removeStylesOnCompDestroy,u=this.platformIsServer;switch(i.encapsulation){case vn.Emulated:o=new hx(c,l,i,this.appId,d,s,a,u);break;case vn.ShadowDom:return new jH(c,l,t,i,s,a,this.nonce,u);default:o=new Fp(c,l,i,d,s,a,u)}r.set(i.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(i){return new(i||e)(N(sx),N(cx),N(oo),N(PH),N(lt),N(ii),N(Y),N(Fh))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();class Op{constructor(n,t,i,r){this.eventManager=n,this.doc=t,this.ngZone=i,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(n,t){return t?this.doc.createElementNS(kp[t]||t,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,t){(ux(n)?n.content:n).appendChild(t)}insertBefore(n,t,i){n&&(ux(n)?n.content:n).insertBefore(t,i)}removeChild(n,t){t.remove()}selectRootElement(n,t){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new w(-5104,!1);return t||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,i,r){if(r){t=r+":"+t;const o=kp[r];o?n.setAttributeNS(o,t,i):n.setAttribute(t,i)}else n.setAttribute(t,i)}removeAttribute(n,t,i){if(i){const r=kp[i];r?n.removeAttributeNS(r,t):n.removeAttribute(`${i}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,i,r){r&(Ci.DashCase|Ci.Important)?n.style.setProperty(t,i,r&Ci.Important?"important":""):n.style[t]=i}removeStyle(n,t,i){i&Ci.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,i){null!=n&&(n[t]=i)}setValue(n,t){n.nodeValue=t}listen(n,t,i){if("string"==typeof n&&!(n=Ea().getGlobalEventTarget(this.doc,n)))throw new Error(`Unsupported event target ${n} for event ${t}`);return this.eventManager.addEventListener(n,t,this.decoratePreventDefault(i))}decoratePreventDefault(n){return t=>{if("__ngUnwrap__"===t)return n;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>n(t)):n(t))&&t.preventDefault()}}}function ux(e){return"TEMPLATE"===e.tagName&&void 0!==e.content}class jH extends Op{constructor(n,t,i,r,o,s,a,c){super(n,o,s,c),this.sharedStylesHost=t,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const l=dx(r.id,r.styles);for(const d of l){const u=document.createElement("style");a&&u.setAttribute("nonce",a),u.textContent=d,this.shadowRoot.appendChild(u)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,t){return super.appendChild(this.nodeOrShadowRoot(n),t)}insertBefore(n,t,i){return super.insertBefore(this.nodeOrShadowRoot(n),t,i)}removeChild(n,t){return super.removeChild(null,t)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Fp extends Op{constructor(n,t,i,r,o,s,a,c){super(n,o,s,a),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=r,this.styles=c?dx(c,i.styles):i.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class hx extends Fp{constructor(n,t,i,r,o,s,a,c){const l=r+"-"+i.id;super(n,t,i,o,s,a,c,l),this.contentAttr=function LH(e){return"_ngcontent-%COMP%".replace(Ap,e)}(l),this.hostAttr=function VH(e){return"_nghost-%COMP%".replace(Ap,e)}(l)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,t){const i=super.createElement(n,t);return super.setAttribute(i,this.contentAttr,""),i}}let HH=(()=>{class e extends ax{constructor(t){super(t)}supports(t){return!0}addEventListener(t,i,r){return t.addEventListener(i,r,!1),()=>this.removeEventListener(t,i,r)}removeEventListener(t,i,r){return t.removeEventListener(i,r)}static{this.\u0275fac=function(i){return new(i||e)(N(lt))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const fx=["alt","control","meta","shift"],UH={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},zH={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey};let $H=(()=>{class e extends ax{constructor(t){super(t)}supports(t){return null!=e.parseEventName(t)}addEventListener(t,i,r){const o=e.parseEventName(i),s=e.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ea().onAndCancel(t,o.domEventName,s))}static parseEventName(t){const i=t.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=e._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),fx.forEach(l=>{const d=i.indexOf(l);d>-1&&(i.splice(d,1),s+=l+".")}),s+=o,0!=i.length||0===o.length)return null;const c={};return c.domEventName=r,c.fullKey=s,c}static matchEventFullKeyCode(t,i){let r=UH[t.key]||t.key,o="";return i.indexOf("code.")>-1&&(r=t.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),fx.forEach(s=>{s!==r&&(0,zH[s])(t)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(t,i,r){return o=>{e.matchEventFullKeyCode(o,t)&&r.runGuarded(()=>i(o))}}static _normalizeKey(t){return"esc"===t?"escape":t}static{this.\u0275fac=function(i){return new(i||e)(N(lt))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const px=[{provide:ii,useValue:I0},{provide:pv,useValue:function GH(){Ip.makeCurrent()},multi:!0},{provide:lt,useFactory:function WH(){return function TA(e){Oh=e}(document),document},deps:[]}],ZH=TD(n2,"browser",px),KH=new D(""),gx=[{provide:Hl,useClass:class AH{addToWindow(n){Ae.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new w(5103,!1);return o},Ae.getAllAngularTestabilities=()=>n.getAllTestabilities(),Ae.getAllAngularRootElements=()=>n.getAllRootElements(),Ae.frameworkStabilizers||(Ae.frameworkStabilizers=[]),Ae.frameworkStabilizers.push(i=>{const r=Ae.getAllAngularTestabilities();let o=r.length;const s=function(){o--,0==o&&i()};r.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,t,i){return null==t?null:n.getTestability(t)??(i?Ea().isShadowRoot(t)?this.findTestabilityInTree(n,t.host,!0):this.findTestabilityInTree(n,t.parentElement,!0):null)}},deps:[]},{provide:gD,useClass:Fm,deps:[Y,Rm,Hl]},{provide:Fm,useClass:Fm,deps:[Y,Rm,Hl]}],bx=[{provide:Gu,useValue:"root"},{provide:Yt,useFactory:function qH(){return new Yt},deps:[]},{provide:Tp,useClass:HH,multi:!0,deps:[lt,Y,ii]},{provide:Tp,useClass:$H,multi:!0,deps:[lt]},Np,cx,sx,{provide:bl,useExisting:Np},{provide:class sj{},useClass:NH,deps:[]},[]];let _x=(()=>{class e{constructor(t){}static withServerTransition(t){return{ngModule:e,providers:[{provide:oo,useValue:t.appId}]}}static{this.\u0275fac=function(i){return new(i||e)(N(KH,12))}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({providers:[...bx,...gx],imports:[br,i2]})}}return e})(),Md=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:function(i){let r=null;return r=i?new(i||e):N(JH),r},providedIn:"root"})}}return e})(),JH=(()=>{class e extends Md{constructor(t){super(),this._doc=t}sanitize(t,i){if(null==i)return null;switch(t){case _t.NONE:return i;case _t.HTML:return jn(i,"HTML")?Qt(i):Vv(this._doc,String(i)).toString();case _t.STYLE:return jn(i,"Style")?Qt(i):i;case _t.SCRIPT:if(jn(i,"Script"))return Qt(i);throw new w(5200,!1);case _t.URL:return jn(i,"URL")?Qt(i):Xc(String(i));case _t.RESOURCE_URL:if(jn(i,"ResourceURL"))return Qt(i);throw new w(5201,!1);default:throw new w(5202,!1)}}bypassSecurityTrustHtml(t){return function YA(e){return new $A(e)}(t)}bypassSecurityTrustStyle(t){return function QA(e){return new GA(e)}(t)}bypassSecurityTrustScript(t){return function XA(e){return new qA(e)}(t)}bypassSecurityTrustUrl(t){return function JA(e){return new WA(e)}(t)}bypassSecurityTrustResourceUrl(t){return function eN(e){return new ZA(e)}(t)}static{this.\u0275fac=function(i){return new(i||e)(N(lt))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var vr=function(e){return e[e.NoHttpTransferCache=0]="NoHttpTransferCache",e[e.HttpTransferCacheOptions=1]="HttpTransferCacheOptions",e[e.I18nSupport=2]="I18nSupport",e[e.EventReplay=3]="EventReplay",e}(vr||{});function eU(...e){const n=[],t=new Set,i=t.has(vr.HttpTransferCacheOptions);for(const{\u0275providers:r,\u0275kind:o}of e)t.add(o),r.length&&n.push(r);return ms([[],O2(),t.has(vr.NoHttpTransferCache)||i?[]:MH({}),n])}var W=function(e){return e[e.State=0]="State",e[e.Transition=1]="Transition",e[e.Sequence=2]="Sequence",e[e.Group=3]="Group",e[e.Animate=4]="Animate",e[e.Keyframes=5]="Keyframes",e[e.Style=6]="Style",e[e.Trigger=7]="Trigger",e[e.Reference=8]="Reference",e[e.AnimateChild=9]="AnimateChild",e[e.AnimateRef=10]="AnimateRef",e[e.Query=11]="Query",e[e.Stagger=12]="Stagger",e}(W||{});const hi="*";function wx(e,n){return{type:W.Trigger,name:e,definitions:n,options:{}}}function Rp(e,n=null){return{type:W.Animate,styles:n,timings:e}}function Wo(e){return{type:W.Style,styles:e,offset:null}}function nU(e,n,t){return{type:W.State,name:e,styles:n,options:t}}function Pp(e,n,t=null){return{type:W.Transition,expr:e,animation:n,options:t}}class Na{constructor(n=0,t=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=n+t}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const t="start"==n?this._onStartFns:this._onDoneFns;t.forEach(i=>i()),t.length=0}}class Cx{constructor(n){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=n;let t=0,i=0,r=0;const o=this.players.length;0==o?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++t==o&&this._onFinish()}),s.onDestroy(()=>{++i==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const t=n*this.totalTime;this.players.forEach(i=>{const r=i.totalTime?Math.min(1,t/i.totalTime):1;i.setPosition(r)})}getPosition(){const n=this.players.reduce((t,i)=>null===t||i.totalTime>t.totalTime?i:t,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const t="start"==n?this._onStartFns:this._onDoneFns;t.forEach(i=>i()),t.length=0}}function Ex(e){return new w(3e3,!1)}function Ai(e){switch(e.length){case 0:return new Na;case 1:return e[0];default:return new Cx(e)}}function Dx(e,n,t=new Map,i=new Map){const r=[],o=[];let s=-1,a=null;if(n.forEach(c=>{const l=c.get("offset"),d=l==s,u=d&&a||new Map;c.forEach((h,f)=>{let m=f,p=h;if("offset"!==f)switch(m=e.normalizePropertyName(m,r),p){case"!":p=t.get(f);break;case hi:p=i.get(f);break;default:p=e.normalizeStyleValue(f,m,p,r)}u.set(m,p)}),d||o.push(u),a=u,s=l}),r.length)throw function SU(){return new w(3502,!1)}();return o}function Vp(e,n,t,i){switch(n){case"start":e.onStart(()=>i(t&&Bp(t,"start",e)));break;case"done":e.onDone(()=>i(t&&Bp(t,"done",e)));break;case"destroy":e.onDestroy(()=>i(t&&Bp(t,"destroy",e)))}}function Bp(e,n,t){const o=jp(e.element,e.triggerName,e.fromState,e.toState,n||e.phaseName,t.totalTime??e.totalTime,!!t.disabled),s=e._data;return null!=s&&(o._data=s),o}function jp(e,n,t,i,r="",o=0,s){return{element:e,triggerName:n,fromState:t,toState:i,phaseName:r,totalTime:o,disabled:!!s}}function nn(e,n,t){let i=e.get(n);return i||e.set(n,i=t),i}function xx(e){const n=e.indexOf(":");return[e.substring(1,n),e.slice(n+1)]}const HU=typeof document>"u"?null:document.documentElement;function Hp(e){const n=e.parentNode||e.host||null;return n===HU?null:n}let yr=null,Mx=!1;function Ix(e,n){for(;n;){if(n===e)return!0;n=Hp(n)}return!1}function Tx(e,n,t){if(t)return Array.from(e.querySelectorAll(n));const i=e.querySelector(n);return i?[i]:[]}let Up=(()=>{class e{validateStyleProperty(t){return function zU(e){yr||(yr=function $U(){return typeof document<"u"?document.body:null}()||{},Mx=!!yr.style&&"WebkitAppearance"in yr.style);let n=!0;return yr.style&&!function UU(e){return"ebkit"==e.substring(1,6)}(e)&&(n=e in yr.style,!n&&Mx&&(n="Webkit"+e.charAt(0).toUpperCase()+e.slice(1)in yr.style)),n}(t)}containsElement(t,i){return Ix(t,i)}getParentElement(t){return Hp(t)}query(t,i,r){return Tx(t,i,r)}computeStyle(t,i,r){return r||""}animate(t,i,r,o,s,a=[],c){return new Na(r,o)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();class zp{static{this.NOOP=new Up}}class $p{}const qU=1e3,Gp="ng-enter",Td="ng-leave",Sd="ng-trigger",kd=".ng-trigger",kx="ng-animating",qp=".ng-animating";function fi(e){if("number"==typeof e)return e;const n=e.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:Wp(parseFloat(n[1]),n[2])}function Wp(e,n){return"s"===n?e*qU:e}function Ad(e,n,t){return e.hasOwnProperty("duration")?e:function ZU(e,n,t){let r,o=0,s="";if("string"==typeof e){const a=e.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===a)return n.push(Ex()),{duration:0,delay:0,easing:""};r=Wp(parseFloat(a[1]),a[2]);const c=a[3];null!=c&&(o=Wp(parseFloat(c),a[4]));const l=a[5];l&&(s=l)}else r=e;if(!t){let a=!1,c=n.length;r<0&&(n.push(function aU(){return new w(3100,!1)}()),a=!0),o<0&&(n.push(function cU(){return new w(3101,!1)}()),a=!0),a&&n.splice(c,0,Ex())}return{duration:r,delay:o,easing:s}}(e,n,t)}function Zn(e,n,t){n.forEach((i,r)=>{const o=Kp(r);t&&!t.has(r)&&t.set(r,e.style[o]),e.style[o]=i})}function wr(e,n){n.forEach((t,i)=>{const r=Kp(i);e.style[r]=""})}function Oa(e){return Array.isArray(e)?1==e.length?e[0]:function tU(e,n=null){return{type:W.Sequence,steps:e,options:n}}(e):e}const Zp=new RegExp("{{\\s*(.+?)\\s*}}","g");function Nx(e){let n=[];if("string"==typeof e){let t;for(;t=Zp.exec(e);)n.push(t[1]);Zp.lastIndex=0}return n}function Fa(e,n,t){const i=`${e}`,r=i.replace(Zp,(o,s)=>{let a=n[s];return null==a&&(t.push(function dU(){return new w(3003,!1)}()),a=""),a.toString()});return r==i?e:r}const QU=/-+([a-z0-9])/g;function Kp(e){return e.replace(QU,(...n)=>n[1].toUpperCase())}function rn(e,n,t){switch(n.type){case W.Trigger:return e.visitTrigger(n,t);case W.State:return e.visitState(n,t);case W.Transition:return e.visitTransition(n,t);case W.Sequence:return e.visitSequence(n,t);case W.Group:return e.visitGroup(n,t);case W.Animate:return e.visitAnimate(n,t);case W.Keyframes:return e.visitKeyframes(n,t);case W.Style:return e.visitStyle(n,t);case W.Reference:return e.visitReference(n,t);case W.AnimateChild:return e.visitAnimateChild(n,t);case W.AnimateRef:return e.visitAnimateRef(n,t);case W.Query:return e.visitQuery(n,t);case W.Stagger:return e.visitStagger(n,t);default:throw function uU(){return new w(3004,!1)}()}}function Yp(e,n){return window.getComputedStyle(e)[n]}const e3=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class Ox extends $p{normalizePropertyName(n,t){return Kp(n)}normalizeStyleValue(n,t,i,r){let o="";const s=i.toString().trim();if(e3.has(t)&&0!==i&&"0"!==i)if("number"==typeof i)o="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&r.push(function hU(){return new w(3005,!1)}())}return s+o}}const Nd="*";const Od=new Set(["true","1"]),Fd=new Set(["false","0"]);function Fx(e,n){const t=Od.has(e)||Fd.has(e),i=Od.has(n)||Fd.has(n);return(r,o)=>{let s=e==Nd||e==r,a=n==Nd||n==o;return!s&&t&&"boolean"==typeof r&&(s=r?Od.has(e):Fd.has(e)),!a&&i&&"boolean"==typeof o&&(a=o?Od.has(n):Fd.has(n)),s&&a}}const r3=new RegExp("s*:selfs*,?","g");function Qp(e,n,t,i){return new o3(e).build(n,t,i)}class o3{constructor(n){this._driver=n}build(n,t,i){const r=new c3(t);return this._resetContextStyleTimingState(r),rn(this,Oa(n),r)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,t){let i=t.queryCount=0,r=t.depCount=0;const o=[],s=[];return"@"==n.name.charAt(0)&&t.errors.push(function fU(){return new w(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(t),a.type==W.State){const c=a,l=c.name;l.toString().split(/\s*,\s*/).forEach(d=>{c.name=d,o.push(this.visitState(c,t))}),c.name=l}else if(a.type==W.Transition){const c=this.visitTransition(a,t);i+=c.queryCount,r+=c.depCount,s.push(c)}else t.errors.push(function mU(){return new w(3007,!1)}())}),{type:W.Trigger,name:n.name,states:o,transitions:s,queryCount:i,depCount:r,options:null}}visitState(n,t){const i=this.visitStyle(n.styles,t),r=n.options&&n.options.params||null;if(i.containsDynamicStyles){const o=new Set,s=r||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(c=>{Nx(c).forEach(l=>{s.hasOwnProperty(l)||o.add(l)})})}),o.size&&t.errors.push(function pU(){return new w(3008,!1)}(0,o.values()))}return{type:W.State,name:n.name,style:i,options:r?{params:r}:null}}visitTransition(n,t){t.queryCount=0,t.depCount=0;const i=rn(this,Oa(n.animation),t),r=function t3(e,n){const t=[];return"string"==typeof e?e.split(/\s*,\s*/).forEach(i=>function n3(e,n,t){if(":"==e[0]){const c=function i3(e,n){switch(e){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,i)=>parseFloat(i)>parseFloat(t);case":decrement":return(t,i)=>parseFloat(i) *"}}(e,t);if("function"==typeof c)return void n.push(c);e=c}const i=e.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return t.push(function DU(){return new w(3015,!1)}()),n;const r=i[1],o=i[2],s=i[3];n.push(Fx(r,s)),"<"==o[0]&&(r!=Nd||s!=Nd)&&n.push(Fx(s,r))}(i,t,n)):t.push(e),t}(n.expr,t.errors);return{type:W.Transition,matchers:r,animation:i,queryCount:t.queryCount,depCount:t.depCount,options:Cr(n.options)}}visitSequence(n,t){return{type:W.Sequence,steps:n.steps.map(i=>rn(this,i,t)),options:Cr(n.options)}}visitGroup(n,t){const i=t.currentTime;let r=0;const o=n.steps.map(s=>{t.currentTime=i;const a=rn(this,s,t);return r=Math.max(r,t.currentTime),a});return t.currentTime=r,{type:W.Group,steps:o,options:Cr(n.options)}}visitAnimate(n,t){const i=function d3(e,n){if(e.hasOwnProperty("duration"))return e;if("number"==typeof e)return Xp(Ad(e,n).duration,0,"");const t=e;if(t.split(/\s+/).some(o=>"{"==o.charAt(0)&&"{"==o.charAt(1))){const o=Xp(0,0,"");return o.dynamic=!0,o.strValue=t,o}const r=Ad(t,n);return Xp(r.duration,r.delay,r.easing)}(n.timings,t.errors);t.currentAnimateTimings=i;let r,o=n.styles?n.styles:Wo({});if(o.type==W.Keyframes)r=this.visitKeyframes(o,t);else{let s=n.styles,a=!1;if(!s){a=!0;const l={};i.easing&&(l.easing=i.easing),s=Wo(l)}t.currentTime+=i.duration+i.delay;const c=this.visitStyle(s,t);c.isEmptyStep=a,r=c}return t.currentAnimateTimings=null,{type:W.Animate,timings:i,style:r,options:null}}visitStyle(n,t){const i=this._makeStyleAst(n,t);return this._validateStyleAst(i,t),i}_makeStyleAst(n,t){const i=[],r=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of r)"string"==typeof a?a===hi?i.push(a):t.errors.push(new w(3002,!1)):i.push(new Map(Object.entries(a)));let o=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o))for(let c of a.values())if(c.toString().indexOf("{{")>=0){o=!0;break}}),{type:W.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(n,t){const i=t.currentAnimateTimings;let r=t.currentTime,o=t.currentTime;i&&o>0&&(o-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,c)=>{const l=t.collectedStyles.get(t.currentQuerySelector),d=l.get(c);let u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(t.errors.push(function bU(){return new w(3010,!1)}()),u=!1),o=d.startTime),u&&l.set(c,{startTime:o,endTime:r}),t.options&&function YU(e,n,t){const i=n.params||{},r=Nx(e);r.length&&r.forEach(o=>{i.hasOwnProperty(o)||t.push(function lU(){return new w(3001,!1)}())})}(a,t.options,t.errors)})})}visitKeyframes(n,t){const i={type:W.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(function _U(){return new w(3011,!1)}()),i;let o=0;const s=[];let a=!1,c=!1,l=0;const d=n.steps.map(E=>{const g=this._makeStyleAst(E,t);let S=null!=g.offset?g.offset:function l3(e){if("string"==typeof e)return null;let n=null;if(Array.isArray(e))e.forEach(t=>{if(t instanceof Map&&t.has("offset")){const i=t;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(e instanceof Map&&e.has("offset")){const t=e;n=parseFloat(t.get("offset")),t.delete("offset")}return n}(g.styles),A=0;return null!=S&&(o++,A=g.offset=S),c=c||A<0||A>1,a=a||A0&&o{const S=h>0?g==f?1:h*g:s[g],A=S*b;t.currentTime=m+p.delay+A,p.duration=A,this._validateStyleAst(E,t),E.offset=S,i.styles.push(E)}),i}visitReference(n,t){return{type:W.Reference,animation:rn(this,Oa(n.animation),t),options:Cr(n.options)}}visitAnimateChild(n,t){return t.depCount++,{type:W.AnimateChild,options:Cr(n.options)}}visitAnimateRef(n,t){return{type:W.AnimateRef,animation:this.visitReference(n.animation,t),options:Cr(n.options)}}visitQuery(n,t){const i=t.currentQuerySelector,r=n.options||{};t.queryCount++,t.currentQuery=n;const[o,s]=function s3(e){const n=!!e.split(/\s*,\s*/).find(t=>":self"==t);return n&&(e=e.replace(r3,"")),e=e.replace(/@\*/g,kd).replace(/@\w+/g,t=>kd+"-"+t.slice(1)).replace(/:animating/g,qp),[e,n]}(n.selector);t.currentQuerySelector=i.length?i+" "+o:o,nn(t.collectedStyles,t.currentQuerySelector,new Map);const a=rn(this,Oa(n.animation),t);return t.currentQuery=null,t.currentQuerySelector=i,{type:W.Query,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Cr(n.options)}}visitStagger(n,t){t.currentQuery||t.errors.push(function CU(){return new w(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:Ad(n.timings,t.errors,!0);return{type:W.Stagger,animation:rn(this,Oa(n.animation),t),timings:i,options:null}}}class c3{constructor(n){this.errors=n,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function Cr(e){return e?(e={...e}).params&&(e.params=function a3(e){return e?{...e}:null}(e.params)):e={},e}function Xp(e,n,t){return{duration:e,delay:n,easing:t}}function Jp(e,n,t,i,r,o,s=null,a=!1){return{type:1,element:e,keyframes:n,preStyleProps:t,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}class Rd{constructor(){this._map=new Map}get(n){return this._map.get(n)||[]}append(n,t){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...t)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const f3=new RegExp(":enter","g"),p3=new RegExp(":leave","g");function eg(e,n,t,i,r,o=new Map,s=new Map,a,c,l=[]){return(new g3).buildKeyframes(e,n,t,i,r,o,s,a,c,l)}class g3{buildKeyframes(n,t,i,r,o,s,a,c,l,d=[]){l=l||new Rd;const u=new tg(n,t,l,r,o,d,[]);u.options=c;const h=c.delay?fi(c.delay):0;u.currentTimeline.delayNextStep(h),u.currentTimeline.setStyles([s],null,u.errors,c),rn(this,i,u);const f=u.timelines.filter(m=>m.containsAnimation());if(f.length&&a.size){let m;for(let p=f.length-1;p>=0;p--){const b=f[p];if(b.element===t){m=b;break}}m&&!m.allowOnlyTimelineStyles()&&m.setStyles([a],null,u.errors,c)}return f.length?f.map(m=>m.buildKeyframes()):[Jp(t,[],[],[],0,h,"",!1)]}visitTrigger(n,t){}visitState(n,t){}visitTransition(n,t){}visitAnimateChild(n,t){const i=t.subInstructions.get(t.element);if(i){const r=t.createSubContext(n.options),o=t.currentTimeline.currentTime,s=this._visitSubInstructions(i,r,r.options);o!=s&&t.transformIntoNewTimeline(s)}t.previousNode=n}visitAnimateRef(n,t){const i=t.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],t,i),this.visitReference(n.animation,i),t.transformIntoNewTimeline(i.currentTimeline.currentTime),t.previousNode=n}_applyAnimationRefDelays(n,t,i){for(const r of n){const o=r?.delay;if(o){const s="number"==typeof o?o:fi(Fa(o,r?.params??{},t.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,t,i){let o=t.currentTimeline.currentTime;const s=null!=i.duration?fi(i.duration):null,a=null!=i.delay?fi(i.delay):null;return 0!==s&&n.forEach(c=>{const l=t.appendInstructionToTimeline(c,s,a);o=Math.max(o,l.duration+l.delay)}),o}visitReference(n,t){t.updateOptions(n.options,!0),rn(this,n.animation,t),t.previousNode=n}visitSequence(n,t){const i=t.subContextCount;let r=t;const o=n.options;if(o&&(o.params||o.delay)&&(r=t.createSubContext(o),r.transformIntoNewTimeline(),null!=o.delay)){r.previousNode.type==W.Style&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Pd);const s=fi(o.delay);r.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>rn(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),t.previousNode=n}visitGroup(n,t){const i=[];let r=t.currentTimeline.currentTime;const o=n.options&&n.options.delay?fi(n.options.delay):0;n.steps.forEach(s=>{const a=t.createSubContext(n.options);o&&a.delayNextStep(o),rn(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>t.currentTimeline.mergeTimelineCollectedStyles(s)),t.transformIntoNewTimeline(r),t.previousNode=n}_visitTiming(n,t){if(n.dynamic){const i=n.strValue;return Ad(t.params?Fa(i,t.params,t.errors):i,t.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,t){const i=t.currentAnimateTimings=this._visitTiming(n.timings,t),r=t.currentTimeline;i.delay&&(t.incrementTime(i.delay),r.snapshotCurrentStyles());const o=n.style;o.type==W.Keyframes?this.visitKeyframes(o,t):(t.incrementTime(i.duration),this.visitStyle(o,t),r.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=n}visitStyle(n,t){const i=t.currentTimeline,r=t.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();const o=r&&r.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(o):i.setStyles(n.styles,o,t.errors,t.options),t.previousNode=n}visitKeyframes(n,t){const i=t.currentAnimateTimings,r=t.currentTimeline.duration,o=i.duration,a=t.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(c=>{a.forwardTime((c.offset||0)*o),a.setStyles(c.styles,c.easing,t.errors,t.options),a.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(a),t.transformIntoNewTimeline(r+o),t.previousNode=n}visitQuery(n,t){const i=t.currentTimeline.currentTime,r=n.options||{},o=r.delay?fi(r.delay):0;o&&(t.previousNode.type===W.Style||0==i&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=Pd);let s=i;const a=t.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!r.optional,t.errors);t.currentQueryTotal=a.length;let c=null;a.forEach((l,d)=>{t.currentQueryIndex=d;const u=t.createSubContext(n.options,l);o&&u.delayNextStep(o),l===t.element&&(c=u.currentTimeline),rn(this,n.animation,u),u.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,u.currentTimeline.currentTime)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(s),c&&(t.currentTimeline.mergeTimelineCollectedStyles(c),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=n}visitStagger(n,t){const i=t.parentContext,r=t.currentTimeline,o=n.timings,s=Math.abs(o.duration),a=s*(t.currentQueryTotal-1);let c=s*t.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":c=a-c;break;case"full":c=i.currentStaggerTime}const d=t.currentTimeline;c&&d.delayNextStep(c);const u=d.currentTime;rn(this,n.animation,t),t.previousNode=n,i.currentStaggerTime=r.currentTime-u+(r.startTime-i.currentTimeline.startTime)}}const Pd={};class tg{constructor(n,t,i,r,o,s,a,c){this._driver=n,this.element=t,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Pd,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=c||new Ld(this._driver,t,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,t){if(!n)return;const i=n;let r=this.options;null!=i.duration&&(r.duration=fi(i.duration)),null!=i.delay&&(r.delay=fi(i.delay));const o=i.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!t||!s.hasOwnProperty(a))&&(s[a]=Fa(o[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const t=this.options.params;if(t){const i=n.params={};Object.keys(t).forEach(r=>{i[r]=t[r]})}}return n}createSubContext(n=null,t,i){const r=t||this.element,o=new tg(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(n),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(n){return this.previousNode=Pd,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,t,i){const r={duration:t??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},o=new b3(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,r,n.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,t,i,r,o,s){let a=[];if(r&&a.push(this.element),n.length>0){n=(n=n.replace(f3,"."+this._enterClassName)).replace(p3,"."+this._leaveClassName);let l=this._driver.query(this.element,n,1!=i);0!==i&&(l=i<0?l.slice(l.length+i,l.length):l.slice(0,i)),a.push(...l)}return!o&&0==a.length&&s.push(function EU(){return new w(3014,!1)}()),a}}class Ld{constructor(n,t,i,r){this._driver=n,this.element=t,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const t=1===this._keyframes.size&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+n),t&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,t){return this.applyStylesToKeyframe(),new Ld(this._driver,n,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,t){this._localTimelineStyles.set(n,t),this._globalTimelineStyles.set(n,t),this._styleSummary.set(n,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[t,i]of this._globalTimelineStyles)this._backFill.set(t,i||hi),this._currentKeyframe.set(t,hi);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,t,i,r){t&&this._previousKeyframe.set("easing",t);const o=r&&r.params||{},s=function _3(e,n){const t=new Map;let i;return e.forEach(r=>{if("*"===r){i??=n.keys();for(let o of i)t.set(o,hi)}else for(let[o,s]of r)t.set(o,s)}),t}(n,this._globalTimelineStyles);for(let[a,c]of s){const l=Fa(c,o,i);this._pendingStyles.set(a,l),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??hi),this._updateStyle(a,l)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,t)=>{this._currentKeyframe.set(t,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,n)}))}snapshotCurrentStyles(){for(let[n,t]of this._localTimelineStyles)this._pendingStyles.set(n,t),this._updateStyle(n,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let t in this._currentKeyframe)n.push(t);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((t,i)=>{const r=this._styleSummary.get(i);(!r||t.time>r.time)&&this._updateStyle(i,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,t=new Set,i=1===this._keyframes.size&&0===this.duration;let r=[];this._keyframes.forEach((a,c)=>{const l=new Map([...this._backFill,...a]);l.forEach((d,u)=>{"!"===d?n.add(u):d===hi&&t.add(u)}),i||l.set("offset",c/this.duration),r.push(l)});const o=[...n.values()],s=[...t.values()];if(i){const a=r[0],c=new Map(a);a.set("offset",0),c.set("offset",1),r=[a,c]}return Jp(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}}class b3 extends Ld{constructor(n,t,i,r,o,s,a=!1){super(n,t,s.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:t,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&t){const o=[],s=i+t,a=t/s,c=new Map(n[0]);c.set("offset",0),o.push(c);const l=new Map(n[0]);l.set("offset",Lx(a)),o.push(l);const d=n.length-1;for(let u=1;u<=d;u++){let h=new Map(n[u]);const f=h.get("offset");h.set("offset",Lx((t+f*i)/s)),o.push(h)}i=s,t=0,r="",n=o}return Jp(this.element,n,this.preStyleProps,this.postStyleProps,i,t,r,!0)}}function Lx(e,n=3){const t=Math.pow(10,n-1);return Math.round(e*t)/t}function Vx(e,n,t,i,r,o,s,a,c,l,d,u,h){return{type:0,element:e,triggerName:n,isRemovalTransition:r,fromState:t,fromStyles:o,toState:i,toStyles:s,timelines:a,queriedElements:c,preStyleProps:l,postStyleProps:d,totalTime:u,errors:h}}const ng={};class Bx{constructor(n,t,i){this._triggerName=n,this.ast=t,this._stateStyles=i}match(n,t,i,r){return function v3(e,n,t,i,r){return e.some(o=>o(n,t,i,r))}(this.ast.matchers,n,t,i,r)}buildStyles(n,t,i){let r=this._stateStyles.get("*");return void 0!==n&&(r=this._stateStyles.get(n?.toString())||r),r?r.buildStyles(t,i):new Map}build(n,t,i,r,o,s,a,c,l,d){const u=[],h=this.ast.options&&this.ast.options.params||ng,m=this.buildStyles(i,a&&a.params||ng,u),p=c&&c.params||ng,b=this.buildStyles(r,p,u),E=new Set,g=new Map,S=new Map,A="void"===r,X={params:jx(p,h),delay:this.ast.options?.delay},ie=d?[]:eg(n,t,this.ast.animation,o,s,m,b,X,l,u);let se=0;return ie.forEach(Be=>{se=Math.max(Be.duration+Be.delay,se)}),u.length?Vx(t,this._triggerName,i,r,A,m,b,[],[],g,S,se,u):(ie.forEach(Be=>{const Kn=Be.element,is=nn(g,Kn,new Set);Be.preStyleProps.forEach(kr=>is.add(kr));const vT=nn(S,Kn,new Set);Be.postStyleProps.forEach(kr=>vT.add(kr)),Kn!==t&&E.add(Kn)}),Vx(t,this._triggerName,i,r,A,m,b,ie,[...E.values()],g,S,se))}}function jx(e,n){const t={...n};return Object.entries(e).forEach(([i,r])=>{null!=r&&(t[i]=r)}),t}class y3{constructor(n,t,i){this.styles=n,this.defaultParams=t,this.normalizer=i}buildStyles(n,t){const i=new Map,r=jx(n,this.defaultParams);return this.styles.styles.forEach(o=>{"string"!=typeof o&&o.forEach((s,a)=>{s&&(s=Fa(s,r,t));const c=this.normalizer.normalizePropertyName(a,t);s=this.normalizer.normalizeStyleValue(a,c,s,t),i.set(a,s)})}),i}}class C3{constructor(n,t,i){this.name=n,this.ast=t,this._normalizer=i,this.transitionFactories=[],this.states=new Map,t.states.forEach(r=>{this.states.set(r.name,new y3(r.style,r.options&&r.options.params||{},i))}),Hx(this.states,"true","1"),Hx(this.states,"false","0"),t.transitions.forEach(r=>{this.transitionFactories.push(new Bx(n,r,this.states))}),this.fallbackTransition=function E3(e,n){return new Bx(e,{type:W.Transition,animation:{type:W.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,t,i,r){return this.transitionFactories.find(s=>s.match(n,t,i,r))||null}matchStyles(n,t,i){return this.fallbackTransition.buildStyles(n,t,i)}}function Hx(e,n,t){e.has(n)?e.has(t)||e.set(t,e.get(n)):e.has(t)&&e.set(n,e.get(t))}const D3=new Rd;class x3{constructor(n,t,i){this.bodyNode=n,this._driver=t,this._normalizer=i,this._animations=new Map,this._playersById=new Map,this.players=[]}register(n,t){const i=[],o=Qp(this._driver,t,i,[]);if(i.length)throw function kU(){return new w(3503,!1)}();this._animations.set(n,o)}_buildPlayer(n,t,i){const r=n.element,o=Dx(this._normalizer,n.keyframes,t,i);return this._driver.animate(r,o,n.duration,n.delay,n.easing,[],!0)}create(n,t,i={}){const r=[],o=this._animations.get(n);let s;const a=new Map;if(o?(s=eg(this._driver,t,o,Gp,Td,new Map,new Map,i,D3,r),s.forEach(d=>{const u=nn(a,d.element,new Map);d.postStyleProps.forEach(h=>u.set(h,null))})):(r.push(function AU(){return new w(3300,!1)}()),s=[]),r.length)throw function NU(){return new w(3504,!1)}();a.forEach((d,u)=>{d.forEach((h,f)=>{d.set(f,this._driver.computeStyle(u,f,hi))})});const l=Ai(s.map(d=>{const u=a.get(d.element);return this._buildPlayer(d,new Map,u)}));return this._playersById.set(n,l),l.onDestroy(()=>this.destroy(n)),this.players.push(l),l}destroy(n){const t=this._getPlayer(n);t.destroy(),this._playersById.delete(n);const i=this.players.indexOf(t);i>=0&&this.players.splice(i,1)}_getPlayer(n){const t=this._playersById.get(n);if(!t)throw function OU(){return new w(3301,!1)}();return t}listen(n,t,i,r){const o=jp(t,"","","");return Vp(this._getPlayer(n),i,o,r),()=>{}}command(n,t,i,r){if("register"==i)return void this.register(n,r[0]);if("create"==i)return void this.create(n,t,r[0]||{});const o=this._getPlayer(n);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(n)}}}const Ux="ng-animate-queued",ig="ng-animate-disabled",k3=[],zx={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},A3={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Nn="__ng_removed";class rg{get params(){return this.options.params}constructor(n,t=""){this.namespaceId=t;const i=n&&n.hasOwnProperty("value");if(this.value=function R3(e){return e??null}(i?n.value:n),i){const{value:o,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const t=n.params;if(t){const i=this.options.params;Object.keys(t).forEach(r=>{null==i[r]&&(i[r]=t[r])})}}}const Ra="void",og=new rg(Ra);class N3{constructor(n,t,i){this.id=n,this.hostElement=t,this._engine=i,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+n,mn(t,this._hostClassName)}listen(n,t,i,r){if(!this._triggers.has(t))throw function FU(){return new w(3302,!1)}();if(null==i||0==i.length)throw function RU(){return new w(3303,!1)}();if(!function P3(e){return"start"==e||"done"==e}(i))throw function PU(){return new w(3400,!1)}();const o=nn(this._elementListeners,n,[]),s={name:t,phase:i,callback:r};o.push(s);const a=nn(this._engine.statesByElement,n,new Map);return a.has(t)||(mn(n,Sd),mn(n,Sd+"-"+t),a.set(t,og)),()=>{this._engine.afterFlush(()=>{const c=o.indexOf(s);c>=0&&o.splice(c,1),this._triggers.has(t)||a.delete(t)})}}register(n,t){return!this._triggers.has(n)&&(this._triggers.set(n,t),!0)}_getTrigger(n){const t=this._triggers.get(n);if(!t)throw function LU(){return new w(3401,!1)}();return t}trigger(n,t,i,r=!0){const o=this._getTrigger(t),s=new sg(this.id,t,n);let a=this._engine.statesByElement.get(n);a||(mn(n,Sd),mn(n,Sd+"-"+t),this._engine.statesByElement.set(n,a=new Map));let c=a.get(t);const l=new rg(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&c&&l.absorbOptions(c.options),a.set(t,l),c||(c=og),l.value!==Ra&&c.value===l.value){if(!function B3(e,n){const t=Object.keys(e),i=Object.keys(n);if(t.length!=i.length)return!1;for(let r=0;r{wr(n,b),Zn(n,E)})}return}const h=nn(this._engine.playersByElement,n,[]);h.forEach(p=>{p.namespaceId==this.id&&p.triggerName==t&&p.queued&&p.destroy()});let f=o.matchTransition(c.value,l.value,n,l.params),m=!1;if(!f){if(!r)return;f=o.fallbackTransition,m=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:t,transition:f,fromState:c,toState:l,player:s,isFallbackTransition:m}),m||(mn(n,Ux),s.onStart(()=>{Zo(n,Ux)})),s.onDone(()=>{let p=this.players.indexOf(s);p>=0&&this.players.splice(p,1);const b=this._engine.playersByElement.get(n);if(b){let E=b.indexOf(s);E>=0&&b.splice(E,1)}}),this.players.push(s),h.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(t=>t.delete(n)),this._elementListeners.forEach((t,i)=>{this._elementListeners.set(i,t.filter(r=>r.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const t=this._engine.playersByElement.get(n);t&&(t.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,t){const i=this._engine.driver.query(n,kd,!0);i.forEach(r=>{if(r[Nn])return;const o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,t,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(n,t,i,r){const o=this._engine.statesByElement.get(n),s=new Map;if(o){const a=[];if(o.forEach((c,l)=>{if(s.set(l,c.value),this._triggers.has(l)){const d=this.trigger(n,l,Ra,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,t,s),i&&Ai(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const t=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(t&&i){const r=new Set;t.forEach(o=>{const s=o.name;if(r.has(s))return;r.add(s);const c=this._triggers.get(s).fallbackTransition,l=i.get(s)||og,d=new rg(Ra),u=new sg(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:c,fromState:l,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(n,t){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,t),this.triggerLeaveAnimation(n,t,!0))return;let r=!1;if(i.totalAnimations){const o=i.players.length?i.playersByQueriedElement.get(n):[];if(o&&o.length)r=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(n),r)i.markElementAsRemoved(this.id,n,!1,t);else{const o=n[Nn];(!o||o===zx)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,t))}}insertNode(n,t){mn(n,this._hostClassName)}drainQueuedTransitions(n){const t=[];return this._queue.forEach(i=>{const r=i.player;if(r.destroyed)return;const o=i.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==i.triggerName){const c=jp(o,i.triggerName,i.fromState.value,i.toState.value);c._data=n,Vp(i.player,a.phase,c,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):t.push(i)}),this._queue=[],t.sort((i,r)=>{const o=i.transition.ast.depCount,s=r.transition.ast.depCount;return 0==o||0==s?o-s:this._engine.driver.containsElement(i.element,r.element)?1:-1})}destroy(n){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class O3{_onRemovalComplete(n,t){this.onRemovalComplete(n,t)}constructor(n,t,i){this.bodyNode=n,this.driver=t,this._normalizer=i,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(r,o)=>{}}get queuedPlayers(){const n=[];return this._namespaceList.forEach(t=>{t.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,t){const i=new N3(n,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(i,t):(this.newHostElements.set(t,i),this.collectEnterElement(t)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,t){const i=this._namespaceList,r=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(t);for(;a;){const c=r.get(a);if(c){const l=i.indexOf(c);i.splice(l+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return r.set(t,n),n}register(n,t){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,t)),i}registerTrigger(n,t,i){let r=this._namespaceLookup[n];r&&r.register(t,i)&&this.totalAnimations++}destroy(n,t){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const r=this._namespaceList.indexOf(i);r>=0&&this._namespaceList.splice(r,1),i.destroy(t),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const t=new Set,i=this.statesByElement.get(n);if(i)for(let r of i.values())if(r.namespaceId){const o=this._fetchNamespace(r.namespaceId);o&&t.add(o)}return t}trigger(n,t,i,r){if(Vd(t)){const o=this._fetchNamespace(n);if(o)return o.trigger(t,i,r),!0}return!1}insertNode(n,t,i,r){if(!Vd(t))return;const o=t[Nn];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;const s=this.collectedLeaveElements.indexOf(t);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(t,i)}r&&this.collectEnterElement(t)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,t){t?this.disabledNodes.has(n)||(this.disabledNodes.add(n),mn(n,ig)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Zo(n,ig))}removeNode(n,t,i){if(Vd(t)){const r=n?this._fetchNamespace(n):null;r?r.removeNode(t,i):this.markElementAsRemoved(n,t,!1,i);const o=this.namespacesByHostElement.get(t);o&&o.id!==n&&o.removeNode(t,i)}else this._onRemovalComplete(t,i)}markElementAsRemoved(n,t,i,r,o){this.collectedLeaveElements.push(t),t[Nn]={namespaceId:n,setForRemoval:r,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:o}}listen(n,t,i,r,o){return Vd(t)?this._fetchNamespace(n).listen(t,i,r,o):()=>{}}_buildInstruction(n,t,i,r,o){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,r,n.fromState.options,n.toState.options,t,o)}destroyInnerAnimations(n){let t=this.driver.query(n,kd,!0);t.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(t=this.driver.query(n,qp,!0),t.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const t=this.playersByElement.get(n);t&&t.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const t=this.playersByQueriedElement.get(n);t&&t.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Ai(this.players).onDone(()=>n());n()})}processLeaveNode(n){const t=n[Nn];if(t&&t.setForRemoval){if(n[Nn]=zx,t.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(t.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,t.setForRemoval)}n.classList?.contains(ig)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,r)=>this._balanceNamespaceList(i,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],t.length?Ai(t).onDone(()=>{i.forEach(r=>r())}):i.forEach(r=>r())}}reportError(n){throw function VU(){return new w(3402,!1)}()}_flushAnimations(n,t){const i=new Rd,r=[],o=new Map,s=[],a=new Map,c=new Map,l=new Map,d=new Set;this.disabledNodes.forEach(F=>{d.add(F);const H=this.driver.query(F,".ng-animate-queued",!0);for(let $=0;${const $=Gp+p++;m.set(H,$),F.forEach(le=>mn(le,$))});const b=[],E=new Set,g=new Set;for(let F=0;FE.add(le)):g.add(H))}const S=new Map,A=qx(h,Array.from(E));A.forEach((F,H)=>{const $=Td+p++;S.set(H,$),F.forEach(le=>mn(le,$))}),n.push(()=>{f.forEach((F,H)=>{const $=m.get(H);F.forEach(le=>Zo(le,$))}),A.forEach((F,H)=>{const $=S.get(H);F.forEach(le=>Zo(le,$))}),b.forEach(F=>{this.processLeaveNode(F)})});const X=[],ie=[];for(let F=this._namespaceList.length-1;F>=0;F--)this._namespaceList[F].drainQueuedTransitions(t).forEach($=>{const le=$.player,ut=$.element;if(X.push(le),this.collectedEnterElements.length){const It=ut[Nn];if(It&&It.setForMove){if(It.previousTriggersValues&&It.previousTriggersValues.has($.triggerName)){const Ar=It.previousTriggersValues.get($.triggerName),bn=this.statesByElement.get($.element);if(bn&&bn.has($.triggerName)){const du=bn.get($.triggerName);du.value=Ar,bn.set($.triggerName,du)}}return void le.destroy()}}const Yn=!u||!this.driver.containsElement(u,ut),on=S.get(ut),Pi=m.get(ut),Pe=this._buildInstruction($,i,Pi,on,Yn);if(Pe.errors&&Pe.errors.length)return void ie.push(Pe);if(Yn)return le.onStart(()=>wr(ut,Pe.fromStyles)),le.onDestroy(()=>Zn(ut,Pe.toStyles)),void r.push(le);if($.isFallbackTransition)return le.onStart(()=>wr(ut,Pe.fromStyles)),le.onDestroy(()=>Zn(ut,Pe.toStyles)),void r.push(le);const CT=[];Pe.timelines.forEach(It=>{It.stretchStartingKeyframe=!0,this.disabledNodes.has(It.element)||CT.push(It)}),Pe.timelines=CT,i.append(ut,Pe.timelines),s.push({instruction:Pe,player:le,element:ut}),Pe.queriedElements.forEach(It=>nn(a,It,[]).push(le)),Pe.preStyleProps.forEach((It,Ar)=>{if(It.size){let bn=c.get(Ar);bn||c.set(Ar,bn=new Set),It.forEach((du,$g)=>bn.add($g))}}),Pe.postStyleProps.forEach((It,Ar)=>{let bn=l.get(Ar);bn||l.set(Ar,bn=new Set),It.forEach((du,$g)=>bn.add($g))})});if(ie.length){const F=[];ie.forEach(H=>{F.push(function BU(){return new w(3505,!1)}())}),X.forEach(H=>H.destroy()),this.reportError(F)}const se=new Map,Be=new Map;s.forEach(F=>{const H=F.element;i.has(H)&&(Be.set(H,H),this._beforeAnimationBuild(F.player.namespaceId,F.instruction,se))}),r.forEach(F=>{const H=F.element;this._getPreviousPlayers(H,!1,F.namespaceId,F.triggerName,null).forEach(le=>{nn(se,H,[]).push(le),le.destroy()})});const Kn=b.filter(F=>Zx(F,c,l)),is=new Map;Gx(is,this.driver,g,l,hi).forEach(F=>{Zx(F,c,l)&&Kn.push(F)});const kr=new Map;f.forEach((F,H)=>{Gx(kr,this.driver,new Set(F),c,"!")}),Kn.forEach(F=>{const H=is.get(F),$=kr.get(F);is.set(F,new Map([...H?.entries()??[],...$?.entries()??[]]))});const zg=[],yT=[],wT={};s.forEach(F=>{const{element:H,player:$,instruction:le}=F;if(i.has(H)){if(d.has(H))return $.onDestroy(()=>Zn(H,le.toStyles)),$.disabled=!0,$.overrideTotalTime(le.totalTime),void r.push($);let ut=wT;if(Be.size>1){let on=H;const Pi=[];for(;on=on.parentNode;){const Pe=Be.get(on);if(Pe){ut=Pe;break}Pi.push(on)}Pi.forEach(Pe=>Be.set(Pe,ut))}const Yn=this._buildAnimation($.namespaceId,le,se,o,kr,is);if($.setRealPlayer(Yn),ut===wT)zg.push($);else{const on=this.playersByElement.get(ut);on&&on.length&&($.parentPlayer=Ai(on)),r.push($)}}else wr(H,le.fromStyles),$.onDestroy(()=>Zn(H,le.toStyles)),yT.push($),d.has(H)&&r.push($)}),yT.forEach(F=>{const H=o.get(F.element);if(H&&H.length){const $=Ai(H);F.setRealPlayer($)}}),r.forEach(F=>{F.parentPlayer?F.syncPlayerEvents(F.parentPlayer):F.destroy()});for(let F=0;F!Yn.destroyed);ut.length?L3(this,H,ut):this.processLeaveNode(H)}return b.length=0,zg.forEach(F=>{this.players.push(F),F.onDone(()=>{F.destroy();const H=this.players.indexOf(F);this.players.splice(H,1)}),F.play()}),zg}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,t,i,r,o){let s=[];if(t){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const c=!o||o==Ra;a.forEach(l=>{l.queued||!c&&l.triggerName!=r||s.push(l)})}}return(i||r)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(n,t,i){const o=t.element,s=t.isRemovalTransition?void 0:n,a=t.isRemovalTransition?void 0:t.triggerName;for(const c of t.timelines){const l=c.element,d=l!==o,u=nn(i,l,[]);this._getPreviousPlayers(l,d,s,a,t.toState).forEach(f=>{const m=f.getRealPlayer();m.beforeDestroy&&m.beforeDestroy(),f.destroy(),u.push(f)})}wr(o,t.fromStyles)}_buildAnimation(n,t,i,r,o,s){const a=t.triggerName,c=t.element,l=[],d=new Set,u=new Set,h=t.timelines.map(m=>{const p=m.element;d.add(p);const b=p[Nn];if(b&&b.removedBeforeQueried)return new Na(m.duration,m.delay);const E=p!==c,g=function V3(e){const n=[];return Wx(e,n),n}((i.get(p)||k3).map(se=>se.getRealPlayer())).filter(se=>!!se.element&&se.element===p),S=o.get(p),A=s.get(p),X=Dx(this._normalizer,m.keyframes,S,A),ie=this._buildPlayer(m,X,g);if(m.subTimeline&&r&&u.add(p),E){const se=new sg(n,a,p);se.setRealPlayer(ie),l.push(se)}return ie});l.forEach(m=>{nn(this.playersByQueriedElement,m.element,[]).push(m),m.onDone(()=>function F3(e,n,t){let i=e.get(n);if(i){if(i.length){const r=i.indexOf(t);i.splice(r,1)}0==i.length&&e.delete(n)}return i}(this.playersByQueriedElement,m.element,m))}),d.forEach(m=>mn(m,kx));const f=Ai(h);return f.onDestroy(()=>{d.forEach(m=>Zo(m,kx)),Zn(c,t.toStyles)}),u.forEach(m=>{nn(r,m,[]).push(f)}),f}_buildPlayer(n,t,i){return t.length>0?this.driver.animate(n.element,t,n.duration,n.delay,n.easing,i):new Na(n.duration,n.delay)}}class sg{constructor(n,t,i){this.namespaceId=n,this.triggerName=t,this.element=i,this._player=new Na,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((t,i)=>{t.forEach(r=>Vp(n,i,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const t=this._player;t.triggerCallback&&n.onStart(()=>t.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,t){nn(this._queuedCallbacks,n,[]).push(t)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const t=this._player;t.triggerCallback&&t.triggerCallback(n)}}function Vd(e){return e&&1===e.nodeType}function $x(e,n){const t=e.style.display;return e.style.display=n??"none",t}function Gx(e,n,t,i,r){const o=[];t.forEach(c=>o.push($x(c)));const s=[];i.forEach((c,l)=>{const d=new Map;c.forEach(u=>{const h=n.computeStyle(l,u,r);d.set(u,h),(!h||0==h.length)&&(l[Nn]=A3,s.push(l))}),e.set(l,d)});let a=0;return t.forEach(c=>$x(c,o[a++])),s}function qx(e,n){const t=new Map;if(e.forEach(a=>t.set(a,[])),0==n.length)return t;const r=new Set(n),o=new Map;function s(a){if(!a)return 1;let c=o.get(a);if(c)return c;const l=a.parentNode;return c=t.has(l)?l:r.has(l)?1:s(l),o.set(a,c),c}return n.forEach(a=>{const c=s(a);1!==c&&t.get(c).push(a)}),t}function mn(e,n){e.classList?.add(n)}function Zo(e,n){e.classList?.remove(n)}function L3(e,n,t){Ai(t).onDone(()=>e.processLeaveNode(n))}function Wx(e,n){for(let t=0;tr.add(o)):n.set(e,i),t.delete(e),!0}class Pa{constructor(n,t,i){this._driver=t,this._normalizer=i,this._triggerCache={},this.onRemovalComplete=(r,o)=>{},this._transitionEngine=new O3(n.body,t,i),this._timelineEngine=new x3(n.body,t,i),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(n,t,i,r,o){const s=n+"-"+r;let a=this._triggerCache[s];if(!a){const c=[],d=Qp(this._driver,o,c,[]);if(c.length)throw function TU(){return new w(3404,!1)}();a=function w3(e,n,t){return new C3(e,n,t)}(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(t,r,a)}register(n,t){this._transitionEngine.register(n,t)}destroy(n,t){this._transitionEngine.destroy(n,t)}onInsert(n,t,i,r){this._transitionEngine.insertNode(n,t,i,r)}onRemove(n,t,i){this._transitionEngine.removeNode(n,t,i)}disableAnimations(n,t){this._transitionEngine.markElementAsDisabled(n,t)}process(n,t,i,r){if("@"==i.charAt(0)){const[o,s]=xx(i);this._timelineEngine.command(o,t,s,r)}else this._transitionEngine.trigger(n,t,i,r)}listen(n,t,i,r,o){if("@"==i.charAt(0)){const[s,a]=xx(i);return this._timelineEngine.listen(s,t,a,o)}return this._transitionEngine.listen(n,t,i,r,o)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}class La{static{this.initialStylesByElement=new WeakMap}constructor(n,t,i){this._element=n,this._startStyles=t,this._endStyles=i,this._state=0;let r=La.initialStylesByElement.get(n);r||La.initialStylesByElement.set(n,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Zn(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Zn(this._element,this._initialStyles),this._endStyles&&(Zn(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(La.initialStylesByElement.delete(this._element),this._startStyles&&(wr(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(wr(this._element,this._endStyles),this._endStyles=null),Zn(this._element,this._initialStyles),this._state=3)}}function ag(e){let n=null;return e.forEach((t,i)=>{(function H3(e){return"display"===e||"position"===e})(i)&&(n=n||new Map,n.set(i,t))}),n}class Kx{constructor(n,t,i,r){this.element=n,this.keyframes=t,this.options=i,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const n=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,n,this.options),this._finalKeyframe=n.length?n[n.length-1]:new Map;const t=()=>this._onFinish();this.domPlayer.addEventListener("finish",t),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",t)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(n){const t=[];return n.forEach(i=>{t.push(Object.fromEntries(i))}),t}_triggerWebAnimation(n,t,i){return n.animate(this._convertKeyframesToObject(t),i)}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(n=>n()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=n*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,r)=>{"offset"!==r&&n.set(r,this._finished?i:Yp(this.element,r))}),this.currentSnapshot=n}triggerCallback(n){const t="start"===n?this._onStartFns:this._onDoneFns;t.forEach(i=>i()),t.length=0}}class Yx{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,t){return Ix(n,t)}getParentElement(n){return Hp(n)}query(n,t,i){return Tx(n,t,i)}computeStyle(n,t,i){return Yp(n,t)}animate(n,t,i,r,o,s=[]){const c={duration:i,delay:r,fill:0==r?"both":"forwards"};o&&(c.easing=o);const l=new Map,d=s.filter(f=>f instanceof Kx);(function XU(e,n){return 0===e||0===n})(i,r)&&d.forEach(f=>{f.currentSnapshot.forEach((m,p)=>l.set(p,m))});let u=function KU(e){return e.length?e[0]instanceof Map?e:e.map(n=>new Map(Object.entries(n))):[]}(t).map(f=>new Map(f));u=function JU(e,n,t){if(t.size&&n.length){let i=n[0],r=[];if(t.forEach((o,s)=>{i.has(s)||r.push(s),i.set(s,o)}),r.length)for(let o=1;os.set(a,Yp(e,a)))}}return n}(n,u,l);const h=function j3(e,n){let t=null,i=null;return Array.isArray(n)&&n.length?(t=ag(n[0]),n.length>1&&(i=ag(n[n.length-1]))):n instanceof Map&&(t=ag(n)),t||i?new La(e,t,i):null}(n,u);return new Kx(n,u,c,h)}}const Qx="@.disabled";class Xx{constructor(n,t,i,r){this.namespaceId=n,this.delegate=t,this.engine=i,this._onDestroy=r,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,t){return this.delegate.createElement(n,t)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,t){this.delegate.appendChild(n,t),this.engine.onInsert(this.namespaceId,t,n,!1)}insertBefore(n,t,i,r=!0){this.delegate.insertBefore(n,t,i),this.engine.onInsert(this.namespaceId,t,n,r)}removeChild(n,t,i){this.parentNode(t)&&this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(n,t){return this.delegate.selectRootElement(n,t)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,t,i,r){this.delegate.setAttribute(n,t,i,r)}removeAttribute(n,t,i){this.delegate.removeAttribute(n,t,i)}addClass(n,t){this.delegate.addClass(n,t)}removeClass(n,t){this.delegate.removeClass(n,t)}setStyle(n,t,i,r){this.delegate.setStyle(n,t,i,r)}removeStyle(n,t,i){this.delegate.removeStyle(n,t,i)}setProperty(n,t,i){"@"==t.charAt(0)&&t==Qx?this.disableAnimations(n,!!i):this.delegate.setProperty(n,t,i)}setValue(n,t){this.delegate.setValue(n,t)}listen(n,t,i){return this.delegate.listen(n,t,i)}disableAnimations(n,t){this.engine.disableAnimations(n,t)}}class U3 extends Xx{constructor(n,t,i,r,o){super(t,i,r,o),this.factory=n,this.namespaceId=t}setProperty(n,t,i){"@"==t.charAt(0)?"."==t.charAt(1)&&t==Qx?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,t.slice(1),i):this.delegate.setProperty(n,t,i)}listen(n,t,i){if("@"==t.charAt(0)){const r=function z3(e){switch(e){case"body":return document.body;case"document":return document;case"window":return window;default:return e}}(n);let o=t.slice(1),s="";return"@"!=o.charAt(0)&&([o,s]=function $3(e){const n=e.indexOf(".");return[e.substring(0,n),e.slice(n+1)]}(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{this.factory.scheduleListenerCallback(a._data||-1,i,a)})}return this.delegate.listen(n,t,i)}}class G3{constructor(n,t,i){this.delegate=n,this.engine=t,this._zone=i,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,t.onRemovalComplete=(r,o)=>{o?.removeChild(null,r)}}createRenderer(n,t){const r=this.delegate.createRenderer(n,t);if(!n||!t?.data?.animation){const l=this._rendererCache;let d=l.get(r);return d||(d=new Xx("",r,this.engine,()=>l.delete(r)),l.set(r,d)),d}const o=t.id,s=t.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=l=>{Array.isArray(l)?l.forEach(a):this.engine.registerTrigger(o,s,n,l.name,l)};return t.data.animation.forEach(a),new U3(this,s,r,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,t,i){if(n>=0&&nt(i));const r=this._animationCallbacksBuffer;0==r.length&&queueMicrotask(()=>{this._zone.run(()=>{r.forEach(o=>{const[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),r.push([t,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}let q3=(()=>{class e extends Pa{constructor(t,i,r){super(t,i,r)}ngOnDestroy(){this.flush()}static{this.\u0275fac=function(i){return new(i||e)(N(lt),N(zp),N($p))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac})}}return e})();const Jx=[{provide:$p,useFactory:function W3(){return new Ox}},{provide:Pa,useClass:q3},{provide:bl,useFactory:function Z3(e,n,t){return new G3(e,n,t)},deps:[Np,Pa,Y]}],cg=[{provide:zp,useFactory:()=>new Yx},{provide:so,useValue:"BrowserAnimations"},...Jx],eM=[{provide:zp,useClass:Up},{provide:so,useValue:"NoopAnimations"},...Jx];let K3=(()=>{class e{static withConfig(t){return{ngModule:e,providers:t.disableAnimations?eM:cg}}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({providers:cg,imports:[_x]})}}return e})();function tM(...e){if(1===e.length){const n=e[0];if(ic(n))return jd(n,null);if(yu(n)&&Object.getPrototypeOf(n)===Object.prototype){const t=Object.keys(n);return jd(t.map(i=>n[i]),t)}}if("function"==typeof e[e.length-1]){const n=e.pop();return jd(e=1===e.length&&ic(e[0])?e[0]:e,null).pipe(ht(t=>n(...t)))}return jd(e,null)}function jd(e,n){return new Le(t=>{const i=e.length;if(0===i)return void t.complete();const r=new Array(i);let o=0,s=0;for(let a=0;a{l||(l=!0,s++),r[a]=d},error:d=>t.error(d),complete:()=>{o++,(o===i||!l)&&(s===i&&t.next(n?n.reduce((d,u,h)=>(d[u]=r[h],d),{}):r),t.complete())}}))}})}let nM=(()=>{class e{constructor(t,i){this._renderer=t,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(t,i){this._renderer.setProperty(this._elementRef.nativeElement,t,i)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}static{this.\u0275fac=function(i){return new(i||e)(v(ir),v(Ie))}}static{this.\u0275dir=V({type:e})}}return e})(),Er=(()=>{class e extends nM{static{this.\u0275fac=(()=>{let t;return function(r){return(t||(t=function bt(e){return Qn(()=>{const n=e.prototype.constructor,t=n[Xn]||Ch(n),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const o=r[Xn]||Ch(r);if(o&&o!==t)return o;r=Object.getPrototypeOf(r)}return o=>new o})}(e)))(r||e)}})()}static{this.\u0275dir=V({type:e,features:[pe]})}}return e})();const pn=new D(""),Q3={provide:pn,useExisting:be(()=>Hd),multi:!0},J3=new D("");let Hd=(()=>{class e extends nM{constructor(t,i,r){super(t,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function X3(){const e=Ea()?Ea().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}())}writeValue(t){this.setProperty("value",t??"")}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static{this.\u0275fac=function(i){return new(i||e)(v(ir),v(Ie),v(J3,8))}}static{this.\u0275dir=V({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){1&i&&ne("input",function(s){return r._handleInput(s.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(s){return r._compositionEnd(s.target.value)})},features:[we([Q3]),pe]})}}return e})();function Ni(e){return null==e||("string"==typeof e||Array.isArray(e))&&0===e.length}function rM(e){return null!=e&&"number"==typeof e.length}const dt=new D(""),Oi=new D(""),ez=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class tz{static min(n){return function oM(e){return n=>{if(Ni(n.value)||Ni(e))return null;const t=parseFloat(n.value);return!isNaN(t)&&t{if(Ni(n.value)||Ni(e))return null;const t=parseFloat(n.value);return!isNaN(t)&&t>e?{max:{max:e,actual:n.value}}:null}}(n)}static required(n){return function aM(e){return Ni(e.value)?{required:!0}:null}(n)}static requiredTrue(n){return function cM(e){return!0===e.value?null:{required:!0}}(n)}static email(n){return function lM(e){return Ni(e.value)||ez.test(e.value)?null:{email:!0}}(n)}static minLength(n){return function dM(e){return n=>Ni(n.value)||!rM(n.value)?null:n.value.lengthrM(n.value)&&n.value.length>e?{maxlength:{requiredLength:e,actualLength:n.value.length}}:null}(n)}static pattern(n){return function hM(e){if(!e)return Ud;let n,t;return"string"==typeof e?(t="","^"!==e.charAt(0)&&(t+="^"),t+=e,"$"!==e.charAt(e.length-1)&&(t+="$"),n=new RegExp(t)):(t=e.toString(),n=e),i=>{if(Ni(i.value))return null;const r=i.value;return n.test(r)?null:{pattern:{requiredPattern:t,actualValue:r}}}}(n)}static nullValidator(n){return null}static compose(n){return _M(n)}static composeAsync(n){return vM(n)}}function Ud(e){return null}function fM(e){return null!=e}function mM(e){return Ul(e)?Ia(e):e}function pM(e){let n={};return e.forEach(t=>{n=null!=t?{...n,...t}:n}),0===Object.keys(n).length?null:n}function gM(e,n){return n.map(t=>t(e))}function bM(e){return e.map(n=>function nz(e){return!e.validate}(n)?n:t=>n.validate(t))}function _M(e){if(!e)return null;const n=e.filter(fM);return 0==n.length?null:function(t){return pM(gM(t,n))}}function lg(e){return null!=e?_M(bM(e)):null}function vM(e){if(!e)return null;const n=e.filter(fM);return 0==n.length?null:function(t){return tM(gM(t,n).map(mM)).pipe(ht(pM))}}function dg(e){return null!=e?vM(bM(e)):null}function yM(e,n){return null===e?[n]:Array.isArray(e)?[...e,n]:[e,n]}function wM(e){return e._rawValidators}function CM(e){return e._rawAsyncValidators}function ug(e){return e?Array.isArray(e)?e:[e]:[]}function zd(e,n){return Array.isArray(e)?e.includes(n):e===n}function EM(e,n){const t=ug(n);return ug(e).forEach(r=>{zd(t,r)||t.push(r)}),t}function DM(e,n){return ug(n).filter(t=>!zd(e,t))}class xM{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=lg(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=dg(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control&&this.control.reset(n)}hasError(n,t){return!!this.control&&this.control.hasError(n,t)}getError(n,t){return this.control?this.control.getError(n,t):null}}class Pt extends xM{get formDirective(){return null}get path(){return null}}class mi extends xM{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class MM{constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}}let IM=(()=>{class e extends MM{constructor(t){super(t)}static{this.\u0275fac=function(i){return new(i||e)(v(mi,2))}}static{this.\u0275dir=V({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){2&i&&Te("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},features:[pe]})}}return e})(),TM=(()=>{class e extends MM{constructor(t){super(t)}static{this.\u0275fac=function(i){return new(i||e)(v(Pt,10))}}static{this.\u0275dir=V({type:e,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){2&i&&Te("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},features:[pe]})}}return e})();const Va="VALID",Gd="INVALID",Ko="PENDING",Ba="DISABLED";class Yo{}class kM extends Yo{constructor(n,t){super(),this.value=n,this.source=t}}class mg extends Yo{constructor(n,t){super(),this.pristine=n,this.source=t}}class pg extends Yo{constructor(n,t){super(),this.touched=n,this.source=t}}class qd extends Yo{constructor(n,t){super(),this.status=n,this.source=t}}class az extends Yo{constructor(n){super(),this.source=n}}class cz extends Yo{constructor(n){super(),this.source=n}}function gg(e){return(Wd(e)?e.validators:e)||null}function bg(e,n){return(Wd(n)?n.asyncValidators:e)||null}function Wd(e){return null!=e&&!Array.isArray(e)&&"object"==typeof e}class _g{constructor(n,t){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=null,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this._status=pr(()=>this.statusReactive()),this.statusReactive=vo(void 0),this._pristine=pr(()=>this.pristineReactive()),this.pristineReactive=vo(!0),this._touched=pr(()=>this.touchedReactive()),this.touchedReactive=vo(!1),this._events=new Ve,this.events=this._events.asObservable(),this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return Wn(this.statusReactive)}set status(n){Wn(()=>this.statusReactive.set(n))}get valid(){return this.status===Va}get invalid(){return this.status===Gd}get pending(){return this.status==Ko}get disabled(){return this.status===Ba}get enabled(){return this.status!==Ba}get pristine(){return Wn(this.pristineReactive)}set pristine(n){Wn(()=>this.pristineReactive.set(n))}get dirty(){return!this.pristine}get touched(){return Wn(this.touchedReactive)}set touched(n){Wn(()=>this.touchedReactive.set(n))}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(EM(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(EM(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(DM(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(DM(n,this._rawAsyncValidators))}hasValidator(n){return zd(this._rawValidators,n)}hasAsyncValidator(n){return zd(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){const t=!1===this.touched;this.touched=!0;const i=n.sourceControl??this;this._parent&&!n.onlySelf&&this._parent.markAsTouched({...n,sourceControl:i}),t&&!1!==n.emitEvent&&this._events.next(new pg(!0,i))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(n))}markAsUntouched(n={}){const t=!0===this.touched;this.touched=!1,this._pendingTouched=!1;const i=n.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:i})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n,i),t&&!1!==n.emitEvent&&this._events.next(new pg(!1,i))}markAsDirty(n={}){const t=!0===this.pristine;this.pristine=!1;const i=n.sourceControl??this;this._parent&&!n.onlySelf&&this._parent.markAsDirty({...n,sourceControl:i}),t&&!1!==n.emitEvent&&this._events.next(new mg(!1,i))}markAsPristine(n={}){const t=!1===this.pristine;this.pristine=!0,this._pendingDirty=!1;const i=n.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n,i),t&&!1!==n.emitEvent&&this._events.next(new mg(!0,i))}markAsPending(n={}){this.status=Ko;const t=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new qd(this.status,t)),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.markAsPending({...n,sourceControl:t})}disable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Ba,this.errors=null,this._forEachChild(r=>{r.disable({...n,onlySelf:!0})}),this._updateValue();const i=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new kM(this.value,i)),this._events.next(new qd(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:t},this),this._onDisabledChange.forEach(r=>r(!0))}enable(n={}){const t=this._parentMarkedDirty(n.onlySelf);this.status=Va,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:t},this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n,t){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine({},t),this._parent._updateTouched({},t))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){const i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Va||this.status===Ko)&&this._runAsyncValidator(i,n.emitEvent)}const t=n.sourceControl??this;!1!==n.emitEvent&&(this._events.next(new kM(this.value,t)),this._events.next(new qd(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity({...n,sourceControl:t})}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Ba:Va}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,t){if(this.asyncValidator){this.status=Ko,this._hasOwnPendingAsyncValidator={emitEvent:!1!==t};const i=mM(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();const n=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,t={}){this.errors=n,this._updateControlsErrors(!1!==t.emitEvent,this,t.shouldHaveEmitted)}get(n){let t=n;return null==t||(Array.isArray(t)||(t=t.split(".")),0===t.length)?null:t.reduce((i,r)=>i&&i._find(r),this)}getError(n,t){const i=t?this.get(t):this;return i&&i.errors?i.errors[n]:null}hasError(n,t){return!!this.getError(n,t)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,t,i){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||i)&&this._events.next(new qd(this.status,t)),this._parent&&this._parent._updateControlsErrors(n,t,i)}_initObservables(){this.valueChanges=new de,this.statusChanges=new de}_calculateStatus(){return this._allControlsDisabled()?Ba:this.errors?Gd:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Ko)?Ko:this._anyControlsHaveStatus(Gd)?Gd:Va}_anyControlsHaveStatus(n){return this._anyControls(t=>t.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,t){const i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,this._parent&&!n.onlySelf&&this._parent._updatePristine(n,t),r&&this._events.next(new mg(this.pristine,t))}_updateTouched(n={},t){this.touched=this._anyControlsTouched(),this._events.next(new pg(this.touched,t)),this._parent&&!n.onlySelf&&this._parent._updateTouched(n,t)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Wd(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function lz(e){return Array.isArray(e)?lg(e):e||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function dz(e){return Array.isArray(e)?dg(e):e||null}(this._rawAsyncValidators)}}class vg extends _g{constructor(n,t,i){super(gg(t),bg(i,t)),this.controls=n,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,t){return this.controls[n]?this.controls[n]:(this.controls[n]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)}addControl(n,t,i={}){this.registerControl(n,t),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,t={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}setControl(n,t,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],t&&this.registerControl(n,t),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,t={}){(function NM(e,n,t){e._forEachChild((i,r)=>{if(void 0===t[r])throw new w(1002,"")})})(this,0,n),Object.keys(n).forEach(i=>{(function AM(e,n,t){const i=e.controls;if(!(n?Object.keys(i):i).length)throw new w(1e3,"");if(!i[t])throw new w(1001,"")})(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(n,t={}){null!=n&&(Object.keys(n).forEach(i=>{const r=this.controls[i];r&&r.patchValue(n[i],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(n={},t={}){this._forEachChild((i,r)=>{i.reset(n?n[r]:null,{onlySelf:!0,emitEvent:t.emitEvent})}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t)}getRawValue(){return this._reduceChildren({},(n,t,i)=>(n[i]=t.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(t,i)=>!!i._syncPendingControls()||t);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(t=>{const i=this.controls[t];i&&n(i,t)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[t,i]of Object.entries(this.controls))if(this.contains(t)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(t,i,r)=>((i.enabled||this.disabled)&&(t[r]=i.value),t))}_reduceChildren(n,t){let i=n;return this._forEachChild((r,o)=>{i=t(i,r,o)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const Qo=new D("CallSetDisabledState",{providedIn:"root",factory:()=>Zd}),Zd="always";function ja(e,n,t=Zd){yg(e,n),n.valueAccessor.writeValue(e.value),(e.disabled||"always"===t)&&n.valueAccessor.setDisabledState?.(e.disabled),function fz(e,n){n.valueAccessor.registerOnChange(t=>{e._pendingValue=t,e._pendingChange=!0,e._pendingDirty=!0,"change"===e.updateOn&&OM(e,n)})}(e,n),function pz(e,n){const t=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};e.registerOnChange(t),n._registerOnDestroy(()=>{e._unregisterOnChange(t)})}(e,n),function mz(e,n){n.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,"blur"===e.updateOn&&e._pendingChange&&OM(e,n),"submit"!==e.updateOn&&e.markAsTouched()})}(e,n),function hz(e,n){if(n.valueAccessor.setDisabledState){const t=i=>{n.valueAccessor.setDisabledState(i)};e.registerOnDisabledChange(t),n._registerOnDestroy(()=>{e._unregisterOnDisabledChange(t)})}}(e,n)}function Yd(e,n,t=!0){const i=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(i),n.valueAccessor.registerOnTouched(i)),Xd(e,n),e&&(n._invokeOnDestroyCallbacks(),e._registerOnCollectionChange(()=>{}))}function Qd(e,n){e.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(n)})}function yg(e,n){const t=wM(e);null!==n.validator?e.setValidators(yM(t,n.validator)):"function"==typeof t&&e.setValidators([t]);const i=CM(e);null!==n.asyncValidator?e.setAsyncValidators(yM(i,n.asyncValidator)):"function"==typeof i&&e.setAsyncValidators([i]);const r=()=>e.updateValueAndValidity();Qd(n._rawValidators,r),Qd(n._rawAsyncValidators,r)}function Xd(e,n){let t=!1;if(null!==e){if(null!==n.validator){const r=wM(e);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.validator);o.length!==r.length&&(t=!0,e.setValidators(o))}}if(null!==n.asyncValidator){const r=CM(e);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.asyncValidator);o.length!==r.length&&(t=!0,e.setAsyncValidators(o))}}}const i=()=>{};return Qd(n._rawValidators,i),Qd(n._rawAsyncValidators,i),t}function OM(e,n){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function FM(e,n){yg(e,n)}function RM(e,n){e._syncPendingControls(),n.forEach(t=>{const i=t.control;"submit"===i.updateOn&&i._pendingChange&&(t.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}const yz={provide:Pt,useExisting:be(()=>Ua)},Ha=Promise.resolve();let Ua=(()=>{class e extends Pt{get submitted(){return Wn(this.submittedReactive)}constructor(t,i,r){super(),this.callSetDisabledState=r,this._submitted=pr(()=>this.submittedReactive()),this.submittedReactive=vo(!1),this._directives=new Set,this.ngSubmit=new de,this.form=new vg({},lg(t),dg(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){Ha.then(()=>{const i=this._findContainer(t.path);t.control=i.registerControl(t.name,t.control),ja(t.control,t,this.callSetDisabledState),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){Ha.then(()=>{const i=this._findContainer(t.path);i&&i.removeControl(t.name),this._directives.delete(t)})}addFormGroup(t){Ha.then(()=>{const i=this._findContainer(t.path),r=new vg({});FM(r,t),i.registerControl(t.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){Ha.then(()=>{const i=this._findContainer(t.path);i&&i.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,i){Ha.then(()=>{this.form.get(t.path).setValue(i)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submittedReactive.set(!0),RM(this.form,this._directives),this.ngSubmit.emit(t),"dialog"===t?.target?.method}onReset(){this.resetForm()}resetForm(t=void 0){this.form.reset(t),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}static{this.\u0275fac=function(i){return new(i||e)(v(dt,10),v(Oi,10),v(Qo,8))}}static{this.\u0275dir=V({type:e,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){1&i&&ne("submit",function(s){return r.onSubmit(s)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[we([yz]),pe]})}}return e})();function PM(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}function LM(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e}const VM=class extends _g{constructor(n=null,t,i){super(gg(t),bg(i,t)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Wd(t)&&(t.nonNullable||t.initialValueIsDefault)&&(this.defaultValue=LM(n)?n.value:n)}setValue(n,t={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==t.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==t.emitViewToModelChange)),this.updateValueAndValidity(t)}patchValue(n,t={}){this.setValue(n,t)}reset(n=this.defaultValue,t={}){this._applyFormState(n),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){PM(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){PM(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){LM(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}},Ez={provide:mi,useExisting:be(()=>Dg)},HM=Promise.resolve();let Dg=(()=>{class e extends mi{constructor(t,i,r,o,s,a){super(),this._changeDetectorRef=s,this.callSetDisabledState=a,this.control=new VM,this._registered=!1,this.name="",this.update=new de,this._parent=t,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=function Eg(e,n){if(!n)return null;let t,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===Hd?t=o:function _z(e){return Object.getPrototypeOf(e.constructor)===Er}(o)?i=o:r=o}),r||i||t||null}(0,o)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){const i=t.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),function Cg(e,n){if(!e.hasOwnProperty("model"))return!1;const t=e.model;return!!t.isFirstChange()||!Object.is(n,t.currentValue)}(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){ja(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(t){HM.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){const i=t.isDisabled.currentValue,r=0!==i&&ct(i);HM.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?function Kd(e,n){return[...n.path,e]}(t,this._parent):[t]}static{this.\u0275fac=function(i){return new(i||e)(v(Pt,9),v(dt,10),v(Oi,10),v(pn,10),v(Sn,8),v(Qo,8))}}static{this.\u0275dir=V({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[we([Ez]),pe,Bt]})}}return e})(),UM=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=V({type:e,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]})}}return e})();const Sz={provide:Pt,useExisting:be(()=>Jd)};let Ag,Jd=(()=>{class e extends Pt{get submitted(){return Wn(this._submittedReactive)}set submitted(t){this._submittedReactive.set(t)}constructor(t,i,r){super(),this.callSetDisabledState=r,this._submitted=pr(()=>this._submittedReactive()),this._submittedReactive=vo(!1),this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new de,this._setValidators(t),this._setAsyncValidators(i)}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Xd(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){const i=this.form.get(t.path);return ja(i,t,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),i}getControl(t){return this.form.get(t.path)}removeControl(t){Yd(t.control||null,t,!1),function vz(e,n){const t=e.indexOf(n);t>-1&&e.splice(t,1)}(this.directives,t)}addFormGroup(t){this._setUpFormContainer(t)}removeFormGroup(t){this._cleanUpFormContainer(t)}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){this._setUpFormContainer(t)}removeFormArray(t){this._cleanUpFormContainer(t)}getFormArray(t){return this.form.get(t.path)}updateModel(t,i){this.form.get(t.path).setValue(i)}onSubmit(t){return this._submittedReactive.set(!0),RM(this.form,this.directives),this.ngSubmit.emit(t),this.form._events.next(new az(this.control)),"dialog"===t?.target?.method}onReset(){this.resetForm()}resetForm(t=void 0){this.form.reset(t),this._submittedReactive.set(!1),this.form._events.next(new cz(this.form))}_updateDomValue(){this.directives.forEach(t=>{const i=t.control,r=this.form.get(t.path);i!==r&&(Yd(i||null,t),(e=>e instanceof VM)(r)&&(ja(r,t,this.callSetDisabledState),t.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(t){const i=this.form.get(t.path);FM(i,t),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(t){if(this.form){const i=this.form.get(t.path);i&&function gz(e,n){return Xd(e,n)}(i,t)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){yg(this.form,this),this._oldForm&&Xd(this._oldForm,this)}_checkFormPresent(){}static{this.\u0275fac=function(i){return new(i||e)(v(dt,10),v(Oi,10),v(Qo,8))}}static{this.\u0275dir=V({type:e,selectors:[["","formGroup",""]],hostBindings:function(i,r){1&i&&ne("submit",function(s){return r.onSubmit(s)})("reset",function(){return r.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[we([Sz]),pe,Bt]})}}return e})(),Wz=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({})}}return e})(),Kz=(()=>{class e{static withConfig(t){return{ngModule:e,providers:[{provide:Qo,useValue:t.callSetDisabledState??Zd}]}}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[Wz]})}}return e})();try{Ag=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Ag=!1}let Xo,Fi=(()=>{class e{constructor(t){this._platformId=t,this.isBrowser=this._platformId?function rj(e){return e===I0}(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!Ag)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}static{this.\u0275fac=function(i){return new(i||e)(N(ii))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const sI=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function aI(){if(Xo)return Xo;if("object"!=typeof document||!document)return Xo=new Set(sI),Xo;let e=document.createElement("input");return Xo=new Set(sI.filter(n=>(e.setAttribute("type",n),e.type===n))),Xo}let za,Ng;function $a(e){return function Yz(){if(null==za&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>za=!0}))}finally{za=za||!1}return za}()?e:!!e.capture}function Jo(e){return e.composedPath?e.composedPath()[0]:e.target}class v8 extends me{constructor(n,t){super()}schedule(n,t=0){return this}}class cI extends v8{constructor(n,t){super(n,t),this.scheduler=n,this.work=t,this.pending=!1}schedule(n,t=0){if(this.closed)return this;this.state=n;const i=this.id,r=this.scheduler;return null!=i&&(this.id=this.recycleAsyncId(r,i,t)),this.pending=!0,this.delay=t,this.id=this.id||this.requestAsyncId(r,this.id,t),this}requestAsyncId(n,t,i=0){return setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,t,i=0){if(null!==i&&this.delay===i&&!1===this.pending)return t;clearInterval(t)}execute(n,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,t);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,t){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=!!o&&o||new Error(o)}if(i)return this.unsubscribe(),r}_unsubscribe(){const n=this.id,t=this.scheduler,i=t.actions,r=i.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==r&&i.splice(r,1),null!=n&&(this.id=this.recycleAsyncId(t,n,null)),this.delay=null}}let lI=(()=>{class e{constructor(t,i=e.now){this.SchedulerAction=t,this.now=i}schedule(t,i=0,r){return new this.SchedulerAction(this,t).schedule(r,i)}}return e.now=()=>Date.now(),e})();class pi extends lI{constructor(n,t=lI.now){super(n,()=>pi.delegate&&pi.delegate!==this?pi.delegate.now():t()),this.actions=[],this.active=!1,this.scheduled=void 0}schedule(n,t=0,i){return pi.delegate&&pi.delegate!==this?pi.delegate.schedule(n,t,i):super.schedule(n,t,i)}flush(n){const{actions:t}=this;if(this.active)return void t.push(n);let i;this.active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=t.shift());if(this.active=!1,i){for(;n=t.shift();)n.unsubscribe();throw i}}}const dI=new pi(cI);class y8{constructor(n,t){this.dueTime=n,this.scheduler=t}call(n,t){return t.subscribe(new w8(n,this.dueTime,this.scheduler))}}class w8 extends Ce{constructor(n,t,i){super(n),this.dueTime=t,this.scheduler=i,this.debouncedSubscription=null,this.lastValue=null,this.hasValue=!1}_next(n){this.clearDebounce(),this.lastValue=n,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(C8,this.dueTime,this))}_complete(){this.debouncedNext(),this.destination.complete()}debouncedNext(){if(this.clearDebounce(),this.hasValue){const{lastValue:n}=this;this.lastValue=null,this.hasValue=!1,this.destination.next(n)}}clearDebounce(){const n=this.debouncedSubscription;null!==n&&(this.remove(n),n.unsubscribe(),this.debouncedSubscription=null)}}function C8(e){e.debouncedNext()}function hI(e){return n=>n.lift(new E8(e))}class E8{constructor(n){this.total=n}call(n,t){return t.subscribe(new D8(n,this.total))}}class D8 extends Ce{constructor(n,t){super(n),this.total=t,this.count=0}_next(n){++this.count>this.total&&this.destination.next(n)}}class M8{constructor(n,t){this.compare=n,this.keySelector=t}call(n,t){return t.subscribe(new I8(n,this.compare,this.keySelector))}}class I8 extends Ce{constructor(n,t,i){super(n),this.keySelector=i,this.hasKey=!1,"function"==typeof t&&(this.compare=t)}compare(n,t){return n===t}_next(n){let t;try{const{keySelector:r}=this;t=r?r(n):n}catch(r){return this.destination.error(r)}let i=!1;if(this.hasKey)try{const{compare:r}=this;i=r(this.key,t)}catch(r){return this.destination.error(r)}else this.hasKey=!0;i||(this.key=t,this.destination.next(n))}}function qa(e){return n=>n.lift(new T8(e))}class T8{constructor(n){this.notifier=n}call(n,t){const i=new S8(n),r=Cd(this.notifier,new yd(i));return r&&!i.seenValue?(i.add(r),t.subscribe(i)):i}}class S8 extends wd{constructor(n){super(n),this.seenValue=!1}notifyNext(){this.seenValue=!0,this.complete()}notifyComplete(){}}function tu(e){return null!=e&&"false"!=`${e}`}function mI(e){return Array.isArray(e)?e:[e]}function Mr(e){return e instanceof Ie?e.nativeElement:e}class A8 extends Ce{notifyNext(n,t,i,r,o){this.destination.next(t)}notifyError(n,t){this.destination.error(n)}notifyComplete(n){this.destination.complete()}}class N8 extends Ce{constructor(n,t,i){super(),this.parent=n,this.outerValue=t,this.outerIndex=i,this.index=0}_next(n){this.parent.notifyNext(this.outerValue,n,this.outerIndex,this.index++,this)}_error(n){this.parent.notifyError(n,this),this.unsubscribe()}_complete(){this.parent.notifyComplete(this),this.unsubscribe()}}function O8(e,n,t,i,r=new N8(e,t,i)){if(!r.closed)return n instanceof Le?n.subscribe(r):bp(n)(r)}const pI={};class R8{constructor(n){this.resultSelector=n}call(n,t){return t.subscribe(new P8(n,this.resultSelector))}}class P8 extends A8{constructor(n,t){super(n),this.resultSelector=t,this.active=0,this.values=[],this.observables=[]}_next(n){this.values.push(pI),this.observables.push(n)}_complete(){const n=this.observables,t=n.length;if(0===t)this.destination.complete();else{this.active=t,this.toRespond=t;for(let i=0;iFg(e,t,n)):t=>Fg(e,t)}const bI=new Set;let Ir,B8=(()=>{class e{constructor(t,i){this._platform=t,this._nonce=i,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):H8}matchMedia(t){return(this._platform.WEBKIT||this._platform.BLINK)&&function j8(e,n){if(!bI.has(e))try{Ir||(Ir=document.createElement("style"),n&&Ir.setAttribute("nonce",n),Ir.setAttribute("type","text/css"),document.head.appendChild(Ir)),Ir.sheet&&(Ir.sheet.insertRule(`@media ${e} {body{ }}`,0),bI.add(e))}catch(t){console.error(t)}}(t,this._nonce),this._matchMedia(t)}static{this.\u0275fac=function(i){return new(i||e)(N(Fi),N(Fh,8))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function H8(e){return{matches:"all"===e||""===e,media:e,addListener:()=>{},removeListener:()=>{}}}let U8=(()=>{class e{constructor(t,i){this._mediaMatcher=t,this._zone=i,this._queries=new Map,this._destroySubject=new Ve}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(t){return _I(mI(t)).some(r=>this._registerQuery(r).mql.matches)}observe(t){let o=function F8(...e){let n,t;return _d(e[e.length-1])&&(t=e.pop()),"function"==typeof e[e.length-1]&&(n=e.pop()),1===e.length&&ic(e[0])&&(e=e[0]),gp(e,t).lift(new R8(n))}(_I(mI(t)).map(s=>this._registerQuery(s).observable));return o=Fg(o.pipe(cs(1)),o.pipe(hI(1),function uI(e,n=dI){return t=>t.lift(new y8(e,n))}(0))),o.pipe(ht(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:c,query:l})=>{a.matches=a.matches||c,a.breakpoints[l]=c}),a}))}_registerQuery(t){if(this._queries.has(t))return this._queries.get(t);const i=this._mediaMatcher.matchMedia(t),o={observable:new Le(s=>{const a=c=>this._zone.run(()=>s.next(c));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(V8(i),ht(({matches:s})=>({query:t,matches:s})),qa(this._destroySubject)),mql:i};return this._queries.set(t,o),o}static{this.\u0275fac=function(i){return new(i||e)(N(B8),N(Y))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function _I(e){return e.map(n=>n.split(",")).reduce((n,t)=>n.concat(t)).map(n=>n.trim())}function xI(e){return 0===e.buttons||0===e.detail}function MI(e){const n=e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}const n$=new D("cdk-input-modality-detector-options"),i$={ignoreKeys:[18,17,224,91,16]},es=$a({passive:!0,capture:!0});let r$=(()=>{class e{get mostRecentModality(){return this._modality.value}constructor(t,i,r,o){this._platform=t,this._mostRecentTarget=null,this._modality=new lb(null),this._lastTouchMs=0,this._onKeydown=s=>{this._options?.ignoreKeys?.some(a=>a===s.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Jo(s))},this._onMousedown=s=>{Date.now()-this._lastTouchMs<650||(this._modality.next(xI(s)?"keyboard":"mouse"),this._mostRecentTarget=Jo(s))},this._onTouchstart=s=>{MI(s)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Jo(s))},this._options={...i$,...o},this.modalityDetected=this._modality.pipe(hI(1)),this.modalityChanged=this.modalityDetected.pipe(function x8(e,n){return t=>t.lift(new M8(e,n))}()),t.isBrowser&&i.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,es),r.addEventListener("mousedown",this._onMousedown,es),r.addEventListener("touchstart",this._onTouchstart,es)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,es),document.removeEventListener("mousedown",this._onMousedown,es),document.removeEventListener("touchstart",this._onTouchstart,es))}static{this.\u0275fac=function(i){return new(i||e)(N(Fi),N(Y),N(lt),N(n$,8))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var nu=function(e){return e[e.IMMEDIATE=0]="IMMEDIATE",e[e.EVENTUAL=1]="EVENTUAL",e}(nu||{});const s$=new D("cdk-focus-monitor-default-options"),iu=$a({passive:!0,capture:!0});let a$=(()=>{class e{constructor(t,i,r,o,s){this._ngZone=t,this._platform=i,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new Ve,this._rootNodeFocusAndBlurListener=a=>{for(let l=Jo(a);l;l=l.parentElement)"focus"===a.type?this._onFocus(a,l):this._onBlur(a,l)},this._document=o,this._detectionMode=s?.detectionMode||nu.IMMEDIATE}monitor(t,i=!1){const r=Mr(t);if(!this._platform.isBrowser||1!==r.nodeType)return Rt();const o=function Xz(e){if(function Qz(){if(null==Ng){const e=typeof document<"u"?document.head:null;Ng=!(!e||!e.createShadowRoot&&!e.attachShadow)}return Ng}()){const n=e.getRootNode?e.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(r)||this._getDocument(),s=this._elementInfo.get(r);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new Ve,rootNode:o};return this._elementInfo.set(r,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(t){const i=Mr(t),r=this._elementInfo.get(i);r&&(r.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(r))}focusVia(t,i,r){const o=Mr(t);o===this._getDocument().activeElement?this._getClosestElementsInfo(o).forEach(([a,c])=>this._originChanged(a,i,c)):(this._setOrigin(i),"function"==typeof o.focus&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((t,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(t){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(t)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:t&&this._isLastInteractionFromInputLabel(t)?"mouse":"program"}_shouldBeAttributedToTouch(t){return this._detectionMode===nu.EVENTUAL||!!t?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(t,i){t.classList.toggle("cdk-focused",!!i),t.classList.toggle("cdk-touch-focused","touch"===i),t.classList.toggle("cdk-keyboard-focused","keyboard"===i),t.classList.toggle("cdk-mouse-focused","mouse"===i),t.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(t,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=t,this._originFromTouchInteraction="touch"===t&&i,this._detectionMode===nu.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(t,i){const r=this._elementInfo.get(i),o=Jo(t);!r||!r.checkChildren&&i!==o||this._originChanged(i,this._getFocusOrigin(o),r)}_onBlur(t,i){const r=this._elementInfo.get(i);!r||r.checkChildren&&t.relatedTarget instanceof Node&&i.contains(t.relatedTarget)||(this._setClasses(i),this._emitOrigin(r,null))}_emitOrigin(t,i){t.subject.observers.length&&this._ngZone.run(()=>t.subject.next(i))}_registerGlobalListeners(t){if(!this._platform.isBrowser)return;const i=t.rootNode,r=this._rootNodeFocusListenerCount.get(i)||0;r||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,iu),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,iu)}),this._rootNodeFocusListenerCount.set(i,r+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(qa(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(t){const i=t.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const r=this._rootNodeFocusListenerCount.get(i);r>1?this._rootNodeFocusListenerCount.set(i,r-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,iu),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,iu),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(t,i,r){this._setClasses(t,i),this._emitOrigin(r,i),this._lastFocusOrigin=i}_getClosestElementsInfo(t){const i=[];return this._elementInfo.forEach((r,o)=>{(o===t||r.checkChildren&&o.contains(t))&&i.push([o,r])}),i}_isLastInteractionFromInputLabel(t){const{_mostRecentTarget:i,mostRecentModality:r}=this._inputModalityDetector;if("mouse"!==r||!i||i===t||"INPUT"!==t.nodeName&&"TEXTAREA"!==t.nodeName||t.disabled)return!1;const o=t.labels;if(o)for(let s=0;s{class e{constructor(t,i){this._platform=t,this._document=i,this._breakpointSubscription=T(U8).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Tr.NONE;const t=this._document.createElement("div");t.style.backgroundColor="rgb(1,2,3)",t.style.position="absolute",this._document.body.appendChild(t);const i=this._document.defaultView||window,r=i&&i.getComputedStyle?i.getComputedStyle(t):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(t.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Tr.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Tr.BLACK_ON_WHITE}return Tr.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const t=this._document.body.classList;t.remove(Rg,TI,SI),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===Tr.BLACK_ON_WHITE?t.add(Rg,TI):i===Tr.WHITE_ON_BLACK&&t.add(Rg,SI)}}static{this.\u0275fac=function(i){return new(i||e)(N(Fi),N(lt))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const l$=new D("cdk-dir-doc",{providedIn:"root",factory:function d$(){return T(lt)}}),u$=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let f$=(()=>{class e{constructor(t){this.value="ltr",this.change=new de,t&&(this.value=function h$(e){const n=e?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?u$.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((t.body?t.body.dir:null)||(t.documentElement?t.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static{this.\u0275fac=function(i){return new(i||e)(N(l$,8))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),kI=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({})}}return e})();const m$=["mat-internal-form-field",""],p$=["*"],b$=new D("mat-sanity-checks",{providedIn:"root",factory:function g$(){return!0}});let xt=(()=>{class e{constructor(t,i,r){this._sanityChecks=i,this._document=r,this._hasDoneGlobalChecks=!1,t._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(t){return!function Jz(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[t])}static{this.\u0275fac=function(i){return new(i||e)(N(c$),N(b$,8),N(lt))}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[kI,kI]})}}return e})();class OI{constructor(n,t,i,r,o){this._defaultMatcher=n,this.ngControl=t,this._parentFormGroup=i,this._parentForm=r,this._stateChanges=o,this.errorState=!1}updateErrorState(){const n=this.errorState,t=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=i?.isErrorState(r,t)??!1;o!==n&&(this.errorState=o,this._stateChanges.next())}}let E$=(()=>{class e{isErrorState(t,i){return!!(t&&t.invalid&&(t.touched||i&&i.submitted))}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var gn=function(e){return e[e.FADING_IN=0]="FADING_IN",e[e.VISIBLE=1]="VISIBLE",e[e.FADING_OUT=2]="FADING_OUT",e[e.HIDDEN=3]="HIDDEN",e}(gn||{});class D${constructor(n,t,i,r=!1){this._renderer=n,this.element=t,this.config=i,this._animationForciblyDisabledThroughCss=r,this.state=gn.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}}const FI=$a({passive:!0,capture:!0});class x${constructor(){this._events=new Map,this._delegateEventHandler=n=>{const t=Jo(n);t&&this._events.get(n.type)?.forEach((i,r)=>{(r===t||r.contains(t))&&i.forEach(o=>o.handleEvent(n))})}}addHandler(n,t,i,r){const o=this._events.get(t);if(o){const s=o.get(i);s?s.add(r):o.set(i,new Set([r]))}else this._events.set(t,new Map([[i,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(t,this._delegateEventHandler,FI)})}removeHandler(n,t,i){const r=this._events.get(n);if(!r)return;const o=r.get(t);o&&(o.delete(i),0===o.size&&r.delete(t),0===r.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,FI)))}}const RI={enterDuration:225,exitDuration:150},PI=$a({passive:!0,capture:!0}),LI=["mousedown","touchstart"],VI=["mouseup","mouseleave","touchend","touchcancel"];class ru{static{this._eventManager=new x$}constructor(n,t,i,r){this._target=n,this._ngZone=t,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=Mr(i))}fadeInRipple(n,t,i={}){const r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o={...RI,...i.animation};i.centered&&(n=r.left+r.width/2,t=r.top+r.height/2);const s=i.radius||function I$(e,n,t){const i=Math.max(Math.abs(e-t.left),Math.abs(e-t.right)),r=Math.max(Math.abs(n-t.top),Math.abs(n-t.bottom));return Math.sqrt(i*i+r*r)}(n,t,r),a=n-r.left,c=t-r.top,l=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=a-s+"px",d.style.top=c-s+"px",d.style.height=2*s+"px",d.style.width=2*s+"px",null!=i.color&&(d.style.backgroundColor=i.color),d.style.transitionDuration=`${l}ms`,this._containerElement.appendChild(d);const u=window.getComputedStyle(d),f=u.transitionDuration,m="none"===u.transitionProperty||"0s"===f||"0s, 0s"===f||0===r.width&&0===r.height,p=new D$(this,d,i,m);d.style.transform="scale3d(1, 1, 1)",p.state=gn.FADING_IN,i.persistent||(this._mostRecentTransientRipple=p);let b=null;return!m&&(l||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const E=()=>{b&&(b.fallbackTimer=null),clearTimeout(S),this._finishRippleTransition(p)},g=()=>this._destroyRipple(p),S=setTimeout(g,l+100);d.addEventListener("transitionend",E),d.addEventListener("transitioncancel",g),b={onTransitionEnd:E,onTransitionCancel:g,fallbackTimer:S}}),this._activeRipples.set(p,b),(m||!l)&&this._finishRippleTransition(p),p}fadeOutRipple(n){if(n.state===gn.FADING_OUT||n.state===gn.HIDDEN)return;const t=n.element,i={...RI,...n.config.animation};t.style.transitionDuration=`${i.exitDuration}ms`,t.style.opacity="0",n.state=gn.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const t=Mr(n);!this._platform.isBrowser||!t||t===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=t,LI.forEach(i=>{ru._eventManager.addHandler(this._ngZone,i,t,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{VI.forEach(t=>{this._triggerElement.addEventListener(t,this,PI)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===gn.FADING_IN?this._startFadeOutTransition(n):n.state===gn.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const t=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=gn.VISIBLE,!i&&(!t||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const t=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=gn.HIDDEN,null!==t&&(n.element.removeEventListener("transitionend",t.onTransitionEnd),n.element.removeEventListener("transitioncancel",t.onTransitionCancel),null!==t.fallbackTimer&&clearTimeout(t.fallbackTimer)),n.element.remove()}_onMousedown(n){const t=xI(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===gn.VISIBLE||n.config.terminateOnPointerUp&&n.state===gn.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(LI.forEach(t=>ru._eventManager.removeHandler(t,n,this)),this._pointerUpEventsRegistered&&(VI.forEach(t=>n.removeEventListener(t,this,PI)),this._pointerUpEventsRegistered=!1))}}const T$=new D("mat-ripple-global-options");let Pg=(()=>{class e{get disabled(){return this._disabled}set disabled(t){t&&this.fadeOutAllNonPersistent(),this._disabled=t,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(t){this._trigger=t,this._setupTriggerEventsIfEnabled()}constructor(t,i,r,o,s){this._elementRef=t,this._animationMode=s,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new ru(this,i,t,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(t,i=0,r){return"number"==typeof t?this._rippleRenderer.fadeInRipple(t,i,{...this.rippleConfig,...r}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...t})}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Y),v(Fi),v(T$,8),v(so,8))}}static{this.\u0275dir=V({type:e,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,r){2&i&&Te("mat-ripple-unbounded",r.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0})}}return e})(),BI=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,xt]})}}return e})(),jI=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,r){2&i&&Te("mdc-form-field--align-end","before"===r.labelPosition)},inputs:{labelPosition:"labelPosition"},standalone:!0,features:[un],attrs:m$,ngContentSelectors:p$,decls:1,vars:0,template:function(i,r){1&i&&(Mi(),vt(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}"],encapsulation:2,changeDetection:0})}}return e})(),k$=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,BI,xt]})}}return e})();const A$=["input"],N$=["label"],O$=["*"],F$=new D("mat-checkbox-default-options",{providedIn:"root",factory:HI});function HI(){return{color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1}}var Mt=function(e){return e[e.Init=0]="Init",e[e.Checked=1]="Checked",e[e.Unchecked=2]="Unchecked",e[e.Indeterminate=3]="Indeterminate",e}(Mt||{});const R$={provide:pn,useExisting:be(()=>Lg),multi:!0};class P${}let L$=0;const UI=HI();let Lg=(()=>{class e{focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(t){const i=new P$;return i.source=this,i.checked=t,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(t,i,r,o,s,a){this._elementRef=t,this._changeDetectorRef=i,this._ngZone=r,this._animationMode=s,this._options=a,this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"},this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new de,this.indeterminateChange=new de,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=Mt.Init,this._controlValueAccessorChangeFn=()=>{},this._validatorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||UI,this.color=this._options.color||UI.color,this.tabIndex=parseInt(o)||0,this.id=this._uniqueId="mat-mdc-checkbox-"+ ++L$,this.disabledInteractive=a?.disabledInteractive??!1}ngOnChanges(t){t.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(t){t!=this.checked&&(this._checked=t,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(t){t!==this.disabled&&(this._disabled=t,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(t){const i=t!=this._indeterminate;this._indeterminate=t,i&&(this._transitionCheckState(this._indeterminate?Mt.Indeterminate:this.checked?Mt.Checked:Mt.Unchecked),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(t){this.checked=!!t}registerOnChange(t){this._controlValueAccessorChangeFn=t}registerOnTouched(t){this._onTouched=t}setDisabledState(t){this.disabled=t}validate(t){return this.required&&!0!==t.value?{required:!0}:null}registerOnValidatorChange(t){this._validatorChangeFn=t}_transitionCheckState(t){let i=this._currentCheckState,r=this._getAnimationTargetElement();if(i!==t&&r&&(this._currentAnimationClass&&r.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,t),this._currentCheckState=t,this._currentAnimationClass.length>0)){r.classList.add(this._currentAnimationClass);const o=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{r.classList.remove(o)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const t=this._options?.clickAction;this.disabled||"noop"===t?(this.disabled&&this.disabledInteractive||!this.disabled&&"noop"===t)&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==t&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?Mt.Checked:Mt.Unchecked),this._emitChangeEvent())}_onInteractionEvent(t){t.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(t,i){if("NoopAnimations"===this._animationMode)return"";switch(t){case Mt.Init:if(i===Mt.Checked)return this._animationClasses.uncheckedToChecked;if(i==Mt.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case Mt.Unchecked:return i===Mt.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case Mt.Checked:return i===Mt.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case Mt.Indeterminate:return i===Mt.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(t){const i=this._inputElement;i&&(i.nativeElement.indeterminate=t)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(t){t.target&&this._labelElement.nativeElement.contains(t.target)&&t.stopPropagation()}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Sn),v(Y),Zi("tabindex"),v(so,8),v(F$,8))}}static{this.\u0275cmp=ft({type:e,selectors:[["mat-checkbox"]],viewQuery:function(i,r){if(1&i&&(Re(A$,5),Re(N$,5),Re(Pg,5)),2&i){let o;ve(o=ye())&&(r._inputElement=o.first),ve(o=ye())&&(r._labelElement=o.first),ve(o=ye())&&(r.ripple=o.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(i,r){2&i&&(la("id",r.id),Fe("tabindex",null)("aria-label",null)("aria-labelledby",null),aa(r.color?"mat-"+r.color:"mat-accent"),Te("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mdc-checkbox--disabled",r.disabled)("mat-mdc-checkbox-disabled",r.disabled)("mat-mdc-checkbox-checked",r.checked)("mat-mdc-checkbox-disabled-interactive",r.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],id:"id",required:[2,"required","required",ct],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",ct],tabIndex:[2,"tabIndex","tabIndex",t=>null==t?void 0:Km(t)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",ct],checked:[2,"checked","checked",ct],disabled:[2,"disabled","disabled",ct],indeterminate:[2,"indeterminate","indeterminate",ct]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],standalone:!0,features:[we([R$,{provide:dt,useExisting:e,multi:!0}]),Js,Bt,un],ngContentSelectors:O$,decls:15,vars:20,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,r){if(1&i){const o=Dt();Mi(),_(0,"div",3),ne("click",function(a){return B(o),j(r._preventBubblingFromLabel(a))}),_(1,"div",4,0)(3,"div",5),ne("click",function(){return B(o),j(r._onTouchTargetClick())}),y(),_(4,"input",6,1),ne("blur",function(){return B(o),j(r._onBlur())})("click",function(){return B(o),j(r._onInputClick())})("change",function(a){return B(o),j(r._onInteractionEvent(a))}),y(),Z(6,"div",7),_(7,"div",8),mh(),_(8,"svg",9),Z(9,"path",10),y(),function v_(){!function Mk(){q.lFrame.currentNamespace=null}()}(),Z(10,"div",11),y(),Z(11,"div",12),y(),_(12,"label",13,2),vt(14),y()()}if(2&i){const o=Tn(2);I("labelPosition",r.labelPosition),x(4),Te("mdc-checkbox--selected",r.checked),I("checked",r.checked)("indeterminate",r.indeterminate)("disabled",r.disabled&&!r.disabledInteractive)("id",r.inputId)("required",r.required)("tabIndex",r.disabled&&!r.disabledInteractive?-1:r.tabIndex),Fe("aria-label",r.ariaLabel||null)("aria-labelledby",r.ariaLabelledby)("aria-describedby",r.ariaDescribedby)("aria-checked",r.indeterminate?"mixed":null)("aria-disabled",!(!r.disabled||!r.disabledInteractive)||null)("name",r.name)("value",r.value),x(7),I("matRippleTrigger",o)("matRippleDisabled",r.disableRipple||r.disabled)("matRippleCentered",!0),x(),I("for",r.inputId)}},dependencies:[Pg,jI],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover .mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:hover .mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-focus-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-focus-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:active .mdc-checkbox__native-control~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:active .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity));background-color:var(--mdc-checkbox-selected-hover-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-hover-state-layer-color, var(--mat-app-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity));background-color:var(--mdc-checkbox-selected-focus-state-layer-color, var(--mat-app-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-focus-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity));background-color:var(--mdc-checkbox-selected-pressed-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-pressed-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__ripple{background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px);top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.cdk-high-contrast-active .mdc-checkbox--disabled{opacity:.5}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mdc-checkbox-unselected-icon-color, var(--mat-app-on-surface-variant));top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-icon-color, var(--mat-app-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color)}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mdc-checkbox-disabled-selected-icon-color);border-color:rgba(0,0,0,0)}.mdc-checkbox:hover .mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mat-app-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mat-app-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mat-app-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mat-app-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover .mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color)}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mdc-checkbox-disabled-selected-icon-color);border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mdc-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.cdk-high-contrast-active .mdc-checkbox__checkmark{color:CanvasText}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.cdk-high-contrast-active .mdc-checkbox--disabled .mdc-checkbox__checkmark,.cdk-high-contrast-active .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:CanvasText}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mdc-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.cdk-high-contrast-active .mdc-checkbox__mixedmark{margin:0 1px}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable .mdc-checkbox *,.mat-mdc-checkbox._mat-animation-noopable .mdc-checkbox *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-app-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-app-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-app-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color)}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}}return e})(),j$=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[Lg,xt,xt]})}}return e})();const $$=new class z$ extends pi{}(class U$ extends cI{constructor(n,t){super(n,t),this.scheduler=n,this.work=t}schedule(n,t=0){return t>0?super.schedule(n,t):(this.delay=t,this.state=n,this.scheduler.flush(this),this)}execute(n,t){return t>0||this.closed?super.execute(n,t):this._execute(n,t)}requestAsyncId(n,t,i=0){return null!==i&&i>0||null===i&&this.delay>0?super.requestAsyncId(n,t,i):n.flush(this)}});function zI(e,n){return new Le(n?t=>n.schedule(G$,0,{error:e,subscriber:t}):t=>t.error(e))}function G$({error:e,subscriber:n}){n.error(e)}class Gt{constructor(n,t,i){this.kind=n,this.value=t,this.error=i,this.hasValue="N"===n}observe(n){switch(this.kind){case"N":return n.next&&n.next(this.value);case"E":return n.error&&n.error(this.error);case"C":return n.complete&&n.complete()}}do(n,t,i){switch(this.kind){case"N":return n&&n(this.value);case"E":return t&&t(this.error);case"C":return i&&i()}}accept(n,t,i){return n&&"function"==typeof n.next?this.observe(n):this.do(n,t,i)}toObservable(){switch(this.kind){case"N":return Rt(this.value);case"E":return zI(this.error);case"C":return Cu()}throw new Error("unexpected notification kind value")}static createNext(n){return typeof n<"u"?new Gt("N",n):Gt.undefinedValueNotification}static createError(n){return new Gt("E",void 0,n)}static createComplete(){return Gt.completeNotification}}Gt.completeNotification=new Gt("C"),Gt.undefinedValueNotification=new Gt("N",void 0);class ou extends Ce{constructor(n,t,i=0){super(n),this.scheduler=t,this.delay=i}static dispatch(n){const{notification:t,destination:i}=n;t.observe(i),this.unsubscribe()}scheduleMessage(n){this.destination.add(this.scheduler.schedule(ou.dispatch,this.delay,new Z$(n,this.destination)))}_next(n){this.scheduleMessage(Gt.createNext(n))}_error(n){this.scheduleMessage(Gt.createError(n)),this.unsubscribe()}_complete(){this.scheduleMessage(Gt.createComplete()),this.unsubscribe()}}class Z${constructor(n,t){this.notification=n,this.destination=t}}class K$ extends Ve{constructor(n=Number.POSITIVE_INFINITY,t=Number.POSITIVE_INFINITY,i){super(),this.scheduler=i,this._events=[],this._infiniteTimeWindow=!1,this._bufferSize=n<1?1:n,this._windowTime=t<1?1:t,t===Number.POSITIVE_INFINITY?(this._infiniteTimeWindow=!0,this.next=this.nextInfiniteTimeWindow):this.next=this.nextTimeWindow}nextInfiniteTimeWindow(n){if(!this.isStopped){const t=this._events;t.push(n),t.length>this._bufferSize&&t.shift()}super.next(n)}nextTimeWindow(n){this.isStopped||(this._events.push(new Y$(this._getNow(),n)),this._trimBufferThenGetEvents()),super.next(n)}_subscribe(n){const t=this._infiniteTimeWindow,i=t?this._events:this._trimBufferThenGetEvents(),r=this.scheduler,o=i.length;let s;if(this.closed)throw new Li;if(this.isStopped||this.hasError?s=me.EMPTY:(this.observers.push(n),s=new sb(this,n)),r&&n.add(n=new ou(n,r)),t)for(let a=0;at&&(s=Math.max(s,o-t)),s>0&&r.splice(0,s),r}}class Y${constructor(n,t){this.time=n,this.value=t}}class J${constructor(n){this._box=n,this._destroyed=new Ve,this._resizeSubject=new Ve,this._elementObservables=new Map,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(t=>this._resizeSubject.next(t)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new Le(t=>{const i=this._resizeSubject.subscribe(t);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(sc(t=>t.some(i=>i.target===n)),function Q$(e,n,t){let i;return i=e&&"object"==typeof e?e:{bufferSize:e,windowTime:n,refCount:!1,scheduler:t},r=>r.lift(function X$({bufferSize:e=Number.POSITIVE_INFINITY,windowTime:n=Number.POSITIVE_INFINITY,refCount:t,scheduler:i}){let r,s,o=0,a=!1,c=!1;return function(d){let u;o++,!r||a?(a=!1,r=new K$(e,n,i),u=r.subscribe(this),s=d.subscribe({next(h){r.next(h)},error(h){a=!0,r.error(h)},complete(){c=!0,s=void 0,r.complete()}}),c&&(s=void 0)):u=r.subscribe(this),this.add(()=>{o--,u.unsubscribe(),u=void 0,s&&!c&&t&&0===o&&(s.unsubscribe(),s=void 0,r=void 0)})}}(i))}({bufferSize:1,refCount:!0}),qa(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let e4=(()=>{class e{constructor(){this._observers=new Map,this._ngZone=T(Y)}ngOnDestroy(){for(const[,t]of this._observers)t.destroy();this._observers.clear()}observe(t,i){const r=i?.box||"content-box";return this._observers.has(r)||this._observers.set(r,new J$(r)),this._observers.get(r).observe(t)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),t4=(()=>{class e{create(t){return typeof MutationObserver>"u"?null:new MutationObserver(t)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),n4=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({providers:[t4]})}}return e})();const i4=["notch"],r4=["matFormFieldNotchedOutline",""],o4=["*"],s4=["textField"],a4=["iconPrefixContainer"],c4=["textPrefixContainer"],l4=["iconSuffixContainer"],d4=["textSuffixContainer"],u4=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],h4=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function f4(e,n){1&e&&Z(0,"span",21)}function m4(e,n){if(1&e&&(_(0,"label",20),vt(1,1),J(2,f4,1,0,"span",21),y()),2&e){const t=O(2);I("floating",t._shouldLabelFloat())("monitorResize",t._hasOutline())("id",t._labelId),Fe("for",t._control.disableAutomaticLabeling?null:t._control.id),x(2),Ut(!t.hideRequiredMarker&&t._control.required?2:-1)}}function p4(e,n){1&e&&J(0,m4,3,5,"label",20),2&e&&Ut(O()._hasFloatingLabel()?0:-1)}function g4(e,n){1&e&&Z(0,"div",7)}function b4(e,n){}function _4(e,n){1&e&&J(0,b4,0,0,"ng-template",13),2&e&&(O(2),I("ngTemplateOutlet",Tn(1)))}function v4(e,n){if(1&e&&(_(0,"div",9),J(1,_4,1,1,null,13),y()),2&e){const t=O();I("matFormFieldNotchedOutlineOpen",t._shouldLabelFloat()),x(),Ut(t._forceDisplayInfixLabel()?-1:1)}}function y4(e,n){1&e&&(_(0,"div",10,2),vt(2,2),y())}function w4(e,n){1&e&&(_(0,"div",11,3),vt(2,3),y())}function C4(e,n){}function E4(e,n){1&e&&J(0,C4,0,0,"ng-template",13),2&e&&(O(),I("ngTemplateOutlet",Tn(1)))}function D4(e,n){1&e&&(_(0,"div",14,4),vt(2,4),y())}function x4(e,n){1&e&&(_(0,"div",15,5),vt(2,5),y())}function M4(e,n){1&e&&Z(0,"div",16)}function I4(e,n){1&e&&(_(0,"div",18),vt(1,6),y()),2&e&&I("@transitionMessages",O()._subscriptAnimationState)}function T4(e,n){if(1&e&&(_(0,"mat-hint",22),k(1),y()),2&e){const t=O(2);I("id",t._hintLabelId),x(),ai(t.hintLabel)}}function S4(e,n){if(1&e&&(_(0,"div",19),J(1,T4,2,2,"mat-hint",22),vt(2,7),Z(3,"div",23),vt(4,8),y()),2&e){const t=O();I("@transitionMessages",t._subscriptAnimationState),x(),Ut(t.hintLabel?1:-1)}}let Vg=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=V({type:e,selectors:[["mat-label"]],standalone:!0})}}return e})();const k4=new D("MatError");let A4=0,$I=(()=>{class e{constructor(){this.align="start",this.id="mat-mdc-hint-"+A4++}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=V({type:e,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,r){2&i&&(la("id",r.id),Fe("align",null),Te("mat-mdc-form-field-hint-end","end"===r.align))},inputs:{align:"align",id:"id"},standalone:!0})}}return e})();const N4=new D("MatPrefix"),O4=new D("MatSuffix"),GI=new D("FloatingLabelParent");let qI=(()=>{class e{get floating(){return this._floating}set floating(t){this._floating=t,this.monitorResize&&this._handleResize()}get monitorResize(){return this._monitorResize}set monitorResize(t){this._monitorResize=t,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}constructor(t){this._elementRef=t,this._floating=!1,this._monitorResize=!1,this._resizeObserver=T(e4),this._ngZone=T(Y),this._parent=T(GI),this._resizeSubscription=new me}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function F4(e){if(null!==e.offsetParent)return e.scrollWidth;const t=e.cloneNode(!0);t.style.setProperty("position","absolute"),t.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(t);const i=t.scrollWidth;return t.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static{this.\u0275fac=function(i){return new(i||e)(v(Ie))}}static{this.\u0275dir=V({type:e,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,r){2&i&&Te("mdc-floating-label--float-above",r.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"},standalone:!0})}}return e})();const WI="mdc-line-ripple--active",su="mdc-line-ripple--deactivating";let ZI=(()=>{class e{constructor(t,i){this._elementRef=t,this._handleTransitionEnd=r=>{const o=this._elementRef.nativeElement.classList,s=o.contains(su);"opacity"===r.propertyName&&s&&o.remove(WI,su)},i.runOutsideAngular(()=>{t.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const t=this._elementRef.nativeElement.classList;t.remove(su),t.add(WI)}deactivate(){this._elementRef.nativeElement.classList.add(su)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Y))}}static{this.\u0275dir=V({type:e,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"],standalone:!0})}}return e})(),KI=(()=>{class e{constructor(t,i){this._elementRef=t,this._ngZone=i,this.open=!1}ngAfterViewInit(){const t=this._elementRef.nativeElement.querySelector(".mdc-floating-label");t?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(t.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>t.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(t){this._notch.nativeElement.style.width=this.open&&t?`calc(${t}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Y))}}static{this.\u0275cmp=ft({type:e,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,r){if(1&i&&Re(i4,5),2&i){let o;ve(o=ye())&&(r._notch=o.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,r){2&i&&Te("mdc-notched-outline--notched",r.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},standalone:!0,features:[un],attrs:r4,ngContentSelectors:o4,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(i,r){1&i&&(Mi(),Z(0,"div",1),_(1,"div",2,0),vt(3),y(),Z(4,"div",3))},encapsulation:2,changeDetection:0})}}return e})();const R4={transitionMessages:wx("transitionMessages",[nU("enter",Wo({opacity:1,transform:"translateY(0%)"})),Pp("void => enter",[Wo({opacity:0,transform:"translateY(-5px)"}),Rp("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let YI=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=V({type:e})}}return e})();const QI=new D("MatFormField"),XI=new D("MAT_FORM_FIELD_DEFAULT_OPTIONS");let JI=0,V4=(()=>{class e{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(t){this._hideRequiredMarker=tu(t)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(t){t!==this._floatLabel&&(this._floatLabel=t,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(t){const i=this._appearance;this._appearance=t||this._defaults?.appearance||"fill","outline"===this._appearance&&this._appearance!==i&&(this._needsOutlineLabelOffsetUpdate=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(t){this._subscriptSizing=t||this._defaults?.subscriptSizing||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(t){this._hintLabel=t,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(t){this._explicitFormFieldControl=t}constructor(t,i,r,o,s,a,c,l){this._elementRef=t,this._changeDetectorRef=i,this._dir=o,this._platform=s,this._defaults=a,this._animationMode=c,this._labelChild=eF(Vg),this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+JI++,this._hintLabelId="mat-mdc-hint-"+JI++,this._subscriptAnimationState="",this._destroyed=new Ve,this._isFocused=null,this._needsOutlineLabelOffsetUpdate=!1,this._previousControl=null,this._injector=T(at),this.getLabelId=pr(()=>this._hasFloatingLabel()?this._labelId:null),this._hasFloatingLabel=pr(()=>!!this._labelChild()),a&&(a.appearance&&(this.appearance=a.appearance),this._hideRequiredMarker=!!a?.hideRequiredMarker,a.color&&(this.color=a.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._previousControl=this._control)}ngOnDestroy(){this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(t){const i=this._control,r="mat-mdc-form-field-type-";t&&this._elementRef.nativeElement.classList.remove(r+t.controlType),i.controlType&&this._elementRef.nativeElement.classList.add(r+i.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=i.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._valueChanges?.unsubscribe(),i.ngControl&&i.ngControl.valueChanges&&(this._valueChanges=i.ngControl.valueChanges.pipe(qa(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(t=>!t._isText),this._hasTextPrefix=!!this._prefixChildren.find(t=>t._isText),this._hasIconSuffix=!!this._suffixChildren.find(t=>!t._isText),this._hasTextSuffix=!!this._suffixChildren.find(t=>t._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),function H$(...e){let n=Number.POSITIVE_INFINITY,t=null,i=e[e.length-1];return _d(i)?(t=e.pop(),e.length>1&&"number"==typeof e[e.length-1]&&(n=e.pop())):"number"==typeof i&&(n=e.pop()),null===t&&1===e.length&&e[0]instanceof Le?e[0]:gI(n)(gp(e,t))}(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0),function Gw(e,n){!n?.injector&&Ku();const t=n?.injector??T(at);return Jt(t)?(Et("NgAfterRender"),qw(e,t,n,!1)):Ww}(()=>{this._needsOutlineLabelOffsetUpdate&&(this._needsOutlineLabelOffsetUpdate=!1,this._updateOutlineLabelOffset())},{injector:this._injector}),this._dir.change.pipe(qa(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_shouldLabelFloat(){return!!this._hasFloatingLabel()&&(this._control.shouldLabelFloat||this._shouldAlwaysFloat())}_shouldForward(t){const i=this._control?this._control.ngControl:null;return i&&i[t]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let t=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&t.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const i=this._hintChildren?this._hintChildren.find(o=>"start"===o.align):null,r=this._hintChildren?this._hintChildren.find(o=>"end"===o.align):null;i?t.push(i.id):this._hintLabel&&t.push(this._hintLabelId),r&&t.push(r.id)}else this._errorChildren&&t.push(...this._errorChildren.map(i=>i.id));this._control.setDescribedByIds(t)}}_updateOutlineLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return;const t=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(t.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdate=!0);const i=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,s=this._textSuffixContainer?.nativeElement,a=i?.getBoundingClientRect().width??0,c=r?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,d=s?.getBoundingClientRect().width??0;t.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${a+c}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`,this._elementRef.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${a+c+l+d}px)`)}_isAttachedToDom(){const t=this._elementRef.nativeElement;if(t.getRootNode){const i=t.getRootNode();return i&&i!==t}return document.documentElement.contains(t)}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Sn),v(Y),v(f$),v(Fi),v(XI,8),v(so,8),v(lt))}}static{this.\u0275cmp=ft({type:e,selectors:[["mat-form-field"]],contentQueries:function(i,r,o){if(1&i&&(_E(o,r._labelChild,Vg,5),fr(o,YI,5),fr(o,N4,5),fr(o,O4,5),fr(o,k4,5),fr(o,$I,5)),2&i){let s;(function vE(e=1){Nc(uh()+e)})(),ve(s=ye())&&(r._formFieldControl=s.first),ve(s=ye())&&(r._prefixChildren=s),ve(s=ye())&&(r._suffixChildren=s),ve(s=ye())&&(r._errorChildren=s),ve(s=ye())&&(r._hintChildren=s)}},viewQuery:function(i,r){if(1&i&&(Re(s4,5),Re(a4,5),Re(c4,5),Re(l4,5),Re(d4,5),Re(qI,5),Re(KI,5),Re(ZI,5)),2&i){let o;ve(o=ye())&&(r._textField=o.first),ve(o=ye())&&(r._iconPrefixContainer=o.first),ve(o=ye())&&(r._textPrefixContainer=o.first),ve(o=ye())&&(r._iconSuffixContainer=o.first),ve(o=ye())&&(r._textSuffixContainer=o.first),ve(o=ye())&&(r._floatingLabel=o.first),ve(o=ye())&&(r._notchedOutline=o.first),ve(o=ye())&&(r._lineRipple=o.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(i,r){2&i&&Te("mat-mdc-form-field-label-always-float",r._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",r._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",r._hasIconSuffix)("mat-form-field-invalid",r._control.errorState)("mat-form-field-disabled",r._control.disabled)("mat-form-field-autofilled",r._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===r._animationMode)("mat-form-field-appearance-fill","fill"==r.appearance)("mat-form-field-appearance-outline","outline"==r.appearance)("mat-form-field-hide-placeholder",r._hasFloatingLabel()&&!r._shouldLabelFloat())("mat-focused",r._control.focused)("mat-primary","accent"!==r.color&&"warn"!==r.color)("mat-accent","accent"===r.color)("mat-warn","warn"===r.color)("ng-untouched",r._shouldForward("untouched"))("ng-touched",r._shouldForward("touched"))("ng-pristine",r._shouldForward("pristine"))("ng-dirty",r._shouldForward("dirty"))("ng-valid",r._shouldForward("valid"))("ng-invalid",r._shouldForward("invalid"))("ng-pending",r._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],standalone:!0,features:[we([{provide:QI,useExisting:e},{provide:GI,useExisting:e}]),un],ngContentSelectors:h4,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,r){if(1&i){const o=Dt();Mi(u4),J(0,p4,1,1,"ng-template",null,0,$t),_(2,"div",6,1),ne("click",function(a){return B(o),j(r._control.onContainerClick(a))}),J(4,g4,1,0,"div",7),_(5,"div",8),J(6,v4,2,2,"div",9)(7,y4,3,0,"div",10)(8,w4,3,0,"div",11),_(9,"div",12),J(10,E4,1,1,null,13),vt(11),y(),J(12,D4,3,0,"div",14)(13,x4,3,0,"div",15),y(),J(14,M4,1,0,"div",16),y(),_(15,"div",17),J(16,I4,2,1,"div",18)(17,S4,5,2,"div",19),y()}if(2&i){let o;x(2),Te("mdc-text-field--filled",!r._hasOutline())("mdc-text-field--outlined",r._hasOutline())("mdc-text-field--no-label",!r._hasFloatingLabel())("mdc-text-field--disabled",r._control.disabled)("mdc-text-field--invalid",r._control.errorState),x(2),Ut(r._hasOutline()||r._control.disabled?-1:4),x(2),Ut(r._hasOutline()?6:-1),x(),Ut(r._hasIconPrefix?7:-1),x(),Ut(r._hasTextPrefix?8:-1),x(2),Ut(!r._hasOutline()||r._forceDisplayInfixLabel()?10:-1),x(2),Ut(r._hasTextSuffix?12:-1),x(),Ut(r._hasIconSuffix?13:-1),x(),Ut(r._hasOutline()?-1:14),x(),Te("mat-mdc-form-field-subscript-dynamic-size","dynamic"===r.subscriptSizing),x(),Ut("error"===(o=r._getDisplayedMessages())?16:"hint"===o?17:-1)}},dependencies:[qI,KI,md,ZI,$I],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--disabled .cdk-high-contrast-active .mdc-text-field__input{background-color:Window}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-app-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.cdk-high-contrast-active .mdc-text-field--disabled .mdc-floating-label{z-index:1}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-app-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-app-outline));border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-app-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-app-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-app-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-app-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-app-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-app-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-app-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-app-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-app-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-app-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-app-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-app-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-app-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-app-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-app-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-app-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-app-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-app-body-large-weight))}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-app-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-app-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-app-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field-infix:has(textarea[cols]){width:auto}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[R4.transitionMessages]},changeDetection:0})}}return e})(),Bg=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,br,n4,xt]})}}return e})();class j4{constructor(n){this.selector=n}call(n,t){return t.subscribe(new H4(n,this.selector,this.caught))}}class H4 extends wd{constructor(n,t,i){super(n),this.selector=t,this.caught=i}error(n){if(!this.isStopped){let t;try{t=this.selector(n,this.caught)}catch(o){return void super.error(o)}this._unsubscribeAndRecycle();const i=new yd(this);this.add(i);const r=Cd(t,i);r!==i&&this.add(r)}}}class z4{constructor(n){this.callback=n}call(n,t){return t.subscribe(new $4(n,this.callback))}}class $4 extends Ce{constructor(n,t){super(n),this.add(new me(t))}}function nT(){return function(n){return n.lift(new G4(n))}}class G4{constructor(n){this.connectable=n}call(n,t){const{connectable:i}=this;i._refCount++;const r=new q4(n,i),o=t.subscribe(r);return r.closed||(r.connection=i.connect()),o}}class q4 extends Ce{constructor(n,t){super(n),this.connectable=t}_unsubscribe(){const{connectable:n}=this;if(!n)return void(this.connection=null);this.connectable=null;const t=n._refCount;if(t<=0)return void(this.connection=null);if(n._refCount=t-1,t>1)return void(this.connection=null);const{connection:i}=this,r=n._connection;this.connection=null,r&&(!i||r===i)&&r.unsubscribe()}}class W4 extends Le{constructor(n,t){super(),this.source=n,this.subjectFactory=t,this._refCount=0,this._isComplete=!1}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}connect(){let n=this._connection;return n||(this._isComplete=!1,n=this._connection=new me,n.add(this.source.subscribe(new K4(this.getSubject(),this))),n.closed&&(this._connection=null,n=me.EMPTY)),n}refCount(){return nT()(this)}}const Z4=(()=>{const e=W4.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:e._subscribe},_isComplete:{value:e._isComplete,writable:!0},getSubject:{value:e.getSubject},connect:{value:e.connect},refCount:{value:e.refCount}}})();class K4 extends ab{constructor(n,t){super(n),this.connectable=t}_error(n){this._unsubscribe(),super._error(n)}_complete(){this.connectable._isComplete=!0,this._unsubscribe(),super._complete()}_unsubscribe(){const n=this.connectable;if(n){this.connectable=null;const t=n._connection;n._refCount=0,n._subject=null,n._connection=null,t&&t.unsubscribe()}}}class X4{constructor(n,t){this.subjectFactory=n,this.selector=t}call(n,t){const{selector:i}=this,r=this.subjectFactory(),o=i(r).subscribe(n);return o.add(t.subscribe(r)),o}}function J4(){return new Ve}const t5=["*"];let au;function Za(e){return function n5(){if(void 0===au&&(au=null,typeof window<"u")){const e=window;void 0!==e.trustedTypes&&(au=e.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return au}()?.createHTML(e)||e}function iT(e){return Error(`Unable to find icon with the name "${e}"`)}function rT(e){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${e}".`)}function oT(e){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${e}".`)}class Sr{constructor(n,t,i){this.url=n,this.svgText=t,this.options=i}}let cu=(()=>{class e{constructor(t,i,r,o){this._httpClient=t,this._sanitizer=i,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=r}addSvgIcon(t,i,r){return this.addSvgIconInNamespace("",t,i,r)}addSvgIconLiteral(t,i,r){return this.addSvgIconLiteralInNamespace("",t,i,r)}addSvgIconInNamespace(t,i,r,o){return this._addSvgIconConfig(t,i,new Sr(r,null,o))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,i,r,o){const s=this._sanitizer.sanitize(_t.HTML,r);if(!s)throw oT(r);const a=Za(s);return this._addSvgIconConfig(t,i,new Sr("",a,o))}addSvgIconSet(t,i){return this.addSvgIconSetInNamespace("",t,i)}addSvgIconSetLiteral(t,i){return this.addSvgIconSetLiteralInNamespace("",t,i)}addSvgIconSetInNamespace(t,i,r){return this._addSvgIconSetConfig(t,new Sr(i,null,r))}addSvgIconSetLiteralInNamespace(t,i,r){const o=this._sanitizer.sanitize(_t.HTML,i);if(!o)throw oT(i);const s=Za(o);return this._addSvgIconSetConfig(t,new Sr("",s,r))}registerFontClassAlias(t,i=t){return this._fontCssClassesByAlias.set(t,i),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){const i=this._sanitizer.sanitize(_t.RESOURCE_URL,t);if(!i)throw rT(t);const r=this._cachedIconsByUrl.get(i);return r?Rt(lu(r)):this._loadSvgIconFromConfig(new Sr(t,null)).pipe(Ta(o=>this._cachedIconsByUrl.set(i,o)),ht(o=>lu(o)))}getNamedSvgIcon(t,i=""){const r=sT(i,t);let o=this._svgIconConfigs.get(r);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(i,t),o)return this._svgIconConfigs.set(r,o),this._getSvgFromConfig(o);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(t,s):zI(iT(r))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?Rt(lu(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(ht(i=>lu(i)))}_getSvgFromIconSetConfigs(t,i){const r=this._extractIconWithNameFromAnySet(t,i);if(r)return Rt(r);const o=i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(function B4(e){return function(t){const i=new j4(e),r=t.lift(i);return i.caught=r}}(a=>{const l=`Loading icon set URL: ${this._sanitizer.sanitize(_t.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(l)),Rt(null)})));return tM(o).pipe(ht(()=>{const s=this._extractIconWithNameFromAnySet(t,i);if(!s)throw iT(t);return s}))}_extractIconWithNameFromAnySet(t,i){for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.svgText&&o.svgText.toString().indexOf(t)>-1){const s=this._svgElementFromConfig(o),a=this._extractSvgIconFromSet(s,t,o.options);if(a)return a}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(Ta(i=>t.svgText=i),ht(()=>this._svgElementFromConfig(t)))}_loadSvgIconSetFromConfig(t){return t.svgText?Rt(null):this._fetchIcon(t).pipe(Ta(i=>t.svgText=i))}_extractSvgIconFromSet(t,i,r){const o=t.querySelector(`[id="${i}"]`);if(!o)return null;const s=o.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,r);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),r);const a=this._svgElementFromString(Za(""));return a.appendChild(s),this._setSvgAttributes(a,r)}_svgElementFromString(t){const i=this._document.createElement("DIV");i.innerHTML=t;const r=i.querySelector("svg");if(!r)throw Error(" tag not found");return r}_toSvgElement(t){const i=this._svgElementFromString(Za("")),r=t.attributes;for(let o=0;oZa(l)),function U4(e){return n=>n.lift(new z4(e))}(()=>this._inProgressUrlFetches.delete(s)),function e5(){return e=>nT()(function Q4(e,n){return function(i){let r;if(r="function"==typeof e?e:function(){return e},"function"==typeof n)return i.lift(new X4(r,n));const o=Object.create(i,Z4);return o.source=i,o.subjectFactory=r,o}}(J4)(e))}());return this._inProgressUrlFetches.set(s,c),c}_addSvgIconConfig(t,i,r){return this._svgIconConfigs.set(sT(t,i),r),this}_addSvgIconSetConfig(t,i){const r=this._iconSetConfigs.get(t);return r?r.push(i):this._iconSetConfigs.set(t,[i]),this}_svgElementFromConfig(t){if(!t.svgElement){const i=this._svgElementFromString(t.svgText);this._setSvgAttributes(i,t.options),t.svgElement=i}return t.svgElement}_getIconConfigFromResolvers(t,i){for(let r=0;rn?n.pathname+n.search:""}}}),aT=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],l5=aT.map(e=>`[${e}]`).join(", "),d5=/^url\(['"]?#(.*?)['"]?\)$/;let cT=(()=>{class e{get color(){return this._color||this._defaultColor}set color(t){this._color=t}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){const i=this._cleanupFontValue(t);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){const i=this._cleanupFontValue(t);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}constructor(t,i,r,o,s,a){this._elementRef=t,this._iconRegistry=i,this._location=o,this._errorHandler=s,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=me.EMPTY,a&&(a.color&&(this.color=this._defaultColor=a.color),a.fontSet&&(this.fontSet=a.fontSet)),r||t.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(t){if(!t)return["",""];const i=t.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const t=this._elementsWithExternalReferences;if(t&&t.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){const t=this._elementRef.nativeElement;let i=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const r=t.childNodes[i];(1!==r.nodeType||"svg"===r.nodeName.toLowerCase())&&r.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const t=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(r=>r.length>0);this._previousFontSetClass.forEach(r=>t.classList.remove(r)),i.forEach(r=>t.classList.add(r)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return"string"==typeof t?t.trim().split(" ")[0]:t}_prependPathToReferences(t){const i=this._elementsWithExternalReferences;i&&i.forEach((r,o)=>{r.forEach(s=>{o.setAttribute(s.name,`url('${t}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(t){const i=t.querySelectorAll(l5),r=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let o=0;o{const a=i[o],c=a.getAttribute(s),l=c?c.match(d5):null;if(l){let d=r.get(a);d||(d=[],r.set(a,d)),d.push({name:s,value:l[1]})}})}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){const[i,r]=this._splitIconName(t);i&&(this._svgNamespace=i),r&&(this._svgName=r),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(r,i).pipe(cs(1)).subscribe(o=>this._setSvgElement(o),o=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${r}! ${o.message}`))})}}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(cu),Zi("aria-hidden"),v(a5),v(Yt),v(s5,8))}}static{this.\u0275cmp=ft({type:e,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,r){2&i&&(Fe("data-mat-icon-type",r._usingFontIcon()?"font":"svg")("data-mat-icon-name",r._svgName||r.fontIcon)("data-mat-icon-namespace",r._svgNamespace||r.fontSet)("fontIcon",r._usingFontIcon()?r.fontIcon:null),aa(r.color?"mat-"+r.color:""),Te("mat-icon-inline",r.inline)("mat-icon-no-color","primary"!==r.color&&"accent"!==r.color&&"warn"!==r.color))},inputs:{color:"color",inline:[2,"inline","inline",ct],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[Js,un],ngContentSelectors:t5,decls:1,vars:0,template:function(i,r){1&i&&(Mi(),vt(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}}return e})(),u5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,xt]})}}return e})();const lT=$a({passive:!0});let h5=(()=>{class e{constructor(t,i){this._platform=t,this._ngZone=i,this._monitoredElements=new Map}monitor(t){if(!this._platform.isBrowser)return ub;const i=Mr(t),r=this._monitoredElements.get(i);if(r)return r.subject;const o=new Ve,s="cdk-text-field-autofilled",a=c=>{"cdk-text-field-autofill-start"!==c.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===c.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{i.addEventListener("animationstart",a,lT),i.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(i,{subject:o,unlisten:()=>{i.removeEventListener("animationstart",a,lT)}}),o}stopMonitoring(t){const i=Mr(t),r=this._monitoredElements.get(i);r&&(r.unlisten(),r.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((t,i)=>this.stopMonitoring(i))}static{this.\u0275fac=function(i){return new(i||e)(N(Fi),N(Y))}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),f5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({})}}return e})();const m5=new D("MAT_INPUT_VALUE_ACCESSOR"),p5=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let g5=0,b5=(()=>{class e{get disabled(){return this._disabled}set disabled(t){this._disabled=tu(t),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(t){this._id=t||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(tz.required)??!1}set required(t){this._required=tu(t)}get type(){return this._type}set type(t){this._type=t||"text",this._validateType(),!this._isTextarea&&aI().has(this._type)&&(this._elementRef.nativeElement.type=this._type),this._ensureWheelDefaultBehavior()}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(t){this._errorStateTracker.matcher=t}get value(){return this._inputValueAccessor.value}set value(t){t!==this.value&&(this._inputValueAccessor.value=t,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(t){this._readonly=tu(t)}get errorState(){return this._errorStateTracker.errorState}set errorState(t){this._errorStateTracker.errorState=t}constructor(t,i,r,o,s,a,c,l,d,u){this._elementRef=t,this._platform=i,this.ngControl=r,this._autofillMonitor=l,this._ngZone=d,this._formField=u,this._uid="mat-input-"+g5++,this._webkitBlinkWheelListenerAttached=!1,this.focused=!1,this.stateChanges=new Ve,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(m=>aI().has(m)),this._iOSKeyupListener=m=>{const p=m.target;!p.value&&0===p.selectionStart&&0===p.selectionEnd&&(p.setSelectionRange(1,1),p.setSelectionRange(0,0))},this._webkitBlinkWheelListener=()=>{};const h=this._elementRef.nativeElement,f=h.nodeName.toLowerCase();this._inputValueAccessor=c||h,this._previousNativeValue=this.value,this.id=this.id,i.IOS&&d.runOutsideAngular(()=>{t.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._errorStateTracker=new OI(a,r,s,o,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===f,this._isTextarea="textarea"===f,this._isInFormField=!!u,this._isNativeSelect&&(this.controlType=h.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(t=>{this.autofilled=t.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener),this._webkitBlinkWheelListenerAttached&&this._elementRef.nativeElement.removeEventListener("wheel",this._webkitBlinkWheelListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(t){this._elementRef.nativeElement.focus(t)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(t){t!==this.focused&&(this.focused=t,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const t=this._elementRef.nativeElement.value;this._previousNativeValue!==t&&(this._previousNativeValue=t,this.stateChanges.next())}_dirtyCheckPlaceholder(){const t=this._getPlaceholder();if(t!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=t,t?i.setAttribute("placeholder",t):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){p5.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let t=this._elementRef.nativeElement.validity;return t&&t.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const t=this._elementRef.nativeElement,i=t.options[0];return this.focused||t.multiple||!this.empty||!!(t.selectedIndex>-1&&i&&i.label)}return this.focused||!this.empty}setDescribedByIds(t){t.length?this._elementRef.nativeElement.setAttribute("aria-describedby",t.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const t=this._elementRef.nativeElement;return this._isNativeSelect&&(t.multiple||t.size>1)}_ensureWheelDefaultBehavior(){!this._webkitBlinkWheelListenerAttached&&"number"===this._type&&(this._platform.BLINK||this._platform.WEBKIT)&&(this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("wheel",this._webkitBlinkWheelListener)}),this._webkitBlinkWheelListenerAttached=!0),this._webkitBlinkWheelListenerAttached&&"number"!==this._type&&(this._elementRef.nativeElement.removeEventListener("wheel",this._webkitBlinkWheelListener),this._webkitBlinkWheelListenerAttached=!0)}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Fi),v(mi,10),v(Ua,8),v(Jd,8),v(E$),v(m5,10),v(h5),v(Y),v(QI,8))}}static{this.\u0275dir=V({type:e,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(i,r){1&i&&ne("focus",function(){return r._focusChanged(!0)})("blur",function(){return r._focusChanged(!1)})("input",function(){return r._onInput()}),2&i&&(la("id",r.id)("disabled",r.disabled)("required",r.required),Fe("name",r.name||null)("readonly",r.readonly&&!r._isNativeSelect||null)("aria-invalid",r.empty&&r.required?null:r.errorState)("aria-required",r.required)("id",r.id),Te("mat-input-server",r._isServer)("mat-mdc-form-field-textarea-control",r._isInFormField&&r._isTextarea)("mat-mdc-form-field-input-control",r._isInFormField)("mdc-text-field__input",r._isInFormField)("mat-mdc-native-select-inline",r._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],standalone:!0,features:[we([{provide:YI,useExisting:e}]),Bt]})}}return e})(),_5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,Bg,Bg,f5,xt]})}}return e})(),v5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,xt]})}}return e})(),w5=(()=>{class e{constructor(){this._listeners=[]}notify(t,i){for(let r of this._listeners)r(t,i)}listen(t){return this._listeners.push(t),()=>{this._listeners=this._listeners.filter(i=>t!==i)}}ngOnDestroy(){this._listeners=[]}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=L({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();const C5=["input"],E5=["formField"],D5=["*"];let dT=0;class uT{constructor(n,t){this.source=n,this.value=t}}const x5={provide:pn,useExisting:be(()=>fT),multi:!0},hT=new D("MatRadioGroup"),M5=new D("mat-radio-default-options",{providedIn:"root",factory:function I5(){return{color:"accent",disabledInteractive:!1}}});let fT=(()=>{class e{get name(){return this._name}set name(t){this._name=t,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(t){this._labelPosition="before"===t?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(t){this._value!==t&&(this._value=t,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(t){this._selected=t,this.value=t?t.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._markRadiosForCheck()}get required(){return this._required}set required(t){this._required=t,this._markRadiosForCheck()}get disabledInteractive(){return this._disabledInteractive}set disabledInteractive(t){this._disabledInteractive=t,this._markRadiosForCheck()}constructor(t){this._changeDetector=t,this._value=null,this._name="mat-radio-group-"+dT++,this._selected=null,this._isInitialized=!1,this._labelPosition="after",this._disabled=!1,this._required=!1,this._controlValueAccessorChangeFn=()=>{},this.onTouched=()=>{},this.change=new de,this._disabledInteractive=!1}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(t=>t===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(t=>{t.name=this.name,t._markForCheck()})}_updateSelectedRadioFromValue(){this._radios&&(null===this._selected||this._selected.value!==this._value)&&(this._selected=null,this._radios.forEach(i=>{i.checked=this.value===i.value,i.checked&&(this._selected=i)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new uT(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(t=>t._markForCheck())}writeValue(t){this.value=t,this._changeDetector.markForCheck()}registerOnChange(t){this._controlValueAccessorChangeFn=t}registerOnTouched(t){this.onTouched=t}setDisabledState(t){this.disabled=t,this._changeDetector.markForCheck()}static{this.\u0275fac=function(i){return new(i||e)(v(Sn))}}static{this.\u0275dir=V({type:e,selectors:[["mat-radio-group"]],contentQueries:function(i,r,o){if(1&i&&fr(o,jg,5),2&i){let s;ve(s=ye())&&(r._radios=s)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[2,"disabled","disabled",ct],required:[2,"required","required",ct],disabledInteractive:[2,"disabledInteractive","disabledInteractive",ct]},outputs:{change:"change"},exportAs:["matRadioGroup"],standalone:!0,features:[we([x5,{provide:hT,useExisting:e}]),Js]})}}return e})(),jg=(()=>{class e{get checked(){return this._checked}set checked(t){this._checked!==t&&(this._checked=t,t&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!t&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),t&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(t){this._value!==t&&(this._value=t,null!==this.radioGroup&&(this.checked||(this.checked=this.radioGroup.value===t),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(t){this._labelPosition=t}get disabled(){return this._disabled||null!==this.radioGroup&&this.radioGroup.disabled}set disabled(t){this._setDisabled(t)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(t){this._required=t}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._defaultOptions&&this._defaultOptions.color||"accent"}set color(t){this._color=t}get disabledInteractive(){return this._disabledInteractive||null!==this.radioGroup&&this.radioGroup.disabledInteractive}set disabledInteractive(t){this._disabledInteractive=t}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(t,i,r,o,s,a,c,l){this._elementRef=i,this._changeDetector=r,this._focusMonitor=o,this._radioDispatcher=s,this._defaultOptions=c,this._ngZone=T(Y),this._uniqueId="mat-radio-"+ ++dT,this.id=this._uniqueId,this.disableRipple=!1,this.tabIndex=0,this.change=new de,this._checked=!1,this._value=null,this._removeUniqueSelectionListener=()=>{},this._injector=T(at),this._onInputClick=d=>{this.disabled&&this.disabledInteractive&&d.preventDefault()},this.radioGroup=t,this._noopAnimations="NoopAnimations"===a,this._disabledInteractive=c?.disabledInteractive??!1,l&&(this.tabIndex=Km(l,0))}focus(t,i){i?this._focusMonitor.focusVia(this._inputElement,i,t):this._inputElement.nativeElement.focus(t)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((t,i)=>{t!==this.id&&i===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(t=>{!t&&this.radioGroup&&this.radioGroup._touch()}),this._ngZone.runOutsideAngular(()=>{this._inputElement.nativeElement.addEventListener("click",this._onInputClick)})}ngOnDestroy(){this._inputElement?.nativeElement.removeEventListener("click",this._onInputClick),this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new uT(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputInteraction(t){if(t.stopPropagation(),!this.checked&&!this.disabled){const i=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),i&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(t){this._onInputInteraction(t),(!this.disabled||this.disabledInteractive)&&this._inputElement?.nativeElement.focus()}_setDisabled(t){this._disabled!==t&&(this._disabled=t,this._changeDetector.markForCheck())}_updateTabIndex(){const t=this.radioGroup;let i;if(i=t&&t.selected&&!this.disabled?t.selected===this?this.tabIndex:-1:this.tabIndex,i!==this._previousTabIndex){const r=this._inputElement?.nativeElement;r&&(r.setAttribute("tabindex",i+""),this._previousTabIndex=i,ar(()=>{queueMicrotask(()=>{t&&t.selected&&t.selected!==this&&document.activeElement===r&&(t.selected?._inputElement.nativeElement.focus(),document.activeElement===r&&this._inputElement.nativeElement.blur())})},{injector:this._injector}))}}static{this.\u0275fac=function(i){return new(i||e)(v(hT,8),v(Ie),v(Sn),v(a$),v(w5),v(so,8),v(M5,8),Zi("tabindex"))}}static{this.\u0275cmp=ft({type:e,selectors:[["mat-radio-button"]],viewQuery:function(i,r){if(1&i&&(Re(C5,5),Re(E5,7,Ie)),2&i){let o;ve(o=ye())&&(r._inputElement=o.first),ve(o=ye())&&(r._rippleTrigger=o.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:19,hostBindings:function(i,r){1&i&&ne("focus",function(){return r._inputElement.nativeElement.focus()}),2&i&&(Fe("id",r.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),Te("mat-primary","primary"===r.color)("mat-accent","accent"===r.color)("mat-warn","warn"===r.color)("mat-mdc-radio-checked",r.checked)("mat-mdc-radio-disabled",r.disabled)("mat-mdc-radio-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],disableRipple:[2,"disableRipple","disableRipple",ct],tabIndex:[2,"tabIndex","tabIndex",t=>null==t?0:Km(t)],checked:[2,"checked","checked",ct],value:"value",labelPosition:"labelPosition",disabled:[2,"disabled","disabled",ct],required:[2,"required","required",ct],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",ct]},outputs:{change:"change"},exportAs:["matRadioButton"],standalone:!0,features:[Js,un],ngContentSelectors:D5,decls:13,vars:17,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],[1,"mat-mdc-radio-touch-target",3,"click"],["type","radio",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],[1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","",1,"mat-radio-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(i,r){if(1&i){const o=Dt();Mi(),_(0,"div",2,0)(2,"div",3)(3,"div",4),ne("click",function(a){return B(o),j(r._onTouchTargetClick(a))}),y(),_(4,"input",5,1),ne("change",function(a){return B(o),j(r._onInputInteraction(a))}),y(),_(6,"div",6),Z(7,"div",7)(8,"div",8),y(),_(9,"div",9),Z(10,"div",10),y()(),_(11,"label",11),vt(12),y()()}2&i&&(I("labelPosition",r.labelPosition),x(2),Te("mdc-radio--disabled",r.disabled),x(2),I("id",r.inputId)("checked",r.checked)("disabled",r.disabled&&!r.disabledInteractive)("required",r.required),Fe("name",r.name)("value",r.value)("aria-label",r.ariaLabel)("aria-labelledby",r.ariaLabelledby)("aria-describedby",r.ariaDescribedby)("aria-disabled",r.disabled&&r.disabledInteractive?"true":null),x(5),I("matRippleTrigger",r._rippleTrigger.nativeElement)("matRippleDisabled",r._isRippleDisabled())("matRippleCentered",!0),x(2),I("for",r.inputId))},dependencies:[Pg,jI],styles:['.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color;padding:calc((var(--mdc-radio-state-layer-size) - 20px)/2)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled])~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-hover-icon-color, var(--mat-app-on-surface))}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-hover-icon-color, var(--mat-app-primary))}.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-pressed-icon-color, var(--mat-app-on-surface))}.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-pressed-icon-color, var(--mat-app-primary))}.mat-mdc-radio-button .mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mat-mdc-radio-button .mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size);top:calc(-1*(var(--mdc-radio-state-layer-size) - 20px)/2);left:calc(-1*(var(--mdc-radio-state-layer-size) - 20px)/2)}.mat-mdc-radio-button .mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-radio-button .mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;top:0;right:0;left:0;cursor:inherit;z-index:1;width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 1),transform 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color, var(--mat-app-on-surface));opacity:var(--mdc-radio-disabled-unselected-icon-opacity)}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background{cursor:default}.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color, var(--mat-app-on-surface));opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-icon-color, var(--mat-app-primary))}.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio__native-control:enabled:focus:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-focus-icon-color, var(--mat-app-primary))}.mat-mdc-radio-button .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 90ms cubic-bezier(0, 0, 0.2, 1),border-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled{pointer-events:auto}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color, var(--mat-app-on-surface));opacity:var(--mdc-radio-disabled-unselected-icon-opacity)}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled:hover .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control:checked:focus+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__native-control+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color, var(--mat-app-on-surface));opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-app-on-surface))}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color, var(--mat-app-primary))}.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mat-ripple-element,.mat-mdc-radio-button.mat-mdc-radio-disabled-interactive .mdc-radio--disabled .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color, var(--mat-app-on-surface))}.mat-mdc-radio-button .mat-internal-form-field{color:var(--mat-radio-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-radio-label-text-font, var(--mat-app-body-medium-font));line-height:var(--mat-radio-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-radio-label-text-size, var(--mat-app-body-medium-size));letter-spacing:var(--mat-radio-label-text-tracking, var(--mat-app-body-medium-tracking));font-weight:var(--mat-radio-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color)}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple .mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-focus-icon-color, var(--mat-app-on-surface))}.mat-mdc-radio-button.cdk-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-radio-disabled{cursor:default;pointer-events:none}.mat-mdc-radio-disabled.mat-mdc-radio-disabled-interactive{pointer-events:auto}.mat-mdc-radio-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display)}[dir=rtl] .mat-mdc-radio-touch-target{left:auto;right:50%;transform:translate(50%, -50%)}'],encapsulation:2,changeDetection:0})}}return e})(),T5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e})}static{this.\u0275inj=He({imports:[xt,br,BI,jg,xt]})}}return e})();const ts=typeof window<"u",S5_scrollBehavior=ts&&"scrollBehavior"in document.body.style,mT_ios=ts&&!!window.navigator.userAgent.match(/iP(ad|hone|od)/),k5={galleryLabel:"Image Gallery",viewerLabel:"Displayed gallery images."};let pT=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["chevron-icon"]],standalone:!0,features:[un],decls:17,vars:0,consts:[["version","1.1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink","x","0px","y","0px","viewBox","0 0 407.436 407.436",0,"xml","space","preserve"],["points","112.814,0 91.566,21.178 273.512,203.718 91.566,386.258 112.814,407.436 315.869,203.718 "]],template:function(i,r){1&i&&(mh(),_(0,"svg",0),Z(1,"polygon",1)(2,"g")(3,"g")(4,"g")(5,"g")(6,"g")(7,"g")(8,"g")(9,"g")(10,"g")(11,"g")(12,"g")(13,"g")(14,"g")(15,"g")(16,"g"),y())},styles:["svg[_ngcontent-%COMP%]{width:26px;height:26px}svg[_ngcontent-%COMP%]{fill:#fff;filter:drop-shadow(0 0 1px black);display:block}"],changeDetection:0})}}return e})();const A5=["thumbs"],N5=["thumb"],O5=(e,n,t)=>({index:e,selectedIndex:n,item:t});function F5(e,n){1&e&&(_(0,"div"),Z(1,"chevron-icon"),y())}function R5(e,n){if(1&e){const t=Dt();_(0,"button",7),ne("click",function(){return B(t),j(O().slide(-1))}),J(1,F5,2,0,"div",8),y()}if(2&e){const t=O();x(),I("ngIf",!t.arrowTemplate)("ngIfElse",t.arrowTemplate)}}function P5(e,n){1&e&&Z(0,"li",9)}function L5(e,n){if(1&e&&(_(0,"div",14),Z(1,"div",15),y()),2&e){const t=O(3).$implicit;x(),Te("thumbs-error-icon--video",t.video)}}function V5(e,n){if(1&e&&(dr(0),J(1,L5,2,2,"div",13),ur()),2&e){const t=O(3);x(),I("ngIf",!t.errorTemplate)("ngIfElse",t.errorTemplate)}}function B5(e,n){if(1&e){const t=Dt();dr(0),_(1,"img",11),ne("load",function(){B(t);const r=O().$implicit;return j(O().onLoadChange(r,!0))})("error",function(){B(t);const r=O().$implicit;return j(O().onLoadChange(r,!1))}),y(),J(2,V5,2,2,"ng-container",12),ur()}if(2&e){const t=O().$implicit;x(),I("src",t.thumbSrc||"",ln)("alt",t.alt),x(),I("ngIf",t._thumbFailed)}}function j5(e,n){1&e&&Bo(0)}function H5(e,n){if(1&e&&J(0,j5,1,0,"ng-container",16),2&e){const t=O(),i=t.$implicit,r=t.index,o=O();I("ngTemplateOutlet",o.thumbTemplate)("ngTemplateOutletContext",zE(2,O5,r,o.selectedIndex,i))}}function U5(e,n){if(1&e){const t=Dt();_(0,"li",10,1),ne("click",function(r){const o=B(t),s=o.$implicit,a=o.index,c=O();return j(c.emitEvent(a,s,r,c.thumbClick))})("mouseenter",function(r){const o=B(t),s=o.$implicit,a=o.index,c=O();return j(c.emitEvent(a,s,r,c.thumbHover))}),J(2,B5,3,3,"ng-container",8)(3,H5,1,6,"ng-template",null,2,$t),y()}if(2&e){const t=n.index,i=Tn(4),r=O();Te("thumbs-item--selected",t===r.selectedIndex),x(2),I("ngIf",!r.thumbTemplate)("ngIfElse",i)}}function z5(e,n){1&e&&(_(0,"div"),Z(1,"chevron-icon"),y())}function $5(e,n){if(1&e){const t=Dt();_(0,"button",17),ne("click",function(){return B(t),j(O().slide(1))}),J(1,z5,2,0,"div",8),y()}if(2&e){const t=O();x(),I("ngIf",!t.arrowTemplate)("ngIfElse",t.arrowTemplate)}}let gT=(()=>{class e{get cssClass(){return`thumbs--${this.orientation}`}get hostOffsetAxis(){return this.vertical?this.elRef.nativeElement.offsetHeight:this.elRef.nativeElement.offsetWidth}get scrollKey(){return this.vertical?"scrollTop":"scrollLeft"}get thumbsEmpty(){return!this.thumbsRef||!this.thumbsRef.length}get vertical(){return"left"===this.orientation||"right"===this.orientation}constructor(t,i){this.cd=t,this.elRef=i,this.items=[],this.thumbClick=new de,this.thumbHover=new de,this.showStartArrow=!1,this.showEndArrow=!1,this.onArrowsObserved=r=>{if(this.thumbsEmpty)return;const o=r[0].target,{first:s,last:a}=this.thumbsRef;this.setObservedArrows(o===s.nativeElement?r[0]:r[1],o===a.nativeElement?r[0]:r[1]),this.cd.detectChanges()}}ngOnChanges({arrows:t,items:i}){t&&(t.currentValue?this.observeArrows():t.currentValue||(this.showStartArrow=this.showEndArrow=!1,this.unobserveArrows())),i&&setTimeout(()=>{this.arrows&&this.observeArrows(),this.centerThumbIfNeeded(this.selectedIndex)})}ngOnDestroy(){this.unobserveArrows()}slide(t){let i;if(this.arrowSlideByLength)i=this.arrowSlideByLength;else{const r=this.thumbListRef.nativeElement,s=this.vertical?r.offsetHeight:r.offsetWidth;i=Math.min(s,(this.vertical?r.scrollHeight:r.scrollWidth)-s)}this.scroll(i*t)}centerThumbIfNeeded(t){if(!this.items||this.items.length<=1)return;const i=this.thumbsRef.toArray()[t];if(!i)return;const r=i.nativeElement,{offsetLeft:o,offsetTop:s,offsetWidth:a,offsetHeight:c}=r,l=this.vertical?s:o,d=this.vertical?c:a,u=this.hostOffsetAxis,h=this.thumbListRef.nativeElement[this.scrollKey];(h+ul)&&this.scroll(l+d/2-u/2-h)}select(t){this.selectedIndex=t,this.cd.detectChanges(),this.autoScroll&&setTimeout(()=>this.centerThumbIfNeeded(t))}emitEvent(t,i,r,o){o.emit({index:t,item:i,event:r})}onLoadChange(t,i){t._thumbFailed=!i}scroll(t){if(!ts)return;if(S5_scrollBehavior||"auto"===this.scrollBehavior)return void this.shiftByDelta(t);null!=this.scrollId&&cancelAnimationFrame(this.scrollId);const i=Math.abs(t),r=Date.now();let s=200*(Math.log10(i)-1.1);s<0&&(s=200);let a=0;const c=()=>{const l=Math.ceil((Date.now()-r)/s*i);let d=Math.min(l-a,i-a);d*=Math.sign(t),a=l,this.shiftByDelta(d),a<=i&&(this.scrollId=requestAnimationFrame(c))};this.scrollId=requestAnimationFrame(c)}shiftByDelta(t){this.thumbListRef.nativeElement[this.scrollKey]+=t}observeArrows(){this.thumbsEmpty||!ts||(this.arrowObserver?this.unobserveArrows():this.arrowObserver=new IntersectionObserver(this.onArrowsObserved,{root:this.thumbListRef.nativeElement,threshold:1}),this.arrowObserver.observe(this.thumbsRef.first.nativeElement),this.arrowObserver.observe(this.thumbsRef.last.nativeElement))}setObservedArrows(t,i){this.isRtl&&!this.vertical?(i&&(this.showStartArrow=i.intersectionRatio<1),t&&(this.showEndArrow=t.intersectionRatio<1)):(t&&(this.showStartArrow=t.intersectionRatio<1),i&&(this.showEndArrow=i.intersectionRatio<1))}unobserveArrows(){this.arrowObserver&&this.arrowObserver.disconnect()}static{this.\u0275fac=function(i){return new(i||e)(v(Sn),v(Ie))}}static{this.\u0275cmp=ft({type:e,selectors:[["thumbs"]],viewQuery:function(i,r){if(1&i&&(Re(A5,7),Re(N5,5)),2&i){let o;ve(o=ye())&&(r.thumbListRef=o.first),ve(o=ye())&&(r.thumbsRef=o)}},hostVars:2,hostBindings:function(i,r){2&i&&aa(r.cssClass)},inputs:{items:"items",selectedIndex:"selectedIndex",aria:"aria",orientation:"orientation",arrows:"arrows",arrowSlideByLength:"arrowSlideByLength",autoScroll:"autoScroll",thumbTemplate:"thumbTemplate",arrowTemplate:"arrowTemplate",errorTemplate:"errorTemplate",scrollBehavior:"scrollBehavior",isRtl:"isRtl"},outputs:{thumbClick:"thumbClick",thumbHover:"thumbHover"},standalone:!0,features:[Bt,un],decls:6,vars:8,consts:[["thumbs",""],["thumb",""],["customThumbTemplate",""],["aria-label","Previous thumbnails","class","thumbs-arrow thumbs-arrow-prev",3,"click",4,"ngIf"],["class","thumbs-initial-item",4,"ngIf"],["aria-hidden","true",3,"thumbs-item--selected","click","mouseenter",4,"ngFor","ngForOf"],["aria-label","Next thumbnails","class","thumbs-arrow thumbs-arrow-next",3,"click",4,"ngIf"],["aria-label","Previous thumbnails",1,"thumbs-arrow","thumbs-arrow-prev",3,"click"],[4,"ngIf","ngIfElse"],[1,"thumbs-initial-item"],["aria-hidden","true",3,"click","mouseenter"],[3,"load","error","src","alt"],[4,"ngIf"],["class","thumbs-error",4,"ngIf","ngIfElse"],[1,"thumbs-error"],[1,"thumbs-error-icon"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["aria-label","Next thumbnails",1,"thumbs-arrow","thumbs-arrow-next",3,"click"]],template:function(i,r){1&i&&(J(0,R5,2,2,"button",3),_(1,"ul",null,0),J(3,P5,1,0,"li",4)(4,U5,5,4,"li",5),y(),J(5,$5,2,2,"button",6)),2&i&&(I("ngIf",r.showStartArrow),x(),sa("scroll-behavior",r.scrollBehavior),Te("rtl",r.isRtl),x(2),I("ngIf",!r.items||!r.items.length),x(),I("ngForOf",r.items),x(),I("ngIf",r.showEndArrow))},dependencies:[br,sp,gr,md,pT],styles:['[_nghost-%COMP%]{flex:1 0 auto;position:relative;background-color:#f3f3f3}.thumbs--top[_nghost-%COMP%], .thumbs--bottom[_nghost-%COMP%]{width:100%}.thumbs--top[_nghost-%COMP%] ul[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] ul[_ngcontent-%COMP%]{width:100%;display:flex;overflow-x:scroll;overflow-y:hidden}.thumbs--top[_nghost-%COMP%] ul.rtl[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:first-child, .thumbs--bottom[_nghost-%COMP%] ul.rtl[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:first-child{margin-left:0;margin-right:auto}.thumbs--top[_nghost-%COMP%] ul.rtl[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child, .thumbs--bottom[_nghost-%COMP%] ul.rtl[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{margin-right:0;margin-left:auto}.thumbs--top[_nghost-%COMP%] li[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] li[_ngcontent-%COMP%]{flex:none}.thumbs--top[_nghost-%COMP%] li[_ngcontent-%COMP%]:not(:first-child), .thumbs--bottom[_nghost-%COMP%] li[_ngcontent-%COMP%]:not(:first-child){border-left:0}.thumbs--top[_nghost-%COMP%] li[_ngcontent-%COMP%]:first-child, .thumbs--bottom[_nghost-%COMP%] li[_ngcontent-%COMP%]:first-child{margin-left:auto}.thumbs--top[_nghost-%COMP%] li[_ngcontent-%COMP%]:last-child, .thumbs--bottom[_nghost-%COMP%] li[_ngcontent-%COMP%]:last-child{margin-right:auto}.thumbs--top[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%]{top:0;height:100%}.thumbs--top[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:30px;height:100%}.thumbs--top[_nghost-%COMP%] .thumbs-arrow-prev[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] .thumbs-arrow-prev[_ngcontent-%COMP%]{left:0}.thumbs--top[_nghost-%COMP%] .thumbs-arrow-next[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] .thumbs-arrow-next[_ngcontent-%COMP%]{right:0}.thumbs--top[_nghost-%COMP%] .thumbs-error[_ngcontent-%COMP%], .thumbs--bottom[_nghost-%COMP%] .thumbs-error[_ngcontent-%COMP%]{border-right:1px solid #cecece}.thumbs--left[_nghost-%COMP%], .thumbs--right[_nghost-%COMP%]{height:100%}.thumbs--left[_nghost-%COMP%] ul[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] ul[_ngcontent-%COMP%]{height:100%;overflow-y:scroll;overflow-x:hidden}.thumbs--left[_nghost-%COMP%] li[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] li[_ngcontent-%COMP%]{border-top:0}.thumbs--left[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%]{width:100%}.thumbs--left[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:100%;height:30px}.thumbs--left[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] chevron-icon[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-arrow[_ngcontent-%COMP%] chevron-icon[_ngcontent-%COMP%]{transform:rotate(90deg)}.thumbs--left[_nghost-%COMP%] .thumbs-arrow-prev[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-arrow-prev[_ngcontent-%COMP%]{top:0}.thumbs--left[_nghost-%COMP%] .thumbs-arrow-next[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-arrow-next[_ngcontent-%COMP%]{bottom:0}.thumbs--left[_nghost-%COMP%] .thumbs-error[_ngcontent-%COMP%], .thumbs--right[_nghost-%COMP%] .thumbs-error[_ngcontent-%COMP%]{border-bottom:1px solid #cecece}.thumbs--bottom[_nghost-%COMP%], .thumbs--right[_nghost-%COMP%]{order:1}ul[_ngcontent-%COMP%]{outline:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;transform:translateZ(0)}ul[_ngcontent-%COMP%]::-webkit-scrollbar{width:0;height:0}li[_ngcontent-%COMP%]{box-sizing:border-box;width:120px;height:80px;position:relative;cursor:pointer}li.thumbs-initial-item[_ngcontent-%COMP%]{visibility:hidden}li.thumbs-item--selected[_ngcontent-%COMP%]:after{content:"";display:block;position:absolute;left:0;bottom:0;width:100%;height:100%;border:10px solid rgba(255,255,255,.8117647059);box-sizing:border-box}img[_ngcontent-%COMP%]{width:100%;height:100%;background-repeat:no-repeat;background-position:center;object-fit:cover;color:transparent}.thumbs-error[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;background:#e8e8e8;box-sizing:border-box}.thumbs-error-icon[_ngcontent-%COMP%]:not(.thumbs-error-icon--video){position:relative;border-left:16px solid transparent;border-right:16px solid transparent;border-bottom:28px solid #a5a5a5;margin-left:-8px}.thumbs-error-icon[_ngcontent-%COMP%]:not(.thumbs-error-icon--video):before, .thumbs-error-icon[_ngcontent-%COMP%]:not(.thumbs-error-icon--video):after{content:"";position:absolute}.thumbs-error-icon[_ngcontent-%COMP%]:not(.thumbs-error-icon--video):before{height:10px;width:10px;background-color:#a5a5a5;border-radius:100%;left:14px}.thumbs-error-icon[_ngcontent-%COMP%]:not(.thumbs-error-icon--video):after{border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:17px solid #a5a5a5;top:11px}.thumbs-error-icon--video[_ngcontent-%COMP%]{border-top:16px solid transparent;border-bottom:16px solid transparent;border-left:28px solid #a5a5a5;margin-left:9px}.thumbs-arrow[_ngcontent-%COMP%]{position:absolute;padding:0;background-color:transparent;cursor:pointer;z-index:10}.thumbs-arrow-prev[_ngcontent-%COMP%]{transform:scale(-1)}.thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;background:#00000080;padding:0;opacity:.7}@media (hover: hover) and (pointer: fine){.thumbs-arrow[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:hover{opacity:1}}'],changeDetection:0})}}return e})(),G5=(()=>{class e{constructor(t){this.mediaLoadError=new de,this.onLoad=i=>{"error"===i.type&&this.mediaLoadError.emit()},this.nativeEl=t.nativeElement}ngOnInit(){this.nativeEl.addEventListener("error",this.onLoad,!0)}ngOnDestroy(){this.nativeEl.removeEventListener("error",this.onLoad,!0)}static{this.\u0275fac=function(i){return new(i||e)(v(Ie))}}static{this.\u0275dir=V({type:e,selectors:[["","media",""]],outputs:{mediaLoadError:"mediaLoadError"},standalone:!0})}}return e})(),q5=(()=>{class e{constructor(t){this.sanitizer=t}transform(t){return this.sanitizer.bypassSecurityTrustResourceUrl(t)}static{this.\u0275fac=function(i){return new(i||e)(v(Md,16))}}static{this.\u0275pipe=Tt({name:"safe",type:e,pure:!0,standalone:!0})}}return e})(),W5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["counter"]],hostVars:2,hostBindings:function(i,r){2&i&&aa(r.orientation)},inputs:{itemQuantity:"itemQuantity",selectedIndex:"selectedIndex",orientation:"orientation"},standalone:!0,features:[un],decls:2,vars:2,consts:[["aria-hidden","true"]],template:function(i,r){1&i&&(_(0,"span",0),k(1),y()),2&i&&(x(),Cm(" ",r.selectedIndex+1,"/",r.itemQuantity||0," "))},styles:["[_nghost-%COMP%]{position:absolute;left:50%;transform:translate(-50%);background:#0009;padding:.25rem .5rem;font-size:.9rem;color:#f1f5f9;letter-spacing:3px;-webkit-user-select:none;user-select:none}.top[_nghost-%COMP%]{top:0;border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem}.bottom[_nghost-%COMP%]{bottom:0;border-top-left-radius:.375rem;border-top-right-radius:.375rem}"],changeDetection:0})}}return e})();const Z5=["itemList"],K5=["itemsRef"],Y5=e=>({selectedIndex:e}),Q5=(e,n,t,i)=>({index:e,selectedIndex:n,item:t,video:i});function X5(e,n){1&e&&Z(0,"chevron-icon")}function J5(e,n){if(1&e){const t=Dt();_(0,"button",10),ne("mousedown",function(r){return B(t),j(r.stopPropagation())})("click",function(){B(t);const r=O();return j(r.selectByDelta(-r.moveByItems))}),J(1,X5,1,0,"chevron-icon",11),y()}if(2&e){const t=O();x(),I("ngIf",!t.arrowTemplate)("ngIfElse",t.arrowTemplate)}}function eG(e,n){1&e&&Z(0,"li",12)}function tG(e,n){if(1&e&&Z(0,"source",20),2&e){const t=n.$implicit;I("srcset",t.srcset),Fe("media",t.media)("sizes",t.sizes)("type",t.type)}}function nG(e,n){if(1&e&&(_(0,"picture"),J(1,tG,1,4,"source",18),Z(2,"img",19),y()),2&e){const t=O(2).$implicit,i=O();I("@mediaAnimate",void 0),x(),I("ngForOf",t.pictureSources),x(),sa("object-fit",i.objectFit),I("src",t.src,ln)("alt",t.alt),Fe("loading",i.loading)}}function iG(e,n){if(1&e&&Z(0,"video",21),2&e){const t=O(2).$implicit,i=O();sa("object-fit",i.objectFit),I("@mediaAnimate",void 0)("src",t.src,ln)("poster",t.thumbSrc||"",ln),Fe("preload","lazy"===i.loading?"metadata":"auto")}}function rG(e,n){if(1&e&&(Z(0,"iframe",22),Im(1,"safe")),2&e){const t=O(2).$implicit,i=O();I("@mediaAnimate",void 0)("src",Tm(1,3,t.src),Xh),Fe("loading",i.loading)}}function oG(e,n){if(1&e&&(dr(0),J(1,nG,3,7,"picture",14)(2,iG,1,6,"video",16)(3,rG,2,5,"iframe",17),ur()),2&e){const t=O().$implicit,i=O();x(),I("ngIf",!t.video),x(),I("ngIf",!i.isYoutube(t)&&t.video),x(),I("ngIf",i.isYoutube(t))}}function sG(e,n){if(1&e&&(_(0,"div",24)(1,"div",25),k(2,"\u26a0"),y(),_(3,"p",26),k(4),y()()),2&e){const t=O(3);x(4),Ho(" ",t.errorText||"Loading of this media failed"," ")}}function aG(e,n){if(1&e&&(dr(0),J(1,sG,5,1,"div",23),ur()),2&e){const t=O(2);x(),I("ngIf",!t.errorTemplate)("ngIfElse",t.errorTemplate)}}function cG(e,n){1&e&&Bo(0)}function lG(e,n){if(1&e&&J(0,cG,1,0,"ng-container",8),2&e){const t=O().$implicit,i=O();I("ngTemplateOutlet",i.itemTemplate)("ngTemplateOutletContext",$E(2,Q5,null==i.items?null:i.items.indexOf(t),i.selectedIndex,t,t.video))}}function dG(e,n){if(1&e){const t=Dt();_(0,"li",13,1),ne("click",function(r){const o=B(t).$implicit;return j(O().onImageClick(o,r))})("mediaLoadError",function(){const r=B(t).$implicit;return j(O().onItemErrored(r))})("keydown.Tab",function(){const r=B(t).index;return j(O().onTab(r+1))})("keydown.shift.Tab",function(){const r=B(t).index;return j(O().onTab(r-1))}),J(2,oG,4,3,"ng-container",11)(3,aG,2,2,"ng-container",14),Z(4,"span",15),J(5,lG,1,7,"ng-template",null,2,$t),y()}if(2&e){const t=n.$implicit,i=n.index,r=Tn(6),o=O();Te("viewer-fringe-item",o.isItemFringe(i)),Fe("tabindex",o.isItemFringe(i)?-1:0)("aria-label",t.alt)("aria-describedby","viewer-aria-description-"+i),x(2),I("ngIf",!o.itemTemplate)("ngIfElse",r),x(),I("ngIf",o.itemFailedToLoad(t)),x(),I("id","viewer-aria-description-"+i)("innerHTML",t.description,Qh)}}function uG(e,n){1&e&&Z(0,"chevron-icon")}function hG(e,n){if(1&e){const t=Dt();_(0,"button",27),ne("mousedown",function(r){return B(t),j(r.stopPropagation())})("click",function(){B(t);const r=O();return j(r.selectByDelta(r.moveByItems))}),J(1,uG,1,0,"chevron-icon",11),y()}if(2&e){const t=O();x(),I("ngIf",!t.arrowTemplate)("ngIfElse",t.arrowTemplate)}}function fG(e,n){if(1&e&&Z(0,"counter",28),2&e){const t=O();I("itemQuantity",t.items.length)("selectedIndex",t.counterIndex)("orientation",t.counterOrientation)}}function mG(e,n){1&e&&Bo(0)}function pG(e,n){if(1&e){const t=Dt();_(0,"div",31),ne("click",function(r){return B(t),j(O(2).descriptionClick.emit(r))}),y()}2&e&&I("innerHTML",n.ngIf,Qh)}function gG(e,n){if(1&e&&(_(0,"div",29),J(1,pG,1,1,"div",30),y()),2&e){const t=O();Te("viewer-description--above-counter",t.counter&&"bottom"===t.counterOrientation),x(),I("ngIf",null==t.items[t.selectedIndex]?null:t.items[t.selectedIndex].description)}}const ns={passive:!0};let Hg=(()=>{class e{set noAnimation(t){this.itemListRef.nativeElement.style.transitionDuration=t?"0ms":"400ms"}get counterIndex(){return Math.floor(this.selectedIndex/this.moveByItems)}get showArrow(){return this.arrows&&this.items&&this.items.length>1}get showPrevArrow(){return this.showArrow&&(this.selectedIndex>0||this.reallyLoop)}get showNextArrow(){return this.showArrow&&(this.selectedIndex{if(!this.reallyLoop||!this.sliding)return;const{first:a}=this.itemsRef;0!==s.filter(d=>d.isIntersecting).length&&(this.pointerDeltaX+=(s[0].target===a.nativeElement?-1:1)*this.items.length*this._itemWidth)},this.updateDimensions=()=>{this._itemWidth=this._hostRef.nativeElement.querySelector("li").offsetWidth},this.shiftByDelta=s=>{this.pointerDeltaX+=s,this.shift(this.pointerDeltaX)}}ngOnChanges({visibleItems:t,items:i,loop:r}){t&&(this.itemListRef.nativeElement.style.setProperty("--item-width",`calc(100% / ${this.visibleItems})`),setTimeout(this.updateDimensions)),(r||i)&&(this.reallyLoop=this.items.length>1&&this.loop,this.reallyLoop&&setTimeout(()=>this.observeFringes())),(i||t||r)&&(this.fringeCount=this.getFringeCount(),this.displayedItems=this.getItemsToBeDisplayed(this.fringeCount),this.reallyLoop&&(this.noAnimation=!0,this.center()))}ngOnInit(){ts&&(this.handleResizes(),this.mouseGestures&&this.handleMouseSlides(),this.touchGestures&&this.handleTouchSlides(),this._destroyRef.onDestroy(()=>this.fringeObserver?.disconnect()))}ngAfterViewInit(){this.center(),setTimeout(()=>this.noAnimation=!1)}isYoutube(t){return!!t.src.match(/youtube.*\/embed\//)}select(t,i=!0){if(this.selectedIndex===t)return this.center();if(this.items[this.selectedIndex]?.video&&this.stopCurrentVideo(),this.visibleItems>1&&i){const s=this.items.length-this.visibleItems;0!==this.selectedIndex&&t<0?t=0:this.selectedIndexs&&(t=this.items.length)}const r=!this.items[t];if(this.reallyLoop&&r)return this.loopTo(t),this.selection.emit(this.selectedIndex);this.selectedIndex=r?this.correctIndexOutOfBounds(t):t,this.center(),this.selection.emit(this.selectedIndex)}selectByDelta(t){this.select(this.selectedIndex+t)}onImageClick(t,i){this.itemClick.emit({event:i,item:t,index:this.items.indexOf(t)})}onTab(t){(t-=this.fringeCount)>=0&&tthis._hostRef.nativeElement.scrollLeft=0))}onItemErrored(t){this.showErrors&&(t._failed=!0,this._cd.detectChanges())}itemFailedToLoad(t){return t._failed}isItemFringe(t){return(t-=this.fringeCount)<0||t>=this.items.length}center(){this.shift()}correctIndexOutOfBounds(t){return t<0?0:this.items.length-1}getFringeCount(){return this.reallyLoop?Math.min(Math.ceil(this.visibleItems),this.items.length):0}getItemsToBeDisplayed(t){return this.reallyLoop?[...this.items.slice(-t),...this.items,...this.items.slice(0,t)]:this.items}handleMouseSlides(){this._zone.runOutsideAngular(()=>{const t=this._hostRef.nativeElement;let i,r=0,o=0;const s=u=>{i=u,this.noAnimation=this.sliding=!0,document.addEventListener("mousemove",a,ns),document.addEventListener("mouseup",c,ns)},a=u=>{r=Math.max(Math.abs(i.clientX-u.clientX)),o=Math.max(Math.abs(i.clientY-u.clientY)),this.shiftByDelta(u.movementX)},c=()=>{this.noAnimation=this.sliding=!1,this._zone.run(()=>this.selectBySwipeStats(this.pointerDeltaX)),this.pointerDeltaX=0,document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",c)},l=u=>{(r>10||o>10)&&(u.stopPropagation(),u.preventDefault()),o=r=0},d=u=>u.preventDefault();t.addEventListener("mousedown",s,ns),t.addEventListener("click",l,{capture:!0}),t.addEventListener("dragstart",d),this._destroyRef.onDestroy(()=>{t.removeEventListener("mousedown",s),t.removeEventListener("click",l),t.removeEventListener("dragstart",d)})})}handleTouchSlides(){this._zone.runOutsideAngular(()=>{const t=this._hostRef.nativeElement;let i,r,o;const s=l=>{r=l,this.noAnimation=this.sliding=!0},a=l=>{if(!r||1!==l.touches.length)return;const d=r.touches[0],u=l.touches[0];if(null==i){const h=Math.abs(u.clientX-d.clientX),f=Math.abs(u.clientY-d.clientY);(h||f)&&(i=1.2*h>=f)}i&&(this.shiftByDelta(u.clientX-(o??r).touches[0].clientX),o=l,mT_ios&&(l.preventDefault(),l.stopPropagation()))},c=()=>{this.noAnimation=this.sliding=!1,this._zone.run(()=>this.selectBySwipeStats(this.pointerDeltaX)),this.pointerDeltaX=0,i=void 0,r=void 0,o=void 0};t.addEventListener("touchstart",s,ns),document.addEventListener("touchmove",a,{passive:!mT_ios}),document.addEventListener("touchend",c,ns),this._destroyRef.onDestroy(()=>{t.removeEventListener("touchstart",s),document.removeEventListener("touchmove",a),document.removeEventListener("touchend",c)})})}handleResizes(){window.addEventListener("resize",this.updateDimensions,ns),this._destroyRef.onDestroy(()=>{window.removeEventListener("resize",this.updateDimensions)})}loopTo(t){this.noAnimation=!0;const i=Math.sign(t)*this.items.length*this._itemWidth;this.shiftByDelta(i),this.selectedIndex=t<0?t+this.items.length:t-this.items.length,requestAnimationFrame(()=>setTimeout(()=>{this.pointerDeltaX=0,this.noAnimation=!1,this.center()}))}observeFringes(){if(!ts)return;this.fringeObserver?.disconnect();const t=new IntersectionObserver(this.repositionOnFringe,{root:this._hostRef.nativeElement,threshold:1});t.observe(this.itemsRef.first.nativeElement),t.observe(this.itemsRef.last.nativeElement),this.fringeObserver=t}selectBySwipeStats(t){const i=Math.round((Math.abs(t)+this._itemWidth/2.25)/this._itemWidth)*-Math.sign(t);this.select(this.selectedIndex+i,!1)}shift(t=0){const i=this.isRtl?1:-1;this.itemListRef.nativeElement.style.transform=`translate3d(calc(${(this.selectedIndex+this.fringeCount)*i} * var(--item-width) + ${t*=-i}px), 0, 0)`}stopCurrentVideo(){const t=this.itemsRef.get(this.selectedIndex)?.nativeElement.querySelector("video");t&&t.pause()}static{this.\u0275fac=function(i){return new(i||e)(v(Ie),v(Sn),v(eo),v(Y))}}static{this.\u0275cmp=ft({type:e,selectors:[["viewer"]],viewQuery:function(i,r){if(1&i&&(Re(Z5,7),Re(K5,5)),2&i){let o;ve(o=ye())&&(r.itemListRef=o.first),ve(o=ye())&&(r.itemsRef=o)}},hostVars:4,hostBindings:function(i,r){2&i&&Te("clip",r.clip)("rtl",r.isRtl)},inputs:{items:"items",selectedIndex:"selectedIndex",arrows:"arrows",descriptions:"descriptions",errorText:"errorText",showErrors:"showErrors",mouseGestures:"mouseGestures",touchGestures:"touchGestures",counter:"counter",counterOrientation:"counterOrientation",loading:"loading",objectFit:"objectFit",itemTemplate:"itemTemplate",errorTemplate:"errorTemplate",arrowTemplate:"arrowTemplate",contentTemplate:"contentTemplate",thumbsOrientation:"thumbsOrientation",aria:"aria",loop:"loop",visibleItems:"visibleItems",moveByItems:"moveByItems",clip:"clip",isRtl:"isRtl"},outputs:{itemClick:"itemClick",descriptionClick:"descriptionClick",selection:"selection"},standalone:!0,features:[Bt,un],decls:9,vars:11,consts:[["itemList",""],["itemsRef",""],["customTemplate",""],["aria-label","Previous image","class","viewer-arrow viewer-arrow-prev",3,"mousedown","click",4,"ngIf"],["class","viewer-initial-item",4,"ngIf"],["media","",3,"viewer-fringe-item","click","mediaLoadError","keydown.Tab","keydown.shift.Tab",4,"ngFor","ngForOf"],["aria-label","Next image","class","viewer-arrow viewer-arrow-next",3,"mousedown","click",4,"ngIf"],[3,"itemQuantity","selectedIndex","orientation",4,"ngIf"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","viewer-description","aria-hidden","true",3,"viewer-description--above-counter",4,"ngIf"],["aria-label","Previous image",1,"viewer-arrow","viewer-arrow-prev",3,"mousedown","click"],[4,"ngIf","ngIfElse"],[1,"viewer-initial-item"],["media","",3,"click","mediaLoadError","keydown.Tab","keydown.shift.Tab"],[4,"ngIf"],[1,"sr-only",3,"id","innerHTML"],["controls","","playsinline","",3,"src","poster","objectFit",4,"ngIf"],["allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture","allowfullscreen","",3,"src",4,"ngIf"],[3,"srcset",4,"ngFor","ngForOf"],[3,"src","alt"],[3,"srcset"],["controls","","playsinline","",3,"src","poster"],["allow","accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture","allowfullscreen","",3,"src"],["class","viewer-error",4,"ngIf","ngIfElse"],[1,"viewer-error"],[1,"viewer-error-icon"],[1,"viewer-error-text"],["aria-label","Next image",1,"viewer-arrow","viewer-arrow-next",3,"mousedown","click"],[3,"itemQuantity","selectedIndex","orientation"],["aria-hidden","true",1,"viewer-description"],["class","viewer-description-inner",3,"innerHTML","click",4,"ngIf"],[1,"viewer-description-inner",3,"click","innerHTML"]],template:function(i,r){1&i&&(J(0,J5,2,2,"button",3),_(1,"ul",null,0),J(3,eG,1,0,"li",4)(4,dG,7,10,"li",5),y(),J(5,hG,2,2,"button",6)(6,fG,1,3,"counter",7)(7,mG,1,0,"ng-container",8)(8,gG,2,3,"div",9)),2&i&&(I("ngIf",r.showPrevArrow),x(),Fe("aria-label",null==r.aria?null:r.aria.viewerLabel),x(2),I("ngIf",!(null!=r.displayedItems&&r.displayedItems.length)),x(),I("ngForOf",r.displayedItems),x(),I("ngIf",r.showNextArrow),x(),I("ngIf",r.counter&&r.items.length),x(),I("ngTemplateOutlet",r.contentTemplate)("ngTemplateOutletContext",function UE(e,n,t,i){return GE(C(),At(),e,n,t,i)}(9,Y5,r.selectedIndex)),x(),I("ngIf",r.descriptions&&r.items))},dependencies:[br,sp,gr,md,W5,pT,G5,q5],styles:["[_nghost-%COMP%]{display:block;position:relative;width:100%;height:100%;outline:none;z-index:1}.clip[_nghost-%COMP%]{overflow:hidden}.rtl[_nghost-%COMP%] .viewer-arrow-next[_ngcontent-%COMP%]{right:auto;left:0;transform:translateY(-50%) scale(-1)}.rtl[_nghost-%COMP%] .viewer-arrow-prev[_ngcontent-%COMP%]{right:0;left:auto;transform:translateY(-50%)}ul[_ngcontent-%COMP%]{--item-width: 100%;display:flex;width:100%;height:100%;transition:transform;scrollbar-width:none}ul[_ngcontent-%COMP%]::-webkit-scrollbar{width:0;height:0}li[_ngcontent-%COMP%]{display:flex;align-items:center;flex:none;position:relative;width:var(--item-width);-webkit-user-select:none;user-select:none;outline:0}picture[_ngcontent-%COMP%]{width:100%;height:100%}img[_ngcontent-%COMP%], video[_ngcontent-%COMP%], iframe[_ngcontent-%COMP%]{width:100%;height:100%;background-color:transparent;outline:0;color:transparent}iframe[_ngcontent-%COMP%]{border:0}img[_ngcontent-%COMP%]{-webkit-user-select:none;user-select:none}.viewer-description[_ngcontent-%COMP%]{position:absolute;bottom:.5rem;width:100%;display:flex;justify-content:center;font-size:.9rem}.viewer-description--above-counter[_ngcontent-%COMP%]{bottom:2.5rem}.viewer-description-inner[_ngcontent-%COMP%]{display:inline-block;background:#000000b3;color:#f1f5f9;padding:.5rem .75rem;max-width:80%;text-align:center;border-radius:.5rem}.viewer-error[_ngcontent-%COMP%]{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;background-color:#f5f5f5;color:#7d7d7d}.viewer-error-icon[_ngcontent-%COMP%]{font-size:40px}.viewer-error-text[_ngcontent-%COMP%]{margin-top:10px;letter-spacing:.01em}.viewer-arrow[_ngcontent-%COMP%]{display:flex;position:absolute;top:50%;padding:0;background-color:transparent;transform:translateY(-50%);z-index:100;cursor:pointer}.viewer-arrow-prev[_ngcontent-%COMP%]{left:0;transform:scale(-1) translateY(50%)}.viewer-arrow-next[_ngcontent-%COMP%]{right:0}.viewer-arrow[_ngcontent-%COMP%] chevron-icon[_ngcontent-%COMP%]{margin:15px 6px;opacity:.7}@media (hover: hover) and (pointer: fine){.viewer-arrow[_ngcontent-%COMP%] chevron-icon[_ngcontent-%COMP%]:hover{opacity:1}}.viewer-arrow[_ngcontent-%COMP%] chevron-icon[_ngcontent-%COMP%] svg{height:32px;width:32px}"],data:{animation:[wx("mediaAnimate",[Pp(":leave",Rp("0ms 100ms")),Pp(":enter",[Wo({opacity:0}),Rp("400ms",Wo({opacity:1}))])])]},changeDetection:0})}}return e})();function bG(e,n){if(1&e&&(_(0,"span",3),k(1),y()),2&e){const t=O();x(),Ho(" ",t.aria.galleryLabel,"\n")}}function _G(e,n){if(1&e){const t=Dt();_(0,"thumbs",4),ne("thumbClick",function(r){return B(t),j(O()._onThumbClick(r))})("thumbHover",function(r){return B(t),j(O().thumbHover.emit(r))}),y()}if(2&e){const t=O();I("items",t.items)("selectedIndex",t.selectedIndex)("orientation",t.thumbsOrientation)("arrows",t.thumbsArrows)("arrowSlideByLength",t.thumbsArrowSlideByLength)("autoScroll",t.thumbsAutoScroll)("scrollBehavior",t.thumbsScrollBehavior)("thumbTemplate",t.thumbTemplate)("arrowTemplate",t.thumbsArrowTemplate)("errorTemplate",t.thumbErrorTemplate)("aria",t.aria)("isRtl",t.isRtl)}}let Ka=(()=>{class e{constructor(){this.items=[],this.selectedIndex=0,this.aria=k5,this.arrows=!0,this.descriptions=!1,this.showErrors=!1,this.mouseGestures=!0,this.touchGestures=!0,this.clip=!0,this.counter=!0,this.counterOrientation="bottom",this.loading="lazy",this.loop=!1,this.objectFit="cover",this.isRtl=!1,this.visibleItems=1,this.moveByItems=this.visibleItems,this.thumbs=!0,this.thumbsAutoScroll=!0,this.thumbsOrientation="bottom",this.thumbsArrows=!0,this.thumbsScrollBehavior="smooth",this.itemClick=new de,this.thumbClick=new de,this.thumbHover=new de,this.descriptionClick=new de,this.selection=new de}get _galleryColumn(){return"top"===this.thumbsOrientation||"bottom"===this.thumbsOrientation}get _thumbsOrientationFlag(){return this._galleryColumn?6:24}ngOnChanges({items:t}){t&&!t.currentValue&&(this.items=[])}focus(){this._viewerElRef.nativeElement.focus()}next(){this._viewerRef.selectByDelta(1)}prev(){this._viewerRef.selectByDelta(-1)}select(t){this._viewerRef.select(t),this._thumbsRef?.select(t),this._selectInternal(t)}slideThumbs(t){this._thumbsRef?.slide(t)}_onThumbClick(t){this._viewerRef.select(t.index),this.thumbClick.emit(t),this._selectInternal(t.index)}_selectInternal(t){this.selectedIndex=t,this.selection.emit(this.items[t])}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["gallery"]],viewQuery:function(i,r){if(1&i&&(Re(Hg,5),Re(gT,5),Re(Hg,5,Ie)),2&i){let o;ve(o=ye())&&(r._viewerRef=o.first),ve(o=ye())&&(r._thumbsRef=o.first),ve(o=ye())&&(r._viewerElRef=o.first)}},hostVars:4,hostBindings:function(i,r){1&i&&ne("keydown.arrowright",function(){return r.next()})("keydown.arrowleft",function(){return r.prev()}),2&i&&Te("rtl",r.isRtl)("gallery--column",r._galleryColumn)},inputs:{items:"items",selectedIndex:"selectedIndex",aria:"aria",arrows:"arrows",descriptions:"descriptions",errorText:"errorText",showErrors:"showErrors",mouseGestures:"mouseGestures",touchGestures:"touchGestures",clip:"clip",counter:"counter",counterOrientation:"counterOrientation",loading:"loading",loop:"loop",objectFit:"objectFit",isRtl:"isRtl",visibleItems:"visibleItems",moveByItems:"moveByItems",itemTemplate:"itemTemplate",errorTemplate:"errorTemplate",arrowTemplate:"arrowTemplate",contentTemplate:"contentTemplate",thumbs:"thumbs",thumbsAutoScroll:"thumbsAutoScroll",thumbsOrientation:"thumbsOrientation",thumbsArrows:"thumbsArrows",thumbsArrowSlideByLength:"thumbsArrowSlideByLength",thumbsScrollBehavior:"thumbsScrollBehavior",thumbTemplate:"thumbTemplate",thumbsArrowTemplate:"thumbsArrowTemplate",thumbErrorTemplate:"thumbErrorTemplate"},outputs:{itemClick:"itemClick",thumbClick:"thumbClick",thumbHover:"thumbHover",descriptionClick:"descriptionClick",selection:"selection"},standalone:!0,features:[Bt,un],decls:3,vars:25,consts:[["class","sr-only","tabindex","0",4,"ngIf"],[3,"items","selectedIndex","orientation","arrows","arrowSlideByLength","autoScroll","scrollBehavior","thumbTemplate","arrowTemplate","errorTemplate","aria","isRtl","thumbClick","thumbHover",4,"ngIf"],[3,"itemClick","descriptionClick","selection","items","selectedIndex","arrows","descriptions","errorText","showErrors","mouseGestures","touchGestures","clip","counter","counterOrientation","visibleItems","moveByItems","objectFit","loading","itemTemplate","errorTemplate","contentTemplate","loop","thumbsOrientation","arrowTemplate","aria","isRtl"],["tabindex","0",1,"sr-only"],[3,"thumbClick","thumbHover","items","selectedIndex","orientation","arrows","arrowSlideByLength","autoScroll","scrollBehavior","thumbTemplate","arrowTemplate","errorTemplate","aria","isRtl"]],template:function(i,r){1&i&&(J(0,bG,2,1,"span",0)(1,_G,1,12,"thumbs",1),_(2,"viewer",2),ne("itemClick",function(s){return r.itemClick.emit(s)})("descriptionClick",function(s){return r.descriptionClick.emit(s)})("selection",function(s){return r._selectInternal(s),null==r._thumbsRef?null:r._thumbsRef.select(s)}),y()),2&i&&(I("ngIf",null==r.aria?null:r.aria.galleryLabel),x(),I("ngIf",r.thumbs),x(),I("items",r.items)("selectedIndex",+r.selectedIndex)("arrows",r.arrows)("descriptions",r.descriptions)("errorText",r.errorText)("showErrors",r.showErrors)("mouseGestures",r.mouseGestures)("touchGestures",r.touchGestures)("clip",r.clip)("counter",r.counter)("counterOrientation",r.counterOrientation)("visibleItems",r.visibleItems)("moveByItems",r.moveByItems)("objectFit",r.objectFit)("loading",r.loading)("itemTemplate",r.itemTemplate)("errorTemplate",r.errorTemplate)("contentTemplate",r.contentTemplate)("loop",r.loop)("thumbsOrientation",r._thumbsOrientationFlag)("arrowTemplate",r.arrowTemplate)("aria",r.aria)("isRtl",r.isRtl))},dependencies:[br,gr,gT,Hg],styles:["[_nghost-%COMP%]{display:flex;height:600px;width:500px;outline:0;position:relative}.gallery--column[_nghost-%COMP%]{flex-direction:column}.rtl[_nghost-%COMP%]{direction:ltr}.rtl[_nghost-%COMP%] viewer[_ngcontent-%COMP%], .rtl[_nghost-%COMP%] thumbs[_ngcontent-%COMP%]{direction:rtl}[_nghost-%COMP%] {font-family:Helvetica Neue,Helvetica,Arial,sans-serif}[_nghost-%COMP%] button{border:none}[_nghost-%COMP%] ul{list-style-type:none;margin:0;padding:0}[_nghost-%COMP%] .sr-only{position:absolute!important;clip:rect(1px,1px,1px,1px);top:auto;left:-9999px;width:1px;height:1px;overflow:hidden}"],changeDetection:0})}}return e})();function _T(e,n){return"function"==typeof n?t=>t.pipe(_T((i,r)=>Ia(e(i,r)).pipe(ht((o,s)=>n(i,o,r,s))))):t=>t.lift(new yG(e))}class yG{constructor(n){this.project=n}call(n,t){return t.subscribe(new wG(n,this.project))}}class wG extends wd{constructor(n,t){super(n),this.project=t,this.index=0}_next(n){let t;const i=this.index++;try{t=this.project(n,i)}catch(r){return void this.destination.error(r)}this._innerSub(t)}_innerSub(n){const t=this.innerSubscription;t&&t.unsubscribe();const i=new yd(this),r=this.destination;r.add(i),this.innerSubscription=Cd(n,i),this.innerSubscription!==i&&r.add(this.innerSubscription)}_complete(){const{innerSubscription:n}=this;(!n||n.closed)&&super._complete(),this.unsubscribe()}_unsubscribe(){this.innerSubscription=void 0}notifyComplete(){this.innerSubscription=void 0,this.isStopped&&super._complete()}notifyNext(n){this.destination.next(n)}}class DG{constructor(n,t){this.delay=n,this.scheduler=t}call(n,t){return t.subscribe(new Ug(n,this.delay,this.scheduler))}}class Ug extends Ce{constructor(n,t,i){super(n),this.delay=t,this.scheduler=i,this.queue=[],this.active=!1,this.errored=!1}static dispatch(n){const t=n.source,i=t.queue,r=n.scheduler,o=n.destination;for(;i.length>0&&i[0].time-r.now()<=0;)i.shift().notification.observe(o);if(i.length>0){const s=Math.max(0,i[0].time-r.now());this.schedule(n,s)}else this.unsubscribe(),t.active=!1}_schedule(n){this.active=!0,this.destination.add(n.schedule(Ug.dispatch,this.delay,{source:this,destination:this.destination,scheduler:n}))}scheduleNotification(n){if(!0===this.errored)return;const t=this.scheduler,i=new xG(t.now()+this.delay,n);this.queue.push(i),!1===this.active&&this._schedule(t)}_next(n){this.scheduleNotification(Gt.createNext(n))}_error(n){this.errored=!0,this.queue=[],this.destination.error(n),this.unsubscribe()}_complete(){this.scheduleNotification(Gt.createComplete()),this.unsubscribe()}}class xG{constructor(n,t){this.time=n,this.notification=t}}function MG(e,n){if(1&e){const t=Dt();_(0,"gallery",41),Im(1,"async"),ne("descriptionClick",function(){return B(t),j(O().galleryConfig.descriptions=!1)}),y()}if(2&e){const t=O();I("items",Tm(1,19,t.items))("arrows",t.galleryConfig.arrows)("descriptions",t.galleryConfig.descriptions)("mouseGestures",t.galleryConfig.mouseGestures)("touchGestures",t.galleryConfig.touchGestures)("counter",t.galleryConfig.counter)("counterOrientation",t.galleryConfig.counterOrientation)("visibleItems",t.galleryConfig.visibleItems)("objectFit",t.galleryConfig.objectFit)("loading",t.galleryConfig.loading)("loop",t.galleryConfig.loop)("isRtl",t.galleryConfig.rtl)("selectedIndex",t.galleryConfig.selectedIndex)("thumbs",t.galleryConfig.thumbs)("thumbsAutoScroll",t.galleryConfig.thumbsAutoScroll)("thumbsOrientation",t.galleryConfig.thumbsOrientation)("thumbsArrows",t.galleryConfig.thumbsArrows)("thumbsArrowSlideByLength",t.galleryConfig.thumbsArrowSlideByLength)("thumbsScrollBehavior",t.galleryConfig.thumbsScrollBehavior)}}function IG(e,n){1&e&&(_(0,"div",42),k(1,"Custom Loading ..."),y())}function TG(e,n){1&e&&Bo(0)}function SG(e,n){1&e&&(_(0,"div",42),k(1," Custom item loading ... "),y())}function kG(e,n){if(1&e&&(Z(0,"img",44,8),J(2,SG,2,0,"div",45)),2&e){const t=Tn(1),i=O(),o=i.seen;I("src",o?i.item.src:"",ln),x(2),I("ngIf",o&&t.naturalHeight<=0)}}function AG(e,n){if(1&e&&Z(0,"video",46,9),2&e){const t=O();I("src",t.seen?t.item.src:"",ln)}}function NG(e,n){if(1&e&&J(0,TG,1,0,"ng-container",43)(1,kG,3,2,"ng-template",null,6,$t)(3,AG,2,1,"ng-template",null,7,$t),2&e){const t=n.item,i=Tn(2),r=Tn(4);I("ngIf",t.video)("ngIfThen",r)("ngIfElse",i)}}function OG(e,n){if(1&e&&Z(0,"img",47),2&e){const t=n.item;I("src",t.thumbSrc||t.src,ln)}}function FG(e,n){1&e&&(_(0,"div",48),k(1,"Custom loading error"),y())}function RG(e,n){1&e&&(_(0,"div",49),k(1,"Custom thumb loading error"),y())}function PG(e,n){1&e&&(_(0,"button",50)(1,"mat-icon"),k(2,"arrow_forward_ios"),y()())}let LG=(()=>{class e{constructor(t){this.cd=t,this.displayGallery=!0,this.imageLoadingLatency=0,this.galleryConfig={arrows:!this.mobile,descriptions:!1,mouseGestures:!0,touchGestures:!0,counter:!0,counterOrientation:"bottom",visibleItems:1,objectFit:"cover",loading:"lazy",loop:!1,rtl:!1,selectedIndex:0,thumbs:!0,thumbsAutoScroll:!0,thumbsOrientation:"bottom",thumbsArrows:!0,thumbsArrowSlideByLength:0,thumbsScrollBehavior:"smooth"},this.storeGalleryConfig=()=>{sessionStorage.setItem("galleryConfig",JSON.stringify(this.galleryConfig))},ar({read:()=>{this.galleryConfig=this.getGalleryConfig()||this.galleryConfig,this.mobile=matchMedia("(max-width: 767px)").matches,window.addEventListener("pagehide",this.storeGalleryConfig)}})}ngOnInit(){this.items=Rt(this.images).pipe(_T(t=>function vG(e){return new Le(n=>{let t;try{t=e()}catch(r){return void n.error(r)}return(t?Ia(t):Cu()).subscribe(n)})}(()=>Rt(t).pipe(function EG(e,n=dI){const i=function CG(e){return e instanceof Date&&!isNaN(+e)}(e)?+e-n.now():Math.abs(e);return r=>r.lift(new DG(i,n))}(this.imageLoadingLatency)))))}onConfigChange(t,i){""!==i&&(this.galleryConfig[t]=+i,this.reloadGallery())}reloadGallery(){this.displayGallery=!1,this.cd.detectChanges(),this.displayGallery=!0,this.cd.detectChanges()}getInputValue(t){return t.target.value}getGalleryConfig(){return JSON.parse(sessionStorage.getItem("galleryConfig"))}static{this.\u0275fac=function(i){return new(i||e)(v(Sn))}}static{this.\u0275cmp=ft({type:e,selectors:[["app-demo-whole-config"]],viewQuery:function(i,r){if(1&i&&Re(Ka,5),2&i){let o;ve(o=ye())&&(r.gallery=o.first)}},inputs:{images:"images"},decls:118,vars:20,consts:[["loadingTemplate",""],["itemTemplate",""],["thumbTemplate",""],["errorTemplate",""],["thumbErrorTemplate",""],["arrowTemplate",""],["imgTemplate",""],["videoTemplate",""],["img",""],["video",""],["name","arrows",3,"ngModelChange","ngModel"],["name","descriptions",3,"ngModelChange","ngModel"],["name","mouseGestures",3,"ngModelChange","change","ngModel"],["name","touchGestures",3,"ngModelChange","change","ngModel"],["name","counter",3,"ngModelChange","ngModel"],["name","loop",3,"ngModelChange","change","ngModel"],["name","rtl",3,"ngModelChange","change","ngModel"],["name","counterOrientation",3,"ngModelChange","ngModel"],["value","top"],["value","bottom"],["name","objectFit",3,"ngModelChange","ngModel"],["value","contain"],["value","cover"],["name","loading",3,"ngModelChange","change","ngModel"],["value","auto"],["value","lazy"],["name","visibleItems","matInput","",3,"ngModelChange","change","ngModel"],["name","selectedIndex","type","number","matInput","",3,"input","value"],["name","thumbs",3,"ngModelChange","ngModel"],["name","thumbsAutoScroll",3,"ngModelChange","ngModel"],["name","thumbsArrows",3,"ngModelChange","ngModel"],["name","thumbsOrientation",3,"ngModelChange","ngModel"],["value","left"],["value","right"],["name","thumbsScrollBehavior",3,"ngModelChange","ngModel"],["value","smooth"],["name","thumbsArrowsSlideByLength","matInput","",3,"ngModelChange","ngModel"],[1,"image-loading-latency"],["name","imageLoadingLatency","matInput","",3,"ngModelChange","change","ngModel"],[1,"gallery-container"],[3,"items","arrows","descriptions","mouseGestures","touchGestures","counter","counterOrientation","visibleItems","objectFit","loading","loop","isRtl","selectedIndex","thumbs","thumbsAutoScroll","thumbsOrientation","thumbsArrows","thumbsArrowSlideByLength","thumbsScrollBehavior","descriptionClick",4,"ngIf"],[3,"descriptionClick","items","arrows","descriptions","mouseGestures","touchGestures","counter","counterOrientation","visibleItems","objectFit","loading","loop","isRtl","selectedIndex","thumbs","thumbsAutoScroll","thumbsOrientation","thumbsArrows","thumbsArrowSlideByLength","thumbsScrollBehavior"],[1,"custom-loading"],[4,"ngIf","ngIfThen","ngIfElse"],[1,"custom-media",3,"src"],["class","custom-loading",4,"ngIf"],["controls","",1,"custom-media",3,"src"],[1,"custom-thumb",3,"src"],[1,"custom-error"],[1,"custom-thumb-error"],[1,"custom-arrow"]],template:function(i,r){if(1&i){const o=Dt();_(0,"form")(1,"div")(2,"h4"),k(3,"Gallery viewer properties"),y(),_(4,"section")(5,"mat-checkbox",10),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.arrows,a)||(r.galleryConfig.arrows=a),j(a)}),k(6,"Arrows"),y()(),_(7,"section")(8,"mat-checkbox",11),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.descriptions,a)||(r.galleryConfig.descriptions=a),j(a)}),k(9," Descriptions "),y()(),_(10,"section")(11,"mat-checkbox",12),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.mouseGestures,a)||(r.galleryConfig.mouseGestures=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),k(12," Mouse Gestures "),y()(),_(13,"section")(14,"mat-checkbox",13),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.touchGestures,a)||(r.galleryConfig.touchGestures=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),k(15," Touch Gestures "),y()(),_(16,"section")(17,"mat-checkbox",14),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.counter,a)||(r.galleryConfig.counter=a),j(a)}),k(18,"Counter"),y()(),_(19,"section")(20,"mat-checkbox",15),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.loop,a)||(r.galleryConfig.loop=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),k(21,"Loop"),y()(),_(22,"section")(23,"mat-checkbox",16),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.rtl,a)||(r.galleryConfig.rtl=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),k(24,"Right to left"),y()(),_(25,"section")(26,"mat-label"),k(27,"Counter orientation:"),y(),_(28,"mat-radio-group",17),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.counterOrientation,a)||(r.galleryConfig.counterOrientation=a),j(a)}),_(29,"mat-radio-button",18),k(30,"top"),y(),_(31,"mat-radio-button",19),k(32,"bottom"),y()()(),_(33,"section")(34,"mat-label"),k(35,"Image fit:"),y(),_(36,"mat-radio-group",20),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.objectFit,a)||(r.galleryConfig.objectFit=a),j(a)}),_(37,"mat-radio-button",21),k(38,"contain"),y(),_(39,"mat-radio-button",22),k(40,"cover"),y()()(),_(41,"section")(42,"mat-label"),k(43,"Image loading strategy:"),y(),_(44,"mat-radio-group",23),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.loading,a)||(r.galleryConfig.loading=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),_(45,"mat-radio-button",24),k(46,"auto"),y(),_(47,"mat-radio-button",25),k(48,"lazy"),y()()(),_(49,"section")(50,"mat-form-field")(51,"mat-label"),k(52,"Number of displayed items"),y(),_(53,"input",26),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.visibleItems,a)||(r.galleryConfig.visibleItems=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),y()()(),_(54,"section")(55,"mat-form-field")(56,"mat-label"),k(57,"Selected index"),y(),_(58,"input",27),ne("input",function(a){return B(o),j(r.onConfigChange("selectedIndex",r.getInputValue(a)))}),y()()()(),_(59,"div")(60,"h4"),k(61,"Thumbnails properties"),y(),_(62,"section")(63,"mat-checkbox",28),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbs,a)||(r.galleryConfig.thumbs=a),j(a)}),k(64,"Thumbnails"),y()(),_(65,"section")(66,"mat-checkbox",29),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbsAutoScroll,a)||(r.galleryConfig.thumbsAutoScroll=a),j(a)}),k(67,"Thumbs autoscroll"),y()(),_(68,"section")(69,"mat-checkbox",30),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbsArrows,a)||(r.galleryConfig.thumbsArrows=a),j(a)}),k(70,"Thumbnail arrows"),y()(),_(71,"section")(72,"mat-label"),k(73,"Thumbnails orientation:"),y(),_(74,"mat-radio-group",31),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbsOrientation,a)||(r.galleryConfig.thumbsOrientation=a),j(a)}),_(75,"mat-radio-button",18),k(76,"top"),y(),_(77,"mat-radio-button",19),k(78,"bottom"),y(),_(79,"mat-radio-button",32),k(80,"left"),y(),_(81,"mat-radio-button",33),k(82,"right"),y()()(),_(83,"section")(84,"mat-label"),k(85,"Thumbnails scroll behavior:"),y(),_(86,"mat-radio-group",34),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbsScrollBehavior,a)||(r.galleryConfig.thumbsScrollBehavior=a),j(a)}),_(87,"mat-radio-button",35),k(88,"smooth"),y(),_(89,"mat-radio-button",24),k(90,"auto"),y()()(),_(91,"section")(92,"mat-form-field")(93,"mat-label"),k(94,"Slide thumbnails by length (px)"),y(),_(95,"input",36),Ye("ngModelChange",function(a){return B(o),ot(r.galleryConfig.thumbsArrowSlideByLength,a)||(r.galleryConfig.thumbsArrowSlideByLength=a),j(a)}),y()()(),Z(96,"br"),_(97,"h4"),k(98,"Auxiliary"),y(),_(99,"section",37)(100,"mat-form-field")(101,"mat-label"),k(102,"Items (not images!) loading latency"),y(),_(103,"input",38),Ye("ngModelChange",function(a){return B(o),ot(r.imageLoadingLatency,a)||(r.imageLoadingLatency=a),j(a)}),ne("change",function(){return B(o),j(r.reloadGallery())}),y()()()()(),_(104,"div",39),J(105,MG,2,21,"gallery",40),y(),J(106,IG,2,0,"ng-template",null,0,$t)(108,NG,5,3,"ng-template",null,1,$t)(110,OG,1,1,"ng-template",null,2,$t)(112,FG,2,0,"ng-template",null,3,$t)(114,RG,2,0,"ng-template",null,4,$t)(116,PG,3,0,"ng-template",null,5,$t)}2&i&&(x(5),Ke("ngModel",r.galleryConfig.arrows),x(3),Ke("ngModel",r.galleryConfig.descriptions),x(3),Ke("ngModel",r.galleryConfig.mouseGestures),x(3),Ke("ngModel",r.galleryConfig.touchGestures),x(3),Ke("ngModel",r.galleryConfig.counter),x(3),Ke("ngModel",r.galleryConfig.loop),x(3),Ke("ngModel",r.galleryConfig.rtl),x(5),Ke("ngModel",r.galleryConfig.counterOrientation),x(8),Ke("ngModel",r.galleryConfig.objectFit),x(8),Ke("ngModel",r.galleryConfig.loading),x(9),Ke("ngModel",r.galleryConfig.visibleItems),x(5),I("value",r.galleryConfig.selectedIndex),x(5),Ke("ngModel",r.galleryConfig.thumbs),x(3),Ke("ngModel",r.galleryConfig.thumbsAutoScroll),x(3),Ke("ngModel",r.galleryConfig.thumbsArrows),x(5),Ke("ngModel",r.galleryConfig.thumbsOrientation),x(12),Ke("ngModel",r.galleryConfig.thumbsScrollBehavior),x(9),Ke("ngModel",r.galleryConfig.thumbsArrowSlideByLength),x(8),Ke("ngModel",r.imageLoadingLatency),x(2),I("ngIf",r.displayGallery))},dependencies:[Lg,V4,Vg,cT,b5,fT,jg,gr,UM,Hd,IM,TM,Dg,Ua,Ka,x0],styles:['[_nghost-%COMP%]{display:block;min-height:1000px}form[_ngcontent-%COMP%]{margin:20px;display:flex;justify-content:space-around;flex-flow:row wrap}form[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin-right:auto}section[_ngcontent-%COMP%]{margin-bottom:15px;display:flex;flex-flow:row wrap;align-items:center}mat-checkbox[_ngcontent-%COMP%]{display:block}mat-radio-button[_ngcontent-%COMP%]{margin:2px 0 2px 20px}mat-form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{white-space:nowrap}mat-form-field[_ngcontent-%COMP%] .mat-form-field-infix{border-top:0}mat-form-field[_ngcontent-%COMP%] .mat-form-field-wrapper{padding-bottom:0}mat-form-field[_ngcontent-%COMP%] .mat-form-field-underline{bottom:0}.gallery-container[_ngcontent-%COMP%]{box-sizing:border-box;height:80vh}gallery[_ngcontent-%COMP%]{width:100%;height:95%;margin:0 auto}section[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:20px}[_nghost-%COMP%] .image-loading-latency .mat-form-field-infix{width:auto}.custom-media[_ngcontent-%COMP%]{object-fit:contain;width:100%;height:100%;outline:0}.custom-media[src=""][_ngcontent-%COMP%]{opacity:0}.custom-loading[_ngcontent-%COMP%], .custom-error[_ngcontent-%COMP%], .custom-thumb-error[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;display:flex;justify-content:center;align-items:center;background-color:#000;color:#fff;opacity:.8}.custom-arrow[_ngcontent-%COMP%]{height:100%;width:36px;background-color:transparent;border:none;display:flex;outline:0;cursor:pointer}'],changeDetection:0})}}return e})(),VG=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["app-header"]],decls:14,vars:0,consts:[[1,"header-inner-container"],[1,"heading-container"],["src","./assets/icons/logo.webp","alt","logo",1,"logo"],[1,"subtitle"],[1,"links"],["href","https://github.com/daelmaak/ngx-gallery",1,"github-link","link"],["src","./assets/icons/GitHub-Mark-64px.png","alt","github link"],["href","https://www.npmjs.com/package/@daelmaak/ngx-gallery","rel","noreferrer",1,"npm-link","link"],["src","./assets/icons/npm-logo.svg","alt","npm link"]],template:function(i,r){1&i&&(_(0,"header")(1,"div",0)(2,"div")(3,"div",1),Z(4,"img",2),_(5,"h1"),k(6,"Ngx Gallery"),y()(),_(7,"div",3),k(8," Performant, mobile first, easy to use Angular 8+ Gallery "),y(),_(9,"div",4)(10,"a",5),Z(11,"img",6),y(),_(12,"a",7),Z(13,"img",8),y()()()()())},styles:["[_nghost-%COMP%]{display:block}header[_ngcontent-%COMP%]{width:100%;height:100%;padding:20px 0;box-shadow:0 1px 1px #bdbdbd;z-index:1;position:relative;box-sizing:border-box}header[_ngcontent-%COMP%] .header-inner-container[_ngcontent-%COMP%]{padding:0 20px;box-sizing:border-box;width:800px;max-width:100vw;margin:0 auto;display:flex;align-items:center;justify-content:center}@media (max-width: 767px){header[_ngcontent-%COMP%] .header-inner-container[_ngcontent-%COMP%]{display:block}header[_ngcontent-%COMP%] .header-inner-container[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{width:100px;position:static;display:block;margin:0 auto 10px}}header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{text-align:center;margin:0}header[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{text-align:center;margin-bottom:20px;font-size:1.1em;color:#313131}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%]{margin:0 auto;text-align:center}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]{display:inline-block;margin-right:15px}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:nth-of-type(1){opacity:.85}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%]:nth-last-of-type(1){margin-right:0}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%], header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] img[_ngcontent-%COMP%], header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:36px;height:36px}header[_ngcontent-%COMP%] .links[_ngcontent-%COMP%] .npm-link[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{transform:scale(1.3) translateY(3px)}.heading-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;gap:1rem;margin-bottom:1rem}.logo[_ngcontent-%COMP%]{width:3rem}"],changeDetection:0})}}return e})();const BG=[[["","subheading",""]],"*"],jG=["[subheading]","*"];function HG(e,n){1&e&&(_(0,"a",3),Z(1,"img",4),k(2," Edit on StackBlitz"),y()),2&e&&I("href",O().stackblitz,ln)}let UG=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["app-showcase"]],inputs:{heading:"heading",subheading:"subheading",stackblitz:"stackblitz"},ngContentSelectors:jG,decls:8,vars:3,consts:[[1,"heading-section"],[1,"subheading"],["class","stackblitz-demo-link","target","_blank",3,"href",4,"ngIf"],["target","_blank",1,"stackblitz-demo-link",3,"href"],["src","./assets/icons/stackblitz-logo-link.svg"]],template:function(i,r){1&i&&(Mi(BG),_(0,"div",0)(1,"h3"),k(2),y(),_(3,"div",1),k(4),vt(5),y(),J(6,HG,3,1,"a",2),y(),vt(7,1)),2&i&&(x(2),ai(r.heading),x(2),Ho(" ",r.subheading," "),x(2),I("ngIf",r.stackblitz))},dependencies:[gr],styles:["[_nghost-%COMP%]{margin:0 30px 50px;display:block}[_nghost-%COMP%] > *[_ngcontent-%COMP%]{margin:0 auto}[_nghost-%COMP%] gallery{width:100%}.heading-section[_ngcontent-%COMP%]{padding:1em 0}.heading-section[_ngcontent-%COMP%] .stackblitz-demo-link[_ngcontent-%COMP%]{display:inline-block;margin-top:10px;text-decoration:none}.heading-section[_ngcontent-%COMP%] .stackblitz-demo-link[_ngcontent-%COMP%]:visited{color:#00f}.heading-section[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:20px;margin-right:4px;margin-bottom:-4px}h3[_ngcontent-%COMP%]{color:#444;margin:0;padding:0}@media (min-width: 768px){h3[_ngcontent-%COMP%]{font-size:1.6em}}.subheading[_ngcontent-%COMP%]{color:#5b5b5b;margin-left:5px;margin-top:5px}"],changeDetection:0})}}return e})();function zG(e,n){1&e&&Z(0,"img",8),2&e&&I("src",O().item.src,ln)}function $G(e,n){1&e&&Z(0,"video",9),2&e&&I("src",O().item.src,ln)}function GG(e,n){if(1&e){const t=Dt();_(0,"div",3),ne("click",function(){const r=B(t).item;return j(O().selectedItem=r)}),_(1,"div",4),J(2,zG,1,1,"img",5)(3,$G,1,1,"video",6),y(),_(4,"div",7)(5,"p")(6,"strong"),k(7),y()(),_(8,"p"),k(9),y()()()}if(2&e){const t=n.item,i=n.video;Te("custom-item--selected",O().selectedItem===t),x(2),I("ngIf",!i),x(),I("ngIf",i),x(4),ai(t.alt),x(2),ai(t.description)}}function qG(e,n){1&e&&(_(0,"mat-icon",10),k(1,"arrow_forward_ios"),y())}let WG=(()=>{class e{constructor(){this.images=[{src:"./assets/images/mountains-1-lg.jpg",thumbSrc:"./assets/images/mountains-1-sm.jpg",alt:"Mountains",description:"Nothing is better than a hike in the mountains"},{src:"./assets/images/beach-1.mp4",alt:"Beach",description:"Video of a beach taken from drone",video:!0},{src:"./assets/images/cheers-1-lg.jpg",thumbSrc:"./assets/images/cheers-1-sm.jpg",alt:"Cheers",description:"Two guys drinking during sunset"},{src:"./assets/images/laptop-1-lg.jpg",alt:"Laptop",description:"Ideal workplace for computer work"},{src:"./assets/images/non-existing-image.jpg",alt:"Sky",description:"Mysterious sky"},{src:"./assets/images/snowflake-1-lg.jpg",thumbSrc:"./assets/images/snowflake-1-sm.jpg",alt:"Snowflake",description:"Snowflake detail"},{src:"./assets/images/mesh-1-lg.jpg",thumbSrc:"./assets/images/mesh-1-sm.jpg",alt:"City",description:"City at night"}]}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=ft({type:e,selectors:[["app-demo-custom-templates"]],inputs:{mobile:"mobile",tablet:"tablet"},decls:5,vars:9,consts:[["customItem",""],["customArrow",""],["loading","lazy",3,"items","itemTemplate","visibleItems","moveByItems","clip","counter","arrowTemplate","loop","thumbs"],[1,"custom-item",3,"click"],[1,"image-container"],[3,"src",4,"ngIf"],["controls","",3,"src",4,"ngIf"],[1,"info-box"],[3,"src"],["controls","",3,"src"],[1,"custom-arrow"]],template:function(i,r){if(1&i&&(Z(0,"gallery",2),J(1,GG,10,6,"ng-template",null,0,$t)(3,qG,2,0,"ng-template",null,1,$t)),2&i){const o=Tn(2),s=Tn(4);I("items",r.images)("itemTemplate",o)("visibleItems",r.mobile?1:r.tablet?2:3)("moveByItems",r.mobile?1:r.tablet?2:3)("clip",!1)("counter",!1)("arrowTemplate",s)("loop",!0)("thumbs",!1)}},dependencies:[cT,gr,Ka],styles:['[_nghost-%COMP%]{display:block;padding:0 4rem;overflow:hidden;position:relative}[_nghost-%COMP%]:before, [_nghost-%COMP%]:after{content:"";position:absolute;width:3rem;height:100%;z-index:10;top:0}[_nghost-%COMP%]:before{left:0;background:linear-gradient(90deg,#fafafa,#fafafa00),linear-gradient(90deg,#fafafa,#fafafa00)}[_nghost-%COMP%]:after{right:0;background:linear-gradient(270deg,#fafafa,#fafafa00),linear-gradient(270deg,#fafafa,#fafafa00)}gallery[_ngcontent-%COMP%]{height:500px}.custom-item[_ngcontent-%COMP%]{width:100%;height:calc(100% - 2rem);margin:1rem .5rem;padding:1rem;box-sizing:border-box;display:flex;flex-direction:column;gap:1rem;border-radius:5px;transition:box-shadow .28s cubic-bezier(.4,0,.2,1),background-color .3s;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;cursor:pointer}.custom-item[_ngcontent-%COMP%]:hover{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.custom-item--selected[_ngcontent-%COMP%]{background-color:#eae0ff}.image-container[_ngcontent-%COMP%]{flex-grow:1}.image-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%], .image-container[_ngcontent-%COMP%] video[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.info-box[_ngcontent-%COMP%]{min-height:5rem}.info-box[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.info-box[_ngcontent-%COMP%] p[_ngcontent-%COMP%]:not(:first-child){margin-top:1rem}.custom-arrow[_ngcontent-%COMP%]{width:40px;height:40px;font-size:40px;color:#fff;text-shadow:0 0 3px black;margin-right:20px;opacity:.8}.custom-arrow[_ngcontent-%COMP%]:hover{opacity:1}'],changeDetection:0})}}return e})(),ZG=(()=>{class e{constructor(t){this.cd=t,this.installScript="\n yarn add @daelmaak/ngx-gallery\n ",this.componentCode="\n import { GalleryComponent, GalleryItem } from '@daelmaak/ngx-gallery';\n\n @Component({\n standalone: true,\n imports: [GalleryComponent]\n })\n export class AppComponent {\n images: GalleryItem[] = [{ src: 'kitten1.jpg' }]\n }\n ",this.componentTemplateCode='\n \n ',this.images=[{src:"./assets/images/mountains-1-lg.jpg",thumbSrc:"./assets/images/mountains-1-sm.jpg",alt:"Mountains",description:"Mighty mountains"},{src:"./assets/images/house-1-lg.jpg",thumbSrc:"./assets/images/house-1-sm.jpg",alt:"House",description:"I just love mysterious houses"},{src:"./assets/images/church-1-lg.jpg",thumbSrc:"./assets/images/church-1-sm.jpg",alt:"Church hallway",description:"Feel the history in this beautiful church"},{src:"./assets/images/lens-1-lg.jpg",thumbSrc:"./assets/images/lens-1-sm.jpg",alt:"Lens",description:"Zoom the world"},{src:"./assets/images/terraces-1-lg.jpg",thumbSrc:"./assets/images/terraces-1-sm.jpg",alt:"Mountains",description:"Sun lit mountains"},{src:"./assets/images/tulip-1-lg.jpg",thumbSrc:"./assets/images/tulip-1-sm.jpg",alt:"Tulip",description:"You didn't forget to buy your better half flowers, did you?"}],this.extendedImages=[...this.images,{src:"./assets/images/forest-1-lg.jpg",thumbSrc:"./assets/images/forest-1-sm.jpg",alt:"Forest",description:"Mysterious forest"},{src:"./assets/images/sky-1-lg.jpg",thumbSrc:"./assets/images/sky-1-sm.jpg",alt:"Sky",description:"Mysterious sky"},{src:"./assets/images/cheers-1-lg.jpg",thumbSrc:"./assets/images/cheers-1-sm.jpg",alt:"Cheers",description:"Two guys drinking during sunset"},{src:"./assets/images/laptop-1-lg.jpg",thumbSrc:"./assets/images/laptop-1-sm.jpg",alt:"Laptop",description:"Ideal workplace for computer work"},{src:"./assets/images/snowflake-1-lg.jpg",thumbSrc:"./assets/images/snowflake-1-sm.jpg",alt:"Snowflake",description:"Snowflake detail"},{src:"./assets/images/mesh-1-lg.jpg",thumbSrc:"./assets/images/mesh-1-sm.jpg",alt:"City",description:"City at night"}],this.erroredImages=[{src:"./assets/images/non-existing-picture.jpg",alt:"Non-existing picture"},{src:"./assets/images/non-existing-video.jpg",alt:"Non-existing video",video:!0},...this.extendedImages.slice(2,4)],this.videos=[{src:"./assets/images/beach-1.mp4",video:!0},{src:"https://www.youtube.com/embed/80_39eAx3z8",video:!0}],ar({read:()=>{const i=matchMedia("(max-width: 768px)"),r=matchMedia("(max-width: 1024px)");i.onchange=o=>{this.mobile=o.matches,this.cd.detectChanges()},r.onchange=o=>{this.tablet=o.matches,this.cd.detectChanges()},this.mobile=i.matches,this.tablet=r.matches}})}static{this.\u0275fac=function(i){return new(i||e)(v(Sn))}}static{this.\u0275cmp=ft({type:e,selectors:[["app-root"]],decls:86,vars:14,consts:[[1,"menu-heading"],["href","#usage"],["href","#demos"],["href","#demo-responsive"],["href","#demo-custom"],["href","#demo-rtl"],["href","#demo-descriptions"],["href","#demo-error-handling"],["href","#demo-videos"],["href","#demo-full-config"],["href","https://github.com/daelmaak/ngx-gallery/blob/master/libs/gallery/src/lib/components/gallery/gallery.component.ts","target","_blank"],["role","main"],[1,"main-content"],["id","usage",1,"usage"],[1,"usage-code"],["id","demos"],["id","demo-responsive","heading","Responsive - resize me!","stackblitz","https://stackblitz.com/edit/ngx-gallery-demo-responsive?file=src%2Fapp%2Fapp.component.html"],["loading","lazy",3,"items"],["id","demo-custom","heading","Custom templates","stackblitz","https://stackblitz.com/edit/ngx-gallery-demo-custom-templates?file=src%2Fapp%2Fapp.component.html"],["subheading",""],[3,"mobile","tablet"],["id","demo-rtl","heading","Right to left"],["loading","lazy",3,"items","isRtl"],["id","demo-descriptions","heading","Descriptions","stackblitz","https://stackblitz.com/edit/ngx-gallery-demo-descriptions?file=src%2Fapp%2Fapp.component.html"],["counterOrientation","top","loading","lazy",3,"items","descriptions"],["id","demo-error-handling","heading","Error handling"],["loading","lazy",3,"items","showErrors"],["id","demo-videos","heading","Videos","subheading","both YouTube and native videos"],["id","demo-full-config","heading","Full configuration"],[3,"images"]],template:function(i,r){1&i&&(Z(0,"app-header"),_(1,"aside")(2,"div",0)(3,"a",1),k(4,"Usage"),y()(),_(5,"div",0)(6,"a",2),k(7,"Showcases"),y()(),_(8,"ul")(9,"li")(10,"a",3),k(11,"Responsive"),y()(),_(12,"li")(13,"a",4),k(14,"Custom templates"),y()(),_(15,"li")(16,"a",5),k(17,"Right to left"),y()(),_(18,"li")(19,"a",6),k(20,"Descriptions"),y()(),_(21,"li")(22,"a",7),k(23,"Error handling"),y()(),_(24,"li")(25,"a",8),k(26,"Videos"),y()(),_(27,"li")(28,"a",9),k(29,"Full configuration"),y()()(),_(30,"div",0),k(31,"Misc"),y(),_(32,"ul")(33,"li")(34,"a",10),k(35,"Documentation"),y()()()(),_(36,"main",11)(37,"div",12)(38,"div",13)(39,"h2"),k(40,"Usage"),y(),_(41,"div",14)(42,"div")(43,"h4"),k(44,"Install"),y(),_(45,"pre")(46,"code"),k(47),y()()(),_(48,"div")(49,"h4"),k(50,"Component"),y(),_(51,"pre")(52,"code"),k(53),y()()(),_(54,"div")(55,"h4"),k(56,"Template"),y(),_(57,"pre")(58,"code"),k(59),y()()()()(),_(60,"h2",15),k(61,"Showcases"),y(),_(62,"app-showcase",16),Z(63,"gallery",17),y(),_(64,"app-showcase",18)(65,"div",19),k(66," You can also use your custom templates for items, loading screen, loading errors, thumbnails and more. Find out which templates can be used to customize in the "),_(67,"a",10),k(68,"documentation."),y()(),Z(69,"app-demo-custom-templates",20),y(),_(70,"app-showcase",21),Z(71,"gallery",22),y(),_(72,"app-showcase",23),Z(73,"gallery",24),y(),_(74,"app-showcase",25),Z(75,"gallery",26),y(),_(76,"app-showcase",27),Z(77,"gallery",17),y(),_(78,"app-showcase",28)(79,"div",19),k(80," Some options like custom templates are missing. Check them out in the "),_(81,"a",10),k(82,"documentation."),y()(),Z(83,"app-demo-whole-config",29),y()()(),_(84,"footer"),k(85,"With care from daelmaak"),y()),2&i&&(x(47),ai(r.installScript),x(6),ai(r.componentCode),x(6),ai(r.componentTemplateCode),x(4),I("items",r.images),x(6),I("mobile",r.mobile)("tablet",r.tablet),x(2),I("items",r.images)("isRtl",!0),x(2),I("items",r.images)("descriptions",!0),x(2),I("items",r.erroredImages)("showErrors",!0),x(2),I("items",r.videos),x(6),I("images",r.images))},dependencies:[Ka,LG,VG,UG,WG],styles:["[_nghost-%COMP%]{display:grid;grid-template-columns:230px calc(100% - 230px);grid-template-rows:auto auto 64px}@media (max-width: 1024px){[_nghost-%COMP%]{grid-template-columns:0px 100%}}app-header[_ngcontent-%COMP%]{grid-column:1/span 2;grid-row:1}aside[_ngcontent-%COMP%]{grid-column:1;grid-row:2/span 2;position:sticky;top:0;max-height:100vh;background-color:#f3f3f3;overflow:auto}@media (max-width: 767px){aside[_ngcontent-%COMP%]{display:none}}aside[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:0;padding:5px 25px}aside[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:8px 0}aside[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{text-decoration:none;color:#5b5b5b}aside[_ngcontent-%COMP%] .menu-heading[_ngcontent-%COMP%]{padding:0 15px 8px;box-sizing:border-box;margin:20px 10px 0;color:#686868;font-weight:700}aside[_ngcontent-%COMP%] .menu-heading[_ngcontent-%COMP%] + ul[_ngcontent-%COMP%]{border-top:1px solid #c1c1c1}main[_ngcontent-%COMP%]{grid-column:2/span 1;margin:0 auto;width:100%;background:#fafafa}@media (max-width: 767px){main[_ngcontent-%COMP%]{max-width:100%}}main[_ngcontent-%COMP%] .main-content[_ngcontent-%COMP%]{max-width:1200px;width:100%;margin:0 auto}main[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], main[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], main[_ngcontent-%COMP%] h4[_ngcontent-%COMP%], main[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], main[_ngcontent-%COMP%] h6[_ngcontent-%COMP%]{margin:0 0 0 30px}main[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{padding:.83em 0 .4em}@media (min-width: 768px){main[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2.3em}}footer[_ngcontent-%COMP%]{grid-column:2/span 1;display:flex;justify-content:center;align-items:center;font-size:.9em;text-align:center;color:#b3b3b3}pre[_ngcontent-%COMP%]{display:flex;margin:0;font-size:1.2em}@media (max-width: 767px){.usage[_ngcontent-%COMP%]{display:none}}.usage-code[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}"],changeDetection:0})}}return e})();const KG=[k$,j$,Bg,u5,_5,T5,v5];let YG=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=qe({type:e,bootstrap:[ZG]})}static{this.\u0275inj=He({providers:[{provide:XI,useValue:{appearance:"outline"}},eU()],imports:[KG,_x,K3,br,Kz,Ka]})}}return e})();ZH().bootstrapModule(YG).catch(e=>console.error(e))}},rs=>{rs(rs.s=374)}]); +//# sourceMappingURL=main.00e373f336046861.js.map \ No newline at end of file diff --git a/browser/main.00e373f336046861.js.map b/browser/main.00e373f336046861.js.map new file mode 100644 index 00000000..fcb00653 --- /dev/null +++ b/browser/main.00e373f336046861.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.00e373f336046861.js","mappings":"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","names":["defaultEquals","a","b","Object","is","activeConsumer","inNotificationPhase","epoch","SIGNAL","Symbol","setActiveConsumer","consumer","prev","REACTIVE_NODE","version","lastCleanEpoch","dirty","producerNode","undefined","producerLastReadVersion","producerIndexOfThis","nextProducerIndex","liveConsumerNode","liveConsumerIndexOfThis","consumerAllowSignalWrites","consumerIsAlwaysLive","producerMustRecompute","producerRecomputeValue","consumerMarkedDirty","consumerOnSignalRead","producerAccessed","node","Error","idx","assertConsumerNode","length","consumerIsLive","producerRemoveLiveConsumerAtIndex","producerAddLiveConsumer","producerUpdateValueVersion","consumerPollProducersForChange","producerNotifyConsumers","consumerMarkDirty","producerUpdatesAllowed","consumerBeforeComputation","consumerAfterComputation","prevConsumer","i","pop","producer","seenVersion","consumerDestroy","indexOfThis","assertProducerNode","isConsumerNode","push","lastIdx","idxProducer","createComputed","computation","create","COMPUTED_NODE","computed","value","ERRORED","error","UNSET","COMPUTING","equal","oldValue","newValue","err","throwInvalidWriteToSignalErrorFn","defaultThrowError","throwInvalidWriteToSignalError","postSignalSetFn","signalSetFn","signalValueChanged","producerIncrementEpoch","SIGNAL_NODE","isFunction","x","_enable_super_gross_mode_that_will_cause_bad_things","config","Promise","useDeprecatedSynchronousErrorHandling","console","warn","stack","log","hostReportError","setTimeout","empty","closed","next","complete","isArray","Array","isObject","UnsubscriptionError","UnsubscriptionErrorImpl","errors","call","this","message","map","toString","join","name","prototype","Subscription","constructor","unsubscribe","_parentOrParents","_subscriptions","_ctorUnsubscribe","_unsubscribe","remove","index","e","flattenUnsubscriptionErrors","len","sub","concat","add","teardown","subscription","EMPTY","tmp","indexOf","subscriptions","subscriptionIndex","splice","reduce","errs","rxSubscriber","Math","random","Subscriber","destinationOrNext","super","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","arguments","destination","emptyObserver","SafeSubscriber","rxSubscriberSymbol","subscriber","_next","_error","_complete","_unsubscribeAndRecycle","_parentSubscriber","observerOrNext","context","bind","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","fn","parent","observable","identity","Observable","subscribe","_isScalar","_subscribe","lift","operator","source","sink","toSubscriber","nextOrObserver","_trySubscribe","canReportError","observer","forEach","promiseCtor","getPromiseCtor","resolve","reject","Symbol_observable","pipe","operations","pipeFromArray","fns","input","toPromise","ObjectUnsubscribedError","ObjectUnsubscribedErrorImpl","SubjectSubscription","subject","observers","subscriberIndex","SubjectSubscriber","Subject","hasError","thrownError","AnonymousSubject","copy","slice","asObservable","BehaviorSubject","_value","getValue","project","thisArg","TypeError","MapOperator","MapSubscriber","count","result","EmptyError","EmptyErrorImpl","filter","predicate","FilterOperator","FilterSubscriber","ArgumentOutOfRangeError","ArgumentOutOfRangeErrorImpl","scheduler","emptyScheduled","schedule","take","TakeOperator","total","TakeSubscriber","DefaultIfEmptyOperator","defaultValue","DefaultIfEmptySubscriber","isEmpty","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","hasValue","XSS_SECURITY_URL","RuntimeError","code","formatRuntimeError","abs","noSideEffects","PARAMETERS","makeParamDecorator","props","parentClass","metaCtor","makeMetadataCtor","args","values","propName","ParamDecoratorFactory","apply","annotationInstance","ParamDecorator","annotation","cls","unusedKey","parameters","hasOwnProperty","defineProperty","ngMetadataName","annotationCls","_global","globalThis","getClosureSafeProperty","objWithPropertyToExtract","key","fillProperties","target","stringify","token","overriddenName","res","newLineIndex","substring","concatStringsWithSpace","before","after","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","type","isForwardRef","ɵɵdefineInjectable","opts","providedIn","factory","ɵɵdefineInjector","options","providers","imports","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","field","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ɵprov","ɵinj","ngInjectableDef","ngInjectorDef","InjectionToken","_desc","__NG_ELEMENT_ID__","multi","isEnvironmentProviders","ɵproviders","NG_COMP_DEF","ɵcmp","NG_DIR_DEF","ɵdir","NG_PIPE_DEF","ɵpipe","NG_MOD_DEF","ɵmod","NG_FACTORY_DEF","ɵfac","NG_ELEMENT_ID","NG_ENV_ID","__NG_ENV_ID__","renderStringify","String","throwProviderNotFoundError","injectorName","errorMessage","InjectFlags","Default","Host","Self","SkipSelf","Optional","_injectImplementation","getInjectImplementation","setInjectImplementation","impl","previous","injectRootLimpMode","notFoundValue","flags","injectableDef","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","injector","former","injectInjectorOnly","ngDevMode","get","ɵɵinject","inject","convertToBitFlags","optional","host","self","skipSelf","injectArgs","types","arg","j","meta","flag","getInjectFlag","attachInjectFlag","decorator","getFactoryDef","throwNotFound","deepForEach","addToArray","arr","removeFromArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","array","value1","value2","end","keyValueArrayGet","_arrayIndexOfSorted","shift","start","middle","current","EMPTY_OBJ","EMPTY_ARRAY","ENVIRONMENT_INITIALIZER","INJECTOR$1","INJECTOR_DEF_TYPES","NullInjector","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","None","ShadowDom","InputFlags","SignalBased","HasDecoratorInputTransform","classIndexOf","className","classToSearch","startingIndex","foundIndex","charCodeAt","setUpAttributes","renderer","native","attrs","namespaceURI","attrName","attrVal","setAttribute","isAnimationProp","setProperty","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","src","srcMarker","item","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","NG_TEMPLATE_SELECTOR","isCssClassMatching","tNode","cssClassToMatch","isProjectionMode","toLowerCase","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","selector","mode","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","bindingsMode","maybeAttrName","matchTemplateAttribute","attr","isNodeMatchingSelectorList","isSelectorInSelectorList","list","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","chunk","trim","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","ɵɵdefineComponent","componentDefinition","baseDef","getNgDirectiveDef","def","decls","vars","template","consts","ngContentSelectors","onPush","changeDetection","directiveDefs","pipeDefs","dependencies","standalone","getStandaloneInjector","signals","data","encapsulation","styles","_","schemas","tView","id","initFeatures","extractDefListOrFactory","getComponentId","componentDef","hash","hashSelectors","selectors","hostVars","hostAttrs","exportAs","JSON","inputs","outputs","getOwnPropertyNames","contentQueries","viewQuery","char","imul","extractDirectiveDef","getComponentDef","getDirectiveDef","nonNull","ɵɵdefineNgModule","bootstrap","declarations","exports","transitiveCompileScopes","parseAndConvertBindingsForDefinition","obj","declaredInputs","newLookup","minifiedKey","publicName","declaredName","inputFlags","ɵɵdefineDirective","directiveDefinition","ɵɵdefinePipe","pipeDef","pure","onDestroy","ngOnDestroy","getPipeDef$1","providersResolver","hostBindings","inputTransforms","inputConfig","features","setInput","findHostDirectiveDefs","hostDirectives","debugInfo","definition","defExtractor","dep","makeEnvironmentProviders","importProvidersFrom","sources","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","Set","injectorTypesWithProviders","collectProviders","provider","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","visitor","ngModule","deepForEachProvider","container","parents","defType","injDef","cmpDef","isDuplicate","has","deps","importTypesWithProviders","imported","provide","useFactory","useValue","defProviders","injectorType","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR","getNullInjector","EnvironmentInjector","R3Injector","destroyed","_destroyed","scopes","records","Map","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","set","makeRecord","record","injectorDefTypes","destroy","assertNotDestroyed","setActiveConsumer$1","service","onDestroyHooks","hook","clear","callback","removeOnDestroy","runInContext","previousInjector","previousInjectImplementation","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","unshift","catchInjectorError","injectorErrorName","tokenPath","formatError","text","charAt","parts","replace","resolveInjectorInitializers","initializers","initializer","tokens","keys","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","destroyCBIdx","Function","getUndecoratedInjectableFactory","inheritedInjectableDef","getInheritedInjectableDef","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","useExisting","classRef","useClass","hasDeps","isInInjectionContext","getCurrentInjector","assertInInjectionContext","debugFn","HOST","TVIEW","FLAGS","PARENT","NEXT","T_HOST","HYDRATION","CLEANUP","CONTEXT","INJECTOR","ENVIRONMENT","RENDERER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","ID","EMBEDDED_VIEW_INJECTOR","ON_DESTROY_HOOKS","EFFECTS_TO_SCHEDULE","REACTIVE_TEMPLATE_CONSUMER","HEADER_OFFSET","TYPE","DEHYDRATED_VIEWS","NATIVE","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","LContainerFlags","HasTransplantedViews","isLView","isLContainer","isContentQueryHost","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","SimpleChange","previousValue","currentValue","firstChange","isFirstChange","applyValueToInputField","instance","inputSignalNode","privateName","applyValueToInputSignal","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChanges","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","setSimpleChangesStore","store","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profiler","event","hookOrListener","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","load","view","getComponentLViewByIndex","nodeIndex","hostView","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","markViewForRefresh","markAncestorsForTraversal","requiresRefreshOrTraversal","updateAncestorTraversalFlagsOnAttach","changeDetectionScheduler","notify","getLViewParent","storeLViewOnDestroy","onDestroyCallback","instructionState","lFrame","createLFrame","bindingsEnabled","skipHydrationRootTNode","_isRefreshingViews","getBindingsEnabled","isInSkipHydrationBlock$1","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","setCurrentTNode","isParent","isCurrentTNodeParent","setCurrentTNodeAsNotParent","isRefreshingViews","setIsRefreshingViews","getBindingRoot","bindingRootIndex","bindingStartIndex","nextBindingIndex","bindingIndex","incrementBindingIndex","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentQueryIndex","currentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","firstChild","inI18n","currentLFrame","childLFrame","child","selectedIndex","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","getNamespace$1","_wasLastNodeCreated","wasLastNodeCreated","lastNodeWasCreated","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","max","lastNodeIndexFound","callHook","callHookInternal","directive","isInitHook","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ChainedInjector","parentInjector","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","location","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","v","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","footer","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","tData","isFactory","throwCyclicDependencyError","path","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","ngOnInit","ngDoCheck","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","getFactoryOf","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","classes","attrsLength","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","Injector","NULL","getOriginalError","SCHEDULE_IN_ROOT_ZONE_DEFAULT","DestroyRef","injectDestroyRef","NodeInjectorDestroyRef","removeLViewOnDestroy","PendingTasks","taskId","pendingTasks","hasPendingTasks","_hasPendingTasks","delete","size","EventEmitter","EventEmitter_","isAsync","destroyRef","__isAsync","emit","nextFn","errorFn","completeFn","wrapInTimeout","noop","scheduleCallbackWithRafRace","timeoutId","animationFrameId","cleanup","cancelAnimationFrame","clearTimeout","requestAnimationFrame","scheduleCallbackWithMicrotask","queueMicrotask","isAngularZoneProperty","angularZoneInstanceIdProperty","ngZoneInstanceId","NgZone","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","onError","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","scheduleInRootZone","Zone","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","callbackScheduled","forkInnerZoneWithAngularBehavior","zone","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","scheduleCheckStable","updateMicroTaskStatus","isCheckStableRunning","checkStable","root","run","instanceId","properties","xh","Uc","onInvokeTask","delegate","task","applyThis","applyArgs","shouldBeIgnoredByZone","hasApplyArgsData","invokeTask","onEnter","onLeave","onInvoke","invoke","isSchedulerTick","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","handleError","runOutsideAngular","isInAngularZone","assertInAngularZone","assertNotInAngularZone","runTask","scheduleEventTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","ErrorHandler","_console","originalError","_findOriginalError","INTERNAL_APPLICATION_ERROR_HANDLER","userErrorHandler","injectElementRef","createElementRef","ElementRef","nativeElement","unwrapElementRef","symbolIterator","_results","iterator","QueryList","changes","_changes","_emitDistinctChangesOnly","_onDirty","_changesDetected","first","last","proto","find","init","some","toArray","reset","resultsTree","identityAccessor","newResultFlat","flatten","flat","Number","POSITIVE_INFINITY","arrayEquals","valueA","valueB","notifyOnChanges","onDirty","cb","setDirty","SKIP_HYDRATION_ATTR_NAME","SKIP_HYDRATION_ATTR_NAME_LOWER_CASE","hasSkipHydrationAttrOnTNode","mergedAttrs","hasSkipHydrationAttrOnRElement","rNode","hasAttribute","hasInSkipHydrationBlockFlag","TRACKED_LVIEWS","uniqueIdCounter","unregisterLView","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","getFirstLContainer","getNearestLContainer","getNextLContainer","viewOrContainer","DOCUMENT","getDocument","document","APP_ID","DEFAULT_APP_ID","PLATFORM_INITIALIZER","PLATFORM_ID","ANIMATION_MODULE_TYPE","CSP_NONCE","body","querySelector","getAttribute","initTransferState","transferState","TransferState","retrieveTransferredState","doc","appId","script","getElementById","textContent","parse","onSerializeCallbacks","hasKey","onSerialize","toJson","REFERENCE_NODE_HOST","REFERENCE_NODE_BODY","NodeNavigationStep","FirstChild","NextSibling","ELEMENT_CONTAINERS","TEMPLATES","CONTAINERS","MULTIPLIER","NUM_ROOT_NODES","TEMPLATE_ID","NODES","DISCONNECTED_NODES","NGH_DATA_KEY","NGH_ATTR_NAME","SSR_CONTENT_INTEGRITY_MARKER","_retrieveHydrationInfoImpl","retrieveHydrationInfoImpl","nghAttrValue","componentViewNgh","rootViewNgh","split","remainingNgh","dehydratedView","setSegmentHead","nextSibling","removeAttribute","retrieveHydrationInfo","getLNodeForHydration","viewRef","hydrationInfo","segmentHeads","getSegmentHead","getSerializedContainerViews","calcSerializedContainerSize","views","numNodes","isDisconnectedNode$1","disconnectedNodes","nodeIds","initDisconnectedNodes","IS_HYDRATION_DOM_REUSE_ENABLED","PRESERVE_HOST_CONTENT","policy$1","policy","trustedHTMLFromString","html","getPolicy$1","trustedTypes","createPolicy","createHTML","s","createScript","createScriptURL","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","url","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","DOMParserHelper","inertDocumentHelper","getInertBodyElement","window","DOMParser","parseFromString","InertDocumentHelper","defaultDoc","inertDocument","implementation","createHTMLDocument","templateEl","createElement","innerHTML","SAFE_URL_PATTERN","_sanitizeUrl","match","tagSet","tags","t","merge","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","el","traverseContent","parentNodes","nodeType","Node","ELEMENT_NODE","startElement","TEXT_NODE","chars","nodeValue","getFirstChild","endElement","getNextSibling","element","tagName","getNodeName","elAttrs","attributes","elAttr","lower","encodeEntities","previousSibling","clobberedElementError","isClobberedElement","parentNode","childNode","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","nodeName","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","inertBodyElement","getInertBodyHelper","isDOMParserAvailable","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","content","SecurityContext","NONE","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","ɵɵsanitizeHtml","sanitizer","getSanitizer","sanitize","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","isPlatformBrowser","RendererStyleFlags2","Important","DashCase","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","applyToElementOrContainer","action","lNodeToHandle","beforeNode","lContainer","isComponent","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","applyContainer","parentRElement","anchor","applyView","createTextNode","createText","createCommentNode","createComment","escapeCommentText","createElementNode","namespace","detachViewFromDOM","trackMovedView","declarationContainer","movedViews","detachMovedView","declarationViewIndex","detachView","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromDOM","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","consumerDestroy$1","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","targetIdx","destroyHooksFn","getParentRElement","getClosestRElement","isMove","insertBefore","appendChild","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","childRNode","childTNode","parentRNode","anchorNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","removeChild","clearElementContents","rElement","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","nodeToProject","projectedComponentLView","writeDirectClass","setupStaticAttributes","writeDirectStyle","NO_CHANGE","ɵɵadvance","delta","selectIndexInternal","checkNoChangesMode","ɵɵdirectiveInject","writeToDirectiveInput","SIGNAL$1","transformFn","createLView","tHostNode","environment","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","isInI18nBlock","getCurrentParentTNode","allocExpando","numSlotsToAlloc","initialValue","allocIdx","executeTemplate","templateFn","rf","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","lViewFlags","componentView","addToViewTree","rendererFactory","createRenderer","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","incompleteFirstPass","createTView","directives","pipes","constsOrFactory","ssrId","initialViewLength","createViewBlueprint","queries","fill","expandoStartIndex","hostBindingOpCodes","firstUpdatePass","staticViewQueries","staticContentQueries","components","directiveRegistry","pipeRegistry","_applyRootElementTransformImpl","applyRootElementTransformImpl","rootElement","processTextNodeMarkersBeforeHydration","commentNodesIterator","createNodeIterator","NodeFilter","SHOW_COMMENT","acceptNode","getTextNodeContent","FILTER_ACCEPT","FILTER_REJECT","currentNode","nodes","nextNode","replaceWith","captureNodeBindings","aliasMap","bindingsResult","hostDirectiveAliasMap","internalName","finalPublicName","addPropertyBinding","bindings","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","viewIndex","childComponentLView","mapPropName","resolveDirectives","localRefs","exportsMap","matchResult","findDirectiveDefMatches","registry","matches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","directiveIdx","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","dirIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","elementAttributeInternal","setElementAttribute","strValue","initialInputData","inputsToStore","createLContainer","hostNative","refreshContentQueries","directiveDefIdx","executeViewQueryFn","viewQueryFn","component","getOrCreateLViewCleanup","getOrCreateTViewCleanup","errorHandler","textBindingInternal","updateTextNode","setValue","renderComponent","hostLView","componentHostIdx","componentTView","syncViewWithBlueprint","hostRNode","renderView","finishViewCreation","renderChildComponents","createAndRenderEmbeddedLView","declarationLView","templateTNode","embeddedTView","embeddedLView","declarationViewLQueries","createEmbeddedView","shouldAddViewToDom","addLViewToLContainer","addToDOM","insertView","containerLength","addViewToDOM","parentNativeNode","collectNativeNodes","lNode","collectNativeNodesInLContainer","nodesInSlot","lViewInAContainer","lViewFirstChildTNode","freeConsumers","REACTIVE_LVIEW_CONSUMER_NODE","REACTIVE_NODE$1","TEMPORARY_CONSUMER_NODE","viewShouldHaveReactiveConsumer","MAXIMUM_REFRESH_RERUNS$1","detectChangesInternal","notifyErrorHandler","begin","detectChangesInViewWhileDirty","lastIsRefreshingViewsValue","detectChangesInView","retries","inlineEffectRunner","flush","refreshView","returnConsumerToPool","currentConsumer","getOrBorrowReactiveLViewConsumer","borrowReactiveLViewConsumer","consumerBeforeComputation$1","getActiveConsumer","getActiveConsumer$1","getOrCreateTemporaryConsumer","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","detectChangesInEmbeddedViews","processHostBindingOpCodes","opCode","bindingRootIndx","hostBindingFn","detectChangesInChildComponents","notifyEffect","consumerAfterComputation$1","maybeReturnReactiveLViewConsumer","detectChangesInViewIfAttached","detectChangesInComponent","shouldRefreshView","consumerPollProducersForChange$1","markViewDirty","dirtyBitsToUse","ViewRef$1","rootNodes","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","markForCheck","detach","reattach","detectChanges","checkNoChanges","attachToViewContainerRef","detachFromAppRef","isRoot","attachToAppRef","appRef","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","createEmbeddedViewImpl","createTemplateRef","REF_EXTRACTOR_REGEXP","RegExp","getNoOffsetIndex","locateNextRNode","noOffsetIndex","locateI18nRNodeByIndex","i18nNodes","locateRNodeByPath","referenceNode","navigationInstructions","decompressNodeLocation","refNodeId","refNodeName","rest","ref","parseInt","steps","step","matchAll","repeat","ɵɵresolveBody","ownerDocument","navigateToNode","from","instructions","r","previousTNodeParent","previousTNode","isFirstElementInNgContainer","previousRElement","noOffsetPrevSiblingIndex","segmentHead","siblingAfter","skip","_isI18nHydrationSupportEnabled","cleanupDehydratedIcuData","dehydratedIcuData","cases","case","removeDehydratedViews","removeDehydratedView","nodesRemoved","currentRNode","cleanupLContainer","cleanupLView","cleanupI18nHydrationData","dehydratedIcuDataMap","_findMatchingDehydratedViewImpl","findMatchingDehydratedViewImpl","findMatchingDehydratedView","ChangeDetectionScheduler","ZONELESS_ENABLED","ZONELESS_SCHEDULER_DISABLED","SCHEDULE_IN_ROOT_ZONE","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","resolveComponentFactory","noComponentFactoryError","ComponentFactoryResolver$1","RendererFactory2","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","computeStaticStyling","writeToHost","ComponentFactoryResolver","ComponentFactory","toRefArray","isInputMap","templateName","isSignal","refArray","transform","componentType","stringifyCSSSelectorList","selectorList","isBoundToModule","projectableNodes","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","locateHostElement","elementOrSelector","preserveContent","selectRootElement","applyRootElementTransform","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","feature","LifecycleHooksFeature","ComponentRef","_rootLView","previousInputValues","changeDetectorRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","templateRef","indexOrOptions","insertImpl","createComponent","componentFactoryOrType","isComponentFactory","isType","ngModuleRef","componentFactory","contextInjector","componentRef","insert","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","getOrCreateViewRefs","move","newIndex","viewRefsArr","detachedView","_locateOrCreateAnchorNode","createAnchorNode","_populateDehydratedViewsInLContainer","commentNode","insertAnchorNode","nativeNextSibling","populateDehydratedViewsInLContainerImpl","isInSkipHydrationBlock","serializedViews","dehydratedViews","locateDehydratedViewsInContainer","serializedView","locateOrCreateAnchorNode","LQuery_","queryList","clone","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","read","splitQueryMultiSelectors","locator","TQueries_","elementStart","elementEnd","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","metadata","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","tNodeIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","loadQueryInternal","createLQuery","storeCleanupWithContext","cleanupFn","createContentQuery","createTQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","getQueryResults","markedFeatures","performanceMarkFeature","performance","mark","detail","signal","signalFn","createSignal","getter","createSignal$1","signalSetFn$1","update","updateFn","signalUpdateFn","updater","signalUpdateFn$1","asReadonly","signalAsReadonlyFn","readonlyFn","isWritableSignal","createQuerySignalFn","firstOnly","required","createComputed$1","_dirtyCounter","refreshSignalQuery","_queryIndex","results","_flatValue","contentChildFn","createSingleResultOptionalQuerySignalFn","contentChild","contentChildRequiredFn","createSingleResultRequiredQuerySignalFn","ɵɵInheritDefinitionFeature","superType","getSuperType","getPrototypeOf","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","mergeInputsWithTransforms","animation","defData","mergeHostAttrsAcrossInheritance","minifiedName","prevViewQuery","ctx","prevContentQueries","prevHostBindings","ɵɵInputTransformsFeature","NgModuleRef$1","NgModuleFactory$1","NgModuleRef","_parent","runInjectorInitializers","_bootstrapComponents","destroyCbs","componentFactoryResolver","ngModuleDef","getNgModuleDef","maybeUnwrapFn","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","debugName","runEnvironmentInitializers","isListLikeIterable","isJsObject","o","updateBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","isDetachedByI18n","declareTemplate","declarationTView","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","comment","_locateOrCreateContainerAnchor","populateDehydratedViewsInLContainer","ɵɵtemplate","attrsIndex","createContainerAnchorImpl","locateOrCreateContainerAnchorImpl","isNodeCreationMode","AfterRenderPhase","EarlyRead","Write","MixedReadWrite","Read","AfterRenderManager","execute","AfterRenderImpl","ngZone","sequences","deferredRegistrations","executing","PHASES","phase","sequence","erroredOrDestroyed","pipelinedValue","afterRun","once","register","unregister","AfterRenderSequence","unregisterOnDestroy","afterNextRender","callbackOrSpec","afterRenderImpl","NOOP_AFTER_RENDER_REF","manager","manualCleanup","getHooks","earlyRead","write","mixedReadWrite","ɵɵattribute","interpolation2","prefix","v0","i0","v1","suffix","getBindingIndex","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","markDuplicates","tStylingKey","isPrevDir","tStylingAtIndex","isMap","cursor","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","parseClassNameNext","consumeClassToken","startIndex","consumeWhitespace","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","property","ɵɵstyleProp","prop","checkStylingProperty","ɵɵclassProp","ɵɵclassMap","checkStylingMap","stringParser","stylingFirstUpdatePass","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","updateStyling","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","classKeyValueArraySet","classStringParser","parseClassName","resetParserState","normalizeSuffix","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","isClassBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","previousNode","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","stringKey","includes","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","addClass","removeClass","removeStyle","endsWith","setStyle","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵconditional","matchingTemplateIndex","contextValue","prevMatchingTemplateIndex","prevContainer","getLContainer","removeLViewFromLContainer","nextLContainerIndex","nextContainer","getExistingTNode","getLViewFromLContainer","ɵɵelementStart","elementStartFirstCreatePass","_locateOrCreateElementNode","hasDirectives","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","isSkipHydrationRootTNode","leaveSkipHydrationBlock","decreaseElementDepthCount","hasClassInput","hasStyleInput","ɵɵelement","locateOrCreateElementNodeImpl","enterSkipHydrationBlock","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","_locateOrCreateElementContainerNode","ɵɵelementContainerEnd","ɵɵelementContainer","locateOrCreateElementContainerNode","ngContainerSize","getNgContainerSize","ɵɵgetCurrentView","ɵɵhostProperty","DEFAULT_LOCALE_ID","LOCALE_ID$1","stashEventListener","eventName","listenerFn","ɵɵlistener","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","listen","propsLength","executeListenerWithErrorHandling","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","level","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","newArray","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","fallbackTemplateFn","fallbackDecls","fallbackVars","fallbackIndex","insertFallbackContent","fallbackTNode","fallbackLContainer","applyProjection","ɵɵcontentQuery","ɵɵviewQuery","createViewQuery","ɵɵqueryRefresh","isCreationMode","ɵɵloadQuery","ɵɵcontentQuerySignal","bindQueryToSignal","_queryList","ɵɵreference","getContextLView","ɵɵtext","textNative","_locateOrCreateTextNode","locateOrCreateTextNodeImpl","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","interpolation1","ɵɵtextInterpolate2","ɵɵtwoWayProperty","ɵɵtwoWayBindingSet","canWrite","ɵɵtwoWayListener","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","multiFactory","factoryFn","f","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","StandaloneService","_injector","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","createEnvironmentInjector","ɵɵStandaloneFeature","ɵɵpureFunction3","slotOffset","pureFn","exp3","pureFunction3Internal","bindingRoot","bindingUpdated3","getPureFunctionReturnValue","ɵɵpureFunction4","exp4","pureFunction4Internal","bindingUpdated4","returnValueIndex","lastReturnValue","pureFunction1Internal","exp","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","offset","isPure","ɵɵtemplateRefExtractor","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","_ngZone","testabilityGetter","_isZoneStable","_callbacks","taskTrackingZone","setTestabilityGetter","addToWindow","_watchAngularEvents","_runCallbacksIfReady","doneCb","pending","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","timeout","whenStable","registerApplication","unregisterApplication","findProviders","using","exactMatch","__ngFactoryType__","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","elem","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","isPromise","then","isSubscribable","APP_INITIALIZER","ApplicationInitStatus","initialized","done","donePromise","rej","appInits","runInitializers","asyncInitPromises","initResult","observableAsPromise","all","catch","APP_BOOTSTRAP_LISTENER","optionsReducer","objs","whenStableStore","ApplicationRef","_bootstrapListeners","_runningTick","_destroyListeners","_views","internalErrorHandler","afterRenderManager","zonelessEnabled","dirtyFlags","deferredDirtyFlags","externalTestViews","beforeRender","afterTick","componentTypes","allViews","stable","finally","componentOrFactory","isStandalone","cf","compRef","_loadComponent","tick","_tick","synchronize","runs","synchronizeOnce","useGlobalCheck","detectChangesInViewIfRequired","syncDirtyFlagsWithViews","attachView","listeners","listener","viewCount","warnIfDestroyed","applicationRef","WeakMap","cachedWhenStable","whenStablePromise","hasDefaultValue","defaultIfEmpty","isFirstPass","NgZoneChangeDetectionScheduler","initialize","_onMicrotaskEmptySubscription","runningTick","internalProvideZoneChangeDetection","ngZoneFactory","ignoreChangesOutsideZone","getNgZoneOptions","ngZoneChangeDetectionScheduler","ZoneStablePendingTask","eventCoalescing","runCoalescing","ChangeDetectionSchedulerImpl","taskService","disableScheduling","zoneIsDefined","schedulerTickApplyArgs","__scheduler_tick__","angularZoneId","cancelScheduledCallback","useMicrotaskScheduler","pendingRenderTaskId","shouldScheduleTick","scheduleCallback","LOCALE_ID","getGlobalLocale","$localize","locale","PLATFORM_DESTROY_LISTENERS","isApplicationBootstrapConfig","moduleRef","PlatformRef","_modules","bootstrapModuleFactory","moduleFactory","allAppProviders","getNgZone","ngZoneToUse","ngZoneEventCoalescing","ngZoneRunCoalescing","createNgModuleRefWithProviders","envInjector","r3Injector","exceptionHandler","onErrorSubscription","destroyListener","onPlatformDestroyListeners","platformInjector","allPlatformModules","_callAndReportToErrorHandler","initStatus","setLocaleId","localeId","rootComponent","moduleDoBootstrap","ngDoBootstrap","bootstrapModule","compilerOptions","compileNgModuleFactory","module","destroyListeners","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","createPlatformFactory","parentPlatformFactory","desc","extraProviders","platform","getPlatform","platformProviders","createPlatform","publishSignalConfiguration","setThrowInvalidWriteToSignalError","setThrowInvalidWriteToSignalError$1","runPlatformInitializers","createPlatformInjector","assertPlatform","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","supports","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","_trackByFn","forEachItem","forEachOperation","nextIt","nextRemove","addRemoveOffset","moveOffsets","currentIndex","getPreviousIndex","adjPreviousIndex","_nextRemoved","previousIndex","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","forEachAddedItem","_nextAdded","forEachMovedItem","_nextMoved","forEachRemovedItem","forEachIdentityChange","_nextIdentityChange","diff","collection","check","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","defaultIterableDiffersFactory","IterableDiffers","copied","extend","iterable","platformCore","ApplicationModule","isHydrationSupportEnabled","withDomHydration","isEnabled","setIsI18nHydrationSupportEnabled","enabled","verifySsrContentsIntegrity","hydrationMarker","childNodes","COMMENT_NODE","enableHydrationRuntimeSupport","enableRetrieveHydrationInfoImpl","enableLocateOrCreateElementNodeImpl","enableLocateOrCreateTextNodeImpl","enableLocateOrCreateElementContainerNodeImpl","enableLocateOrCreateContainerAnchorImpl","enableLocateOrCreateContainerRefImpl","enableFindMatchingDehydratedViewImpl","enableApplyRootElementTransformImpl","whenStableWithTimeout","cleanupDehydratedViews","booleanAttribute","numberAttribute","fallbackValue","NaN","isNaN","parseFloat","untracked","nonReactiveReadsFn","_DOM","getDOM","DomAdapter","NgForOfContext","$implicit","ngForOf","even","odd","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_viewContainer","_template","_differs","_differ","ngForTemplate","_applyChanges","viewContainer","adjustedPreviousIndex","applyViewChange","ilen","ngTemplateContextGuard","dir","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","condition","_updateView","ngIfThen","assertTemplate","ngIfElse","ɵstringify","NgTemplateOutlet","_viewContainerRef","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","_shouldRecreateView","viewContainerRef","viewContext","_createContextForwardProxy","Proxy","_target","Reflect","receiver","SubscribableStrategy","createSubscription","async","updateLatestValue","dispose","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","markForCheckOnValueUpdate","_subscription","_obj","_strategy","_ref","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","ɵRuntimeError","CommonModule","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","isPlatformServer","platformId","isScheduler","subscribeToArray","scheduleArray","fromArray","of","getSymbolIterator","isArrayLike","subscribeTo","obs","subscribeToObservable","promise","subscribeToPromise","Symbol_iterator","return","subscribeToIterable","msg","scheduled","isInteropObservable","scheduleObservable","schedulePromise","isIterable","scheduleIterable","SimpleInnerSubscriber","notifyNext","notifyError","notifyComplete","SimpleOuterSubscriber","innerValue","innerSubscribe","innerSubscriber","mergeMap","resultSelector","concurrent","ii","MergeMapOperator","MergeMapSubscriber","hasCompleted","buffer","active","_tryNext","_innerSub","ish","innerSubscription","tap","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","HttpHandler","HttpHeaders","headers","normalizedNames","lazyUpdate","lazyInit","line","maybeSetNormalizedName","Headers","setHeaderEntries","entries","getAll","append","op","lcName","copyFrom","applyUpdate","other","base","toDelete","existing","headerValues","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeURIComponent","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","encodeURIComponent","valueToString","HttpParams","updates","cloneFrom","encoder","fromString","fromObject","paramParser","rawParams","codec","param","eqIdx","val","appendAll","params","eKey","HttpContext","isArrayBuffer","ArrayBuffer","isBlob","Blob","isFormData","FormData","HttpRequest","method","third","fourth","reportProgress","withCredentials","responseType","toUpperCase","mightHaveBody","transferCache","urlWithParams","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","status","statusText","ok","HttpResponse","addBody","observe","HttpClient","handler","request","req","events$","concatMap","handle","res$","head","jsonp","callbackParam","patch","post","HTTP_ROOT_INTERCEPTOR_FNS","HTTP_TRANSFER_CACHE_ORIGIN_MAP","BODY","HEADERS","STATUS","STATUS_TEXT","REQ_URL","RESPONSE_TYPE","CACHE_OPTIONS","ALLOWED_METHODS","transferCacheInterceptorFn","isCacheActive","globalOptions","requestOptions","requestMethod","includePostRequests","includeRequestsWithAuthHeaders","hasAuthHeaders","originMap","isServer","requestUrl","mapRequestOriginUrl","origin","mappedOrigin","storeKey","makeCacheKey","mappedRequestUrl","encodedParams","sortAndConcatParams","serializedBody","generateHash","response","headersToInclude","includeHeaders","J0","undecodedBody","rx","ex","httpHeaders","tx","nx","ix","TextEncoder","encode","getFilteredHeaders","headersMap","sort","k","withHttpTransferCache","cacheOptions","ɵperformanceMarkFeature","cacheState","ɵwhenStable","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","makeCurrent","setRootDomAdapter","adapter","ɵsetRootDomAdapter","onAndCancel","evt","addEventListener","removeEventListener","dispatchEvent","getDefaultDocument","createHtmlDocument","isElementNode","isShadowRoot","DocumentFragment","getGlobalEventTarget","getBaseHref","href","getBaseElementHref","baseElement","relativePath","baseURI","pathname","resetBaseElement","getUserAgent","navigator","userAgent","getCookie","parseCookieValue","cookieStr","cookie","eqIndex","cookieName","cookieValue","ɵparseCookieValue","BrowserXhr","build","XMLHttpRequest","EVENT_MANAGER_PLUGINS","EventManager","plugins","_zone","_eventNameToPlugin","plugin","_plugins","reverse","_findPluginFor","getZone","EventManagerPlugin","_doc","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","nonce","styleRef","hostNodes","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","style","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","getAllStyles","addHost","hostNode","addStyleToHost","removeHost","elements","querySelectorAll","styleMap","styleRefValue","usage","getStyleElement","styleEl","styleElRef","NAMESPACE_URIS","svg","xhtml","xlink","xml","xmlns","math","COMPONENT_REGEX","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimStylesContent","compId","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","rendererByCompId","defaultRenderer","DefaultDomRenderer2","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","ShadowDomRenderer","throwOnSyntheticProps","createElementNS","newChild","isTemplateNode","refChild","oldChild","selectorOrNode","namespaceUri","setAttributeNS","removeAttributeNS","classList","removeProperty","ɵgetDOM","decoratePreventDefault","eventHandler","preventDefault","hostEl","shadowRoot","attachShadow","nodeOrShadowRoot","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","altKey","control","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","matchEventFullKeyCode","fullKeyCode","keycode","modifierGetter","keyName","INTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵPLATFORM_BROWSER_ID","initDomAdapter","_document","ɵsetDocument","setDocument","platformBrowser","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","getAngularTestability","getAllAngularTestabilities","getAllAngularRootElements","frameworkStabilizers","testabilities","decrement","parentElement","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","BrowserModule","providersAlreadyPresent","withServerTransition","DomSanitizer","__ngConditionalFactory__","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","bypassSecurityTrustHtml","bypassSanitizationTrustHtml","trustedHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","bypassSanitizationTrustStyle","trustedStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","bypassSanitizationTrustScript","trustedScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","bypassSanitizationTrustUrl","trustedUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","ɵbypassSanitizationTrustResourceUrl","HydrationFeatureKind","NoHttpTransferCache","HttpTransferCacheOptions","I18nSupport","EventReplay","provideClientHydration","featuresKind","hasHttpTransferCacheOptions","ɵkind","ɵwithDomHydration","ɵwithHttpTransferCache","AnimationMetadataType","State","Transition","Sequence","Group","Animate","Keyframes","Style","Trigger","Reference","AnimateChild","AnimateRef","Query","Stagger","AUTO_STYLE","trigger","definitions","animate","timings","state","transition","stateChangeExpr","expr","NoopAnimationPlayer","duration","delay","_onDoneFns","_onStartFns","_onDestroyFns","_originalOnDoneFns","_originalOnStartFns","_started","_finished","_position","parentPlayer","totalTime","_onFinish","onStart","onDone","hasStarted","play","_onStart","triggerMicrotask","pause","restart","finish","setPosition","position","getPosition","triggerCallback","phaseName","methods","AnimationGroupPlayer","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","time","p","timeAtPosition","min","longestPlayer","longestSoFar","beforeDestroy","invalidTimingValue","optimizeGroupPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","normalizeStyleValue","animationFailed","listenOnPlayer","copyAnimationEvent","makeAnimationEvent","triggerName","fromState","toState","disabled","_data","getOrSetDefaultValue","parseTimelineCommand","command","separatorPos","documentElement","getParentElement","_CACHED_BODY","_IS_WEBKIT","containsElement","elm1","elm2","invokeQuery","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","query","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","AnimationStyleNormalizer","ONE_SECOND","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","unit","resolveTiming","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","PARAM_REGEX","extractStyleParams","exec","lastIndex","interpolateParams","original","str","varName","localVal","invalidParamValue","DASH_CASE_REGEXP","m","visitDslNode","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","getComputedStyle","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","ANY_STATE","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","makeLambdaFromStates","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","driver","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","stateDef","n","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","invalidState","matchers","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","alias","invalidTransitionAlias","invalidExpression","separator","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","ast","dynamic","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","pow","round","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","elm","userParams","defaults","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","baseEvent","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","entry","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","d1","TransitionAnimationEngine","onRemovalComplete","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","details","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","contains","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","_queueEvent","cloakElement","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","disable","process","eventPhase","SpecialCasedStyles","initialStylesByElement","_element","_startStyles","_endStyles","_state","initialStyles","_initialStyles","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_initialized","currentSnapshot","_duration","_delay","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","onFinish","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","cancel","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","DISABLE_ANIMATIONS_FLAG","BaseAnimationRenderer","ɵtype","AnimationRenderer","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","scheduleListenerCallback","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","cache","onRendererDestroy","animationTriggers","_scheduleCountTask","animationCallbacksBuffer","InjectableAnimationEngine","ɵAnimationEngine","i1","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","instantiateRendererFactory","ɵAnimationRendererFactory","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","BrowserAnimationsModule","withConfig","forkJoin","forkJoinInternal","completed","emitted","BaseControlValueAccessor","_renderer","_elementRef","onChange","onTouched","registerOnTouched","registerOnChange","setDisabledState","isDisabled","BuiltInControlValueAccessor","ɵBuiltInControlValueAccessor_BaseFactory","ɵɵgetInheritedFactory","ownConstructor","ownFactory","objectPrototype","NG_VALUE_ACCESSOR","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","test","writeValue","_handleInput","_compositionStart","_compositionEnd","$event","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","minValidator","actual","maxValidator","requiredValidator","requiredTrue","requiredTrueValidator","email","emailValidator","minLength","minLengthValidator","minlength","requiredLength","actualLength","maxLength","maxLengthValidator","maxlength","pattern","patternValidator","nullValidator","regex","regexStr","requiredPattern","actualValue","compose","validators","composeAsync","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","validator","normalizeValidators","isValidatorFn","validate","c","presentValidators","composeValidators","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pristine","touched","untouched","statusChanges","valueChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","isTouched","_touched","isUntouched","isPristine","_pristine","isValid","_status","isInvalid","isPending","isSubmitted","_submitted","submitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","ControlEvent","ValueChangeEvent","PristineChangeEvent","TouchedChangeEvent","StatusChangeEvent","FormSubmittedEvent","FormResetEvent","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","asyncValidators","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","statusReactive","pristineReactive","touchedReactive","_events","events","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","updateOn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","changed","sourceControl","onlySelf","emitEvent","markAllAsTouched","_forEachChild","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","enable","updateValueAndValidity","setParent","getRawValue","_setInitialStatus","shouldHaveEmitted","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","changedControl","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","newPristine","_registerOnCollectionChange","_setUpdateStrategy","coerceToValidator","coerceToAsyncValidator","FormGroup","controls","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","assertAllValuesPresent","isGroup","assertControlPresent","patchValue","_reduceChildren","acc","_syncPendingControls","subtreeUpdated","updated","_reduceValue","initValue","CALL_SET_DISABLED_STATE","setDisabledStateDefault","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","syncPendingControls","form","formDirectiveProvider$1","NgForm","resolvedPromise$1","submittedReactive","_directives","ngSubmit","_findContainer","getControl","addFormGroup","group","removeFormGroup","getFormGroup","updateModel","onSubmit","onReset","resetForm","removeListItem","isFormControlState","formState","FormControl","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","formControlBinding$1","NgModel","resolvedPromise","valueAccessors","_changeDetectorRef","_registered","selectValueAccessor","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","viewModel","model","_isStandalone","_setUpStandalone","_checkParentType","disabledValue","controlPath","ɵNgNoValidate","formDirectiveProvider","FormGroupDirective","hasV8BreakIterator","_submittedReactive","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","ɵInternalFormsSharedModule","FormsModule","Intl","v8BreakIterator","supportedInputTypes","Platform","_platformId","isBrowser","EDGE","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","candidateInputTypes","getSupportedInputTypes","featureTestInput","supportsPassiveEvents","shadowDomIsSupported","normalizePassiveListenerOptions","supportsPassiveEventListeners","capture","_getEventTarget","composedPath","Action","work","AsyncAction","recycleAsyncId","requestAsyncId","setInterval","clearInterval","_execute","errorValue","errored","actions","Scheduler","SchedulerAction","now","Date","AsyncScheduler","DebounceTimeOperator","dueTime","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","SkipOperator","SkipSubscriber","DistinctUntilChangedOperator","compare","keySelector","DistinctUntilChangedSubscriber","y","takeUntil","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","coerceBooleanProperty","coerceArray","coerceElement","elementOrRef","OuterSubscriber","outerValue","outerIndex","innerIndex","innerSub","InnerSubscriber","subscribeToResult","outerSubscriber","CombineLatestOperator","CombineLatestSubscriber","observables","toRespond","unused","_outerValue","_tryResultSelector","mergeAll","concatAll","startWith","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_platform","_nonce","_matchMedia","matchMedia","noopMatchMedia","createEmptyStyleRule","sheet","insertRule","media","addListener","removeListener","BreakpointObserver","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","stateObservable","combineLatest","debounceTime","breakpointStates","breakpoints","output","a1","a2","isFakeMousedownFromScreenReader","buttons","isFakeTouchstartFromScreenReader","touch","touches","changedTouches","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","modalityEventListenerOptions","passive","InputModalityDetector","mostRecentModality","_modality","_mostRecentTarget","_lastTouchMs","_onKeydown","_options","keyCode","_onMousedown","_onTouchstart","modalityDetected","modalityChanged","distinctUntilChanged","FocusMonitorDetectionMode","IMMEDIATE","EVENTUAL","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_origin","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","monitor","checkChildren","rootNode","_getShadowRoot","_supportsShadowDom","createShadowRoot","getRootNode","ShadowRoot","_getDocument","cachedInfo","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","activeElement","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","focus","_info","_getWindow","defaultView","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","_isLastInteractionFromInputLabel","toggle","isFromInteraction","_originTimeoutId","relatedTarget","_emitOrigin","rootNodeFocusListeners","modality","mostRecentTarget","labels","HighContrastMode","BLACK_ON_WHITE","WHITE_ON_BLACK","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","backgroundColor","documentWindow","computedStyle","computedColor","bodyClasses","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","Directionality","_resolveDirectionality","rawValue","language","BidiModule","_c5","_c6","MATERIAL_SANITY_CHECKS","MATERIAL_SANITY_CHECKS_FACTORY","MatCommonModule","highContrastModeDetector","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_isTestEnvironment","__karma__","jasmine","jest","Mocha","_ErrorStateTracker","_defaultMatcher","ngControl","_parentFormGroup","_parentForm","_stateChanges","errorState","updateErrorState","oldState","matcher","newState","isErrorState","ErrorStateMatcher","RippleState","FADING_IN","VISIBLE","FADING_OUT","HIDDEN","RippleRef","_animationForciblyDisabledThroughCss","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","_delegateEventHandler","handlers","handleEvent","addHandler","handlersForEvent","handlersForElement","removeHandler","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","RippleRenderer","_eventManager","elementOrElementRef","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","_containerElement","fadeInRipple","containerRect","_containerRect","getBoundingClientRect","animationConfig","centered","left","width","top","height","radius","distanceToFurthestCorner","rect","distX","right","distY","bottom","sqrt","offsetX","offsetY","ripple","color","transitionDuration","computedStyles","userTransitionDuration","animationForciblyDisabledThroughCss","transitionProperty","rippleRef","persistent","_mostRecentTransientRipple","eventListeners","onTransitionEnd","fallbackTimer","_finishRippleTransition","onTransitionCancel","_destroyRipple","rippleEl","opacity","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","clientX","clientY","rippleConfig","terminateOnPointerUp","MAT_RIPPLE_GLOBAL_OPTIONS","MatRipple","_disabled","_setupTriggerEventsIfEnabled","_trigger","_animationMode","_isInitialized","_globalOptions","_rippleRenderer","launch","configOrX","i1$1","unbounded","MatRippleModule","_MatInternalFormField","labelPosition","MatButtonModule","_c0","_c1","_c2","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","disabledInteractive","TransitionCheckState","Init","Checked","Unchecked","Indeterminate","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","MatCheckboxChange","nextUniqueId","_inputElement","_createChangeEvent","isChecked","checked","_getAnimationTargetElement","inputId","_uniqueId","tabIndex","_animationClasses","uncheckedToChecked","uncheckedToIndeterminate","checkedToUnchecked","checkedToIndeterminate","indeterminateToChecked","indeterminateToUnchecked","ariaLabel","ariaLabelledby","indeterminateChange","_onTouched","_currentAnimationClass","_currentCheckState","_controlValueAccessorChangeFn","_validatorChangeFn","_checked","_indeterminate","_syncIndeterminate","indeterminate","_transitionCheckState","_isRippleDisabled","disableRipple","_onLabelTextChange","_getAnimationClassForCheckStateTransition","animationClass","_emitChangeEvent","_handleInputClick","_onInteractionEvent","stopPropagation","nativeCheckbox","_onInputClick","_onTouchTargetClick","_preventBubblingFromLabel","_labelElement","_t","ariaDescribedby","_r1","ɵɵnamespaceHTML","namespaceHTMLInternal","checkbox_r2","MatCheckboxModule","queue","QueueScheduler","QueueAction","throwError","dispatch","Notification","kind","do","accept","createNext","undefinedValueNotification","createError","createComplete","completeNotification","ObserveOnSubscriber","notification","scheduleMessage","ObserveOnMessage","ReplaySubject","bufferSize","windowTime","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","eventsCount","spliceCount","SingleBoxSharedResizeObserver","_box","_resizeSubject","_elementObservables","ResizeObserver","_resizeObserver","box","unobserve","shareReplay","configOrBufferSize","refCount","shareReplayOperator","useRefCount","isComplete","SharedResizeObserver","_observers","MutationObserverFactory","MutationObserver","ObserversModule","_c3","_c4","_c7","_c8","_c9","MatFormField_ng_template_0_Conditional_0_Conditional_2_Template","MatFormField_ng_template_0_Conditional_0_Template","ctx_r1","_shouldLabelFloat","_hasOutline","_labelId","_control","disableAutomaticLabeling","hideRequiredMarker","MatFormField_ng_template_0_Template","_hasFloatingLabel","MatFormField_Conditional_4_Template","MatFormField_Conditional_6_Conditional_1_ng_template_0_Template","MatFormField_Conditional_6_Conditional_1_Template","MatFormField_Conditional_6_Template","_forceDisplayInfixLabel","MatFormField_Conditional_7_Template","MatFormField_Conditional_8_Template","MatFormField_Conditional_10_ng_template_0_Template","MatFormField_Conditional_10_Template","MatFormField_Conditional_12_Template","MatFormField_Conditional_13_Template","MatFormField_Conditional_14_Template","MatFormField_Case_16_Template","_subscriptAnimationState","MatFormField_Case_17_Conditional_1_Template","_hintLabelId","hintLabel","MatFormField_Case_17_Template","MatLabel","MAT_ERROR","nextUniqueId$1","MatHint","align","MAT_PREFIX","MAT_SUFFIX","FLOATING_LABEL_PARENT","MatFormFieldFloatingLabel","floating","_floating","monitorResize","_handleResize","_monitorResize","_subscribeToResize","_resizeSubscription","getWidth","estimateScrollWidth","offsetParent","scrollWidth","cloneNode","_handleLabelResized","ACTIVATE_CLASS","DEACTIVATING_CLASS","MatFormFieldLineRipple","_handleTransitionEnd","isDeactivating","activate","deactivate","MatFormFieldNotchedOutline","open","label","_setNotchWidth","labelWidth","_notch","matFormFieldAnimations","transitionMessages","MatFormFieldControl","MAT_FORM_FIELD","MAT_FORM_FIELD_DEFAULT_OPTIONS","MatFormField","_hideRequiredMarker","floatLabel","_floatLabel","_defaults","appearance","_appearance","_needsOutlineLabelOffsetUpdate","subscriptSizing","_subscriptSizing","_hintLabel","_processHints","_explicitFormFieldControl","_formFieldControl","_unusedNgZone","_dir","_unusedDocument","_labelChild","_hasIconPrefix","_hasTextPrefix","_hasIconSuffix","_hasTextSuffix","_isFocused","_previousControl","getLabelId","_updateFocusState","_assertFormFieldControl","_initializeSubscript","_initializePrefixAndSuffix","_initializeOutlineLabelOffsetSubscriptions","_initializeControl","_valueChanges","getConnectedOverlayOrigin","_textField","_animateAndLockLabel","previousControl","classPrefix","controlType","stateChanges","_syncDescribedByIds","_checkPrefixAndSuffixTypes","_prefixChildren","_isText","_suffixChildren","_hintChildren","_errorChildren","_validateHints","focused","_lineRipple","afterRender","_updateOutlineLabelOffset","_shouldAlwaysFloat","shouldLabelFloat","_shouldForward","_getDisplayedMessages","_refreshOutlineNotchWidth","_floatingLabel","_notchedOutline","ids","userAriaDescribedBy","startHint","hint","endHint","setDescribedByIds","floatingLabel","_iconPrefixContainer","_textPrefixContainer","_isAttachedToDom","iconPrefixContainer","textPrefixContainer","iconSuffixContainer","_iconSuffixContainer","textSuffixContainer","_textSuffixContainer","iconPrefixContainerWidth","textPrefixContainerWidth","iconSuffixContainerWidth","textSuffixContainerWidth","i2","ɵɵqueryAdvance","indexOffset","autofilled","onContainerClick","tmp_16_0","MatFormFieldModule","CatchOperator","CatchSubscriber","caught","err2","FinallyOperator","FinallySubscriber","RefCountOperator","connectable","_refCount","refCounter","RefCountSubscriber","connection","connect","sharedConnection","_connection","ConnectableObservable","subjectFactory","_isComplete","getSubject","_subject","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connectableProto","writable","MulticastOperator","shareSubjectFactory","ttWindow","getMatIconNameNotFoundError","iconName","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","addSvgIconResolver","resolver","cleanLiteral","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNames","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","cachedIcon","cloneSvg","_loadSvgIconFromConfig","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","catchError","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","div","viewBox","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","finalize","share","multicast","subjectOrSubjectFactory","configNamespace","svgElement","isSafeUrlWithOptions","MAT_ICON_DEFAULT_OPTIONS","MAT_ICON_LOCATION","MAT_ICON_LOCATION_FACTORY","_location","getPathname","search","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_color","_defaultColor","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_iconRegistry","ariaHidden","inline","_previousFontSetClass","_currentIconFetch","_splitIconName","cachedElements","_elementsWithExternalReferences","newPath","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","fontSetClasses","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","MatIconModule","listenerOptions","AutofillMonitor","_monitoredElements","cssClass","animationName","isAutofilled","unlisten","TextFieldModule","MAT_INPUT_VALUE_ACCESSOR","MAT_INPUT_INVALID_TYPES","MatInput","_id","_uid","_required","_type","_validateType","_isTextarea","_ensureWheelDefaultBehavior","errorStateMatcher","_errorStateTracker","_inputValueAccessor","readonly","_readonly","parentForm","parentFormGroup","defaultErrorStateMatcher","inputValueAccessor","_autofillMonitor","_formField","_webkitBlinkWheelListenerAttached","_neverEmptyInputTypes","_iOSKeyupListener","selectionStart","selectionEnd","setSelectionRange","_webkitBlinkWheelListener","_previousNativeValue","_isServer","_isNativeSelect","_isInFormField","multiple","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","isFocused","_onInput","placeholder","_getPlaceholder","_previousPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","selectElement","firstOption","_isInlineSelect","i3","i4","MatInputModule","MatToolbarModule","UniqueSelectionDispatcher","_listeners","registered","MatRadioChange","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MAT_RADIO_GROUP","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_DEFAULT_OPTIONS_FACTORY","_name","_updateRadioButtonNames","_labelPosition","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_selected","selected","_disabledInteractive","_changeDetector","_buttonChanges","_radios","radio","_touch","_markForCheck","MatRadioButton","radioGroup","_radioDispatcher","_setDisabled","_defaultOptions","_focusMonitor","animationMode","_removeUniqueSelectionListener","_noopAnimations","_updateTabIndex","focusOrigin","_onInputInteraction","groupValueChanged","_previousTabIndex","blur","_rippleTrigger","MatRadioModule","SUPPORT","UA","defaultAria","galleryLabel","viewerLabel","ChevronIconComponent","slide","ThumbsComponent_button_0_div_1_Template","arrowTemplate","item_r5","video","ThumbsComponent_li_4_ng_container_2_ng_container_2_div_1_Template","errorTemplate","_r8","onLoadChange","ThumbsComponent_li_4_ng_container_2_ng_container_2_Template","thumbSrc","_thumbFailed","ThumbsComponent_li_4_ng_template_3_ng_container_0_Template","thumbTemplate","i_r6","ctx_r3","_r3","thumbClick","ctx_r6","thumbHover","ThumbsComponent_li_4_ng_container_2_Template","ThumbsComponent_li_4_ng_template_3_Template","customThumbTemplate_r10","_r11","ThumbsComponent_button_5_div_1_Template","ThumbsComponent","orientation","hostOffsetAxis","vertical","elRef","offsetHeight","offsetWidth","scrollKey","thumbsEmpty","thumbsRef","items","showStartArrow","showEndArrow","onArrowsObserved","firstTarget","setObservedArrows","arrows","observeArrows","unobserveArrows","centerThumbIfNeeded","direction","arrowSlideByLength","thumbList","thumbListRef","thumbListOffsetAxis","scrollHeight","scroll","nextItemRef","nextItemEl","offsetLeft","offsetTop","itemOffset","itemOffsetAxis","hostScrollAxis","thumbListScroll","select","autoScroll","emitter","success","totalScrollDelta","scrollBehavior","shiftByDelta","scrollId","totalDistance","log10","currentScroll","suggestedScroll","ceil","frameScroll","sign","arrowObserver","IntersectionObserver","threshold","firstThumb","lastThumb","isRtl","intersectionRatio","disconnect","ThumbsComponent_button_0_Template","ThumbsComponent_li_3_Template","ThumbsComponent_li_4_Template","ThumbsComponent_button_5_Template","MediaDirective","hostRef","mediaLoadError","onLoad","ev","nativeEl","SafePipe","CounterComponent","itemQuantity","selectByDelta","moveByItems","ViewerComponent_button_0_chevron_icon_1_Template","source_r6","srcset","ViewerComponent_li_4_ng_container_2_picture_1_source_1_Template","item_r4","pictureSources","objectFit","ViewerComponent_li_4_ng_container_2_picture_1_Template","ViewerComponent_li_4_ng_container_2_video_2_Template","ViewerComponent_li_4_ng_container_2_iframe_3_Template","isYoutube","errorText","ViewerComponent_li_4_ng_container_3_div_1_Template","ViewerComponent_li_4_ng_template_5_ng_container_0_Template","itemTemplate","onImageClick","onItemErrored","i_r5","onTab","ViewerComponent_li_4_ng_container_2_Template","ViewerComponent_li_4_ng_container_3_Template","ViewerComponent_li_4_ng_template_5_Template","isItemFringe","customTemplate_r7","itemFailedToLoad","description","ViewerComponent_button_5_chevron_icon_1_Template","counterIndex","counterOrientation","_r9","descriptionClick","ViewerComponent_div_8_div_1_Template","counter","passiveEventListenerOpts","ViewerComponent","noAnimation","itemListRef","floor","showArrow","showPrevArrow","reallyLoop","showNextArrow","_hostRef","_destroyRef","itemClick","selection","fringeCount","getFringeCount","_itemWidth","pointerDeltaX","sliding","repositionOnFringe","itemsRef","isIntersecting","updateDimensions","visibleItems","loop","observeFringes","displayedItems","getItemsToBeDisplayed","center","handleResizes","mouseGestures","handleMouseSlides","touchGestures","handleTouchSlides","fringeObserver","shortPath","stopCurrentVideo","maxIndex","indexOutOfBounds","loopTo","correctIndexOutOfBounds","nextItemIndex","scrollLeft","showErrors","_failed","mousedown","maxDeltaX","maxDeltaY","onmousedown","onmousemove","onmouseup","movementX","selectBySwipeStats","onclick","ondragstart","horizontal","touchstart","lastTouchmove","ontouchstart","ontouchmove","startTouch","moveTouch","deltaX","deltaY","ontouchend","desiredIndex","distance","indexDelta","multiplier","videoEl","clip","ViewerComponent_button_0_Template","ViewerComponent_li_3_Template","ViewerComponent_li_4_Template","ViewerComponent_button_5_Template","ViewerComponent_counter_6_Template","ViewerComponent_ng_container_7_Template","ViewerComponent_div_8_Template","contentTemplate","ɵɵpureFunction1","descriptions","ctx_r0","aria","_r2","_onThumbClick","thumbsOrientation","thumbsArrows","thumbsArrowSlideByLength","thumbsAutoScroll","thumbsScrollBehavior","thumbsArrowTemplate","thumbErrorTemplate","GalleryComponent","loading","thumbs","_galleryColumn","_thumbsOrientationFlag","_viewerElRef","_viewerRef","_thumbsRef","_selectInternal","slideThumbs","GalleryComponent_span_0_Template","GalleryComponent_thumbs_1_Template","switchMap","SwitchMapOperator","SwitchMapSubscriber","DelayOperator","DelaySubscriber","_schedule","scheduleNotification","DelayMessage","galleryConfig","ctx_r2","rtl","DemoWholeConfigComponent_ng_template_108_ng_template_1_div_2_Template","seen_r7","img_r4","naturalHeight","DemoWholeConfigComponent_ng_template_108_ng_container_0_Template","DemoWholeConfigComponent_ng_template_108_ng_template_1_Template","DemoWholeConfigComponent_ng_template_108_ng_template_3_Template","item_r6","videoTemplate_r9","imgTemplate_r8","item_r10","DemoWholeConfigComponent","displayGallery","imageLoadingLatency","mobile","storeGalleryConfig","sessionStorage","setItem","getGalleryConfig","images","defer","observableFactory","delayFor","isDate","onConfigChange","reloadGallery","getInputValue","getItem","DemoWholeConfigComponent_gallery_105_Template","DemoWholeConfigComponent_ng_template_106_Template","DemoWholeConfigComponent_ng_template_108_Template","DemoWholeConfigComponent_ng_template_110_Template","DemoWholeConfigComponent_ng_template_112_Template","DemoWholeConfigComponent_ng_template_114_Template","DemoWholeConfigComponent_ng_template_116_Template","HeaderComponent","stackblitz","ShowcaseComponent","heading","subheading","ShowcaseComponent_a_6_Template","item_r2","selectedItem","DemoCustomTemplatesComponent_ng_template_1_img_2_Template","DemoCustomTemplatesComponent_ng_template_1_video_3_Template","video_r4","DemoCustomTemplatesComponent","tablet","DemoCustomTemplatesComponent_ng_template_1_Template","DemoCustomTemplatesComponent_ng_template_3_Template","customItem_r5","customArrow_r6","AppComponent","installScript","componentCode","componentTemplateCode","extendedImages","erroredImages","videos","mobileMatcher","tabletMatcher","onchange","materialModules","AppModule","__NgCli_bootstrap_1"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/core/fesm2022/primitives/signals.mjs","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/@angular/core/fesm2022/core.mjs","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/@angular/common/fesm2022/common.mjs","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/@angular/common/fesm2022/http.mjs","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","./node_modules/@angular/animations/fesm2022/animations.mjs","./node_modules/@angular/animations/fesm2022/browser.mjs","./node_modules/@angular/platform-browser/fesm2022/animations.mjs","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/@angular/forms/fesm2022/forms.mjs","./node_modules/@angular/cdk/fesm2022/platform.mjs","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/@angular/cdk/fesm2022/coercion.mjs","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/keycodes.mjs","./node_modules/@angular/cdk/fesm2022/bidi.mjs","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/material/fesm2022/button.mjs","./node_modules/@angular/material/fesm2022/checkbox.mjs","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/@angular/cdk/fesm2022/observers/private.mjs","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/material/fesm2022/form-field.mjs","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/@angular/material/fesm2022/icon.mjs","./node_modules/@angular/cdk/fesm2022/text-field.mjs","./node_modules/@angular/material/fesm2022/input.mjs","./node_modules/@angular/material/fesm2022/toolbar.mjs","./node_modules/@angular/cdk/fesm2022/collections.mjs","./node_modules/@angular/material/fesm2022/radio.mjs","./libs/gallery/src/lib/core/support.ts","./libs/gallery/src/lib/core/aria.ts","./libs/gallery/src/lib/components/icons/chevron/chevron-icon.component.ts","./libs/gallery/src/lib/components/icons/chevron/chevron-icon.component.html","./libs/gallery/src/lib/components/thumbs/thumbs.component.html","./libs/gallery/src/lib/components/thumbs/thumbs.component.ts","./libs/gallery/src/lib/directives/media.directive.ts","./libs/gallery/src/lib/pipes/safe.pipe.ts","./libs/gallery/src/lib/components/counter/counter.component.ts","./libs/gallery/src/lib/components/viewer/viewer.component.html","./libs/gallery/src/lib/components/viewer/viewer.component.ts","./libs/gallery/src/lib/components/gallery/gallery.component.html","./libs/gallery/src/lib/components/gallery/gallery.component.ts","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./apps/demo/src/app/components/demo-whole-config/demo-whole-config.component.html","./apps/demo/src/app/components/demo-whole-config/demo-whole-config.component.ts","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./apps/demo/src/app/components/header/header.component.ts","./apps/demo/src/app/components/header/header.component.html","./apps/demo/src/app/components/showcase/showcase.component.html","./apps/demo/src/app/components/showcase/showcase.component.ts","./apps/demo/src/app/components/demo-custom-templates/demo-custom-templates.component.html","./apps/demo/src/app/components/demo-custom-templates/demo-custom-templates.component.ts","./apps/demo/src/app/app.component.ts","./apps/demo/src/app/app.component.html","./apps/demo/src/app/app.module.ts","./apps/demo/src/main.ts"],"sourcesContent":["/**\n * @license Angular v18.2.9\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * The default equality function used for `signal` and `computed`, which uses referential equality.\n */\nfunction defaultEquals(a, b) {\n return Object.is(a, b);\n}\n\n/**\n * The currently active consumer `ReactiveNode`, if running code in a reactive context.\n *\n * Change this via `setActiveConsumer`.\n */\nlet activeConsumer = null;\nlet inNotificationPhase = false;\n/**\n * Global epoch counter. Incremented whenever a source signal is set.\n */\nlet epoch = 1;\n/**\n * Symbol used to tell `Signal`s apart from other functions.\n *\n * This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.\n */\nconst SIGNAL = /* @__PURE__ */ Symbol('SIGNAL');\nfunction setActiveConsumer(consumer) {\n const prev = activeConsumer;\n activeConsumer = consumer;\n return prev;\n}\nfunction getActiveConsumer() {\n return activeConsumer;\n}\nfunction isInNotificationPhase() {\n return inNotificationPhase;\n}\nfunction isReactive(value) {\n return value[SIGNAL] !== undefined;\n}\nconst REACTIVE_NODE = {\n version: 0,\n lastCleanEpoch: 0,\n dirty: false,\n producerNode: undefined,\n producerLastReadVersion: undefined,\n producerIndexOfThis: undefined,\n nextProducerIndex: 0,\n liveConsumerNode: undefined,\n liveConsumerIndexOfThis: undefined,\n consumerAllowSignalWrites: false,\n consumerIsAlwaysLive: false,\n producerMustRecompute: () => false,\n producerRecomputeValue: () => { },\n consumerMarkedDirty: () => { },\n consumerOnSignalRead: () => { },\n};\n/**\n * Called by implementations when a producer's signal is read.\n */\nfunction producerAccessed(node) {\n if (inNotificationPhase) {\n throw new Error(typeof ngDevMode !== 'undefined' && ngDevMode\n ? `Assertion error: signal read during notification phase`\n : '');\n }\n if (activeConsumer === null) {\n // Accessed outside of a reactive context, so nothing to record.\n return;\n }\n activeConsumer.consumerOnSignalRead(node);\n // This producer is the `idx`th dependency of `activeConsumer`.\n const idx = activeConsumer.nextProducerIndex++;\n assertConsumerNode(activeConsumer);\n if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) {\n // There's been a change in producers since the last execution of `activeConsumer`.\n // `activeConsumer.producerNode[idx]` holds a stale dependency which will be be removed and\n // replaced with `this`.\n //\n // If `activeConsumer` isn't live, then this is a no-op, since we can replace the producer in\n // `activeConsumer.producerNode` directly. However, if `activeConsumer` is live, then we need\n // to remove it from the stale producer's `liveConsumer`s.\n if (consumerIsLive(activeConsumer)) {\n const staleProducer = activeConsumer.producerNode[idx];\n producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]);\n // At this point, the only record of `staleProducer` is the reference at\n // `activeConsumer.producerNode[idx]` which will be overwritten below.\n }\n }\n if (activeConsumer.producerNode[idx] !== node) {\n // We're a new dependency of the consumer (at `idx`).\n activeConsumer.producerNode[idx] = node;\n // If the active consumer is live, then add it as a live consumer. If not, then use 0 as a\n // placeholder value.\n activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer)\n ? producerAddLiveConsumer(node, activeConsumer, idx)\n : 0;\n }\n activeConsumer.producerLastReadVersion[idx] = node.version;\n}\n/**\n * Increment the global epoch counter.\n *\n * Called by source producers (that is, not computeds) whenever their values change.\n */\nfunction producerIncrementEpoch() {\n epoch++;\n}\n/**\n * Ensure this producer's `version` is up-to-date.\n */\nfunction producerUpdateValueVersion(node) {\n if (consumerIsLive(node) && !node.dirty) {\n // A live consumer will be marked dirty by producers, so a clean state means that its version\n // is guaranteed to be up-to-date.\n return;\n }\n if (!node.dirty && node.lastCleanEpoch === epoch) {\n // Even non-live consumers can skip polling if they previously found themselves to be clean at\n // the current epoch, since their dependencies could not possibly have changed (such a change\n // would've increased the epoch).\n return;\n }\n if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) {\n // None of our producers report a change since the last time they were read, so no\n // recomputation of our value is necessary, and we can consider ourselves clean.\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n return;\n }\n node.producerRecomputeValue(node);\n // After recomputing the value, we're no longer dirty.\n node.dirty = false;\n node.lastCleanEpoch = epoch;\n}\n/**\n * Propagate a dirty notification to live consumers of this producer.\n */\nfunction producerNotifyConsumers(node) {\n if (node.liveConsumerNode === undefined) {\n return;\n }\n // Prevent signal reads when we're updating the graph\n const prev = inNotificationPhase;\n inNotificationPhase = true;\n try {\n for (const consumer of node.liveConsumerNode) {\n if (!consumer.dirty) {\n consumerMarkDirty(consumer);\n }\n }\n }\n finally {\n inNotificationPhase = prev;\n }\n}\n/**\n * Whether this `ReactiveNode` in its producer capacity is currently allowed to initiate updates,\n * based on the current consumer context.\n */\nfunction producerUpdatesAllowed() {\n return activeConsumer?.consumerAllowSignalWrites !== false;\n}\nfunction consumerMarkDirty(node) {\n node.dirty = true;\n producerNotifyConsumers(node);\n node.consumerMarkedDirty?.(node);\n}\n/**\n * Prepare this consumer to run a computation in its reactive context.\n *\n * Must be called by subclasses which represent reactive computations, before those computations\n * begin.\n */\nfunction consumerBeforeComputation(node) {\n node && (node.nextProducerIndex = 0);\n return setActiveConsumer(node);\n}\n/**\n * Finalize this consumer's state after a reactive computation has run.\n *\n * Must be called by subclasses which represent reactive computations, after those computations\n * have finished.\n */\nfunction consumerAfterComputation(node, prevConsumer) {\n setActiveConsumer(prevConsumer);\n if (!node ||\n node.producerNode === undefined ||\n node.producerIndexOfThis === undefined ||\n node.producerLastReadVersion === undefined) {\n return;\n }\n if (consumerIsLive(node)) {\n // For live consumers, we need to remove the producer -> consumer edge for any stale producers\n // which weren't dependencies after the recomputation.\n for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Truncate the producer tracking arrays.\n // Perf note: this is essentially truncating the length to `node.nextProducerIndex`, but\n // benchmarking has shown that individual pop operations are faster.\n while (node.producerNode.length > node.nextProducerIndex) {\n node.producerNode.pop();\n node.producerLastReadVersion.pop();\n node.producerIndexOfThis.pop();\n }\n}\n/**\n * Determine whether this consumer has any dependencies which have changed since the last time\n * they were read.\n */\nfunction consumerPollProducersForChange(node) {\n assertConsumerNode(node);\n // Poll producers for change.\n for (let i = 0; i < node.producerNode.length; i++) {\n const producer = node.producerNode[i];\n const seenVersion = node.producerLastReadVersion[i];\n // First check the versions. A mismatch means that the producer's value is known to have\n // changed since the last time we read it.\n if (seenVersion !== producer.version) {\n return true;\n }\n // The producer's version is the same as the last time we read it, but it might itself be\n // stale. Force the producer to recompute its version (calculating a new value if necessary).\n producerUpdateValueVersion(producer);\n // Now when we do this check, `producer.version` is guaranteed to be up to date, so if the\n // versions still match then it has not changed since the last time we read it.\n if (seenVersion !== producer.version) {\n return true;\n }\n }\n return false;\n}\n/**\n * Disconnect this consumer from the graph.\n */\nfunction consumerDestroy(node) {\n assertConsumerNode(node);\n if (consumerIsLive(node)) {\n // Drop all connections from the graph to this node.\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Truncate all the arrays to drop all connection from this node to the graph.\n node.producerNode.length =\n node.producerLastReadVersion.length =\n node.producerIndexOfThis.length =\n 0;\n if (node.liveConsumerNode) {\n node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0;\n }\n}\n/**\n * Add `consumer` as a live consumer of this node.\n *\n * Note that this operation is potentially transitive. If this node becomes live, then it becomes\n * a live consumer of all of its current producers.\n */\nfunction producerAddLiveConsumer(node, consumer, indexOfThis) {\n assertProducerNode(node);\n if (node.liveConsumerNode.length === 0 && isConsumerNode(node)) {\n // When going from 0 to 1 live consumers, we become a live consumer to our producers.\n for (let i = 0; i < node.producerNode.length; i++) {\n node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i);\n }\n }\n node.liveConsumerIndexOfThis.push(indexOfThis);\n return node.liveConsumerNode.push(consumer) - 1;\n}\n/**\n * Remove the live consumer at `idx`.\n */\nfunction producerRemoveLiveConsumerAtIndex(node, idx) {\n assertProducerNode(node);\n if (typeof ngDevMode !== 'undefined' && ngDevMode && idx >= node.liveConsumerNode.length) {\n throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`);\n }\n if (node.liveConsumerNode.length === 1 && isConsumerNode(node)) {\n // When removing the last live consumer, we will no longer be live. We need to remove\n // ourselves from our producers' tracking (which may cause consumer-producers to lose\n // liveness as well).\n for (let i = 0; i < node.producerNode.length; i++) {\n producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]);\n }\n }\n // Move the last value of `liveConsumers` into `idx`. Note that if there's only a single\n // live consumer, this is a no-op.\n const lastIdx = node.liveConsumerNode.length - 1;\n node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx];\n node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx];\n // Truncate the array.\n node.liveConsumerNode.length--;\n node.liveConsumerIndexOfThis.length--;\n // If the index is still valid, then we need to fix the index pointer from the producer to this\n // consumer, and update it from `lastIdx` to `idx` (accounting for the move above).\n if (idx < node.liveConsumerNode.length) {\n const idxProducer = node.liveConsumerIndexOfThis[idx];\n const consumer = node.liveConsumerNode[idx];\n assertConsumerNode(consumer);\n consumer.producerIndexOfThis[idxProducer] = idx;\n }\n}\nfunction consumerIsLive(node) {\n return node.consumerIsAlwaysLive || (node?.liveConsumerNode?.length ?? 0) > 0;\n}\nfunction assertConsumerNode(node) {\n node.producerNode ??= [];\n node.producerIndexOfThis ??= [];\n node.producerLastReadVersion ??= [];\n}\nfunction assertProducerNode(node) {\n node.liveConsumerNode ??= [];\n node.liveConsumerIndexOfThis ??= [];\n}\nfunction isConsumerNode(node) {\n return node.producerNode !== undefined;\n}\n\n/**\n * Create a computed signal which derives a reactive value from an expression.\n */\nfunction createComputed(computation) {\n const node = Object.create(COMPUTED_NODE);\n node.computation = computation;\n const computed = () => {\n // Check if the value needs updating before returning it.\n producerUpdateValueVersion(node);\n // Record that someone looked at this signal.\n producerAccessed(node);\n if (node.value === ERRORED) {\n throw node.error;\n }\n return node.value;\n };\n computed[SIGNAL] = node;\n return computed;\n}\n/**\n * A dedicated symbol used before a computed value has been calculated for the first time.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst UNSET = /* @__PURE__ */ Symbol('UNSET');\n/**\n * A dedicated symbol used in place of a computed signal value to indicate that a given computation\n * is in progress. Used to detect cycles in computation chains.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst COMPUTING = /* @__PURE__ */ Symbol('COMPUTING');\n/**\n * A dedicated symbol used in place of a computed signal value to indicate that a given computation\n * failed. The thrown error is cached until the computation gets dirty again.\n * Explicitly typed as `any` so we can use it as signal's value.\n */\nconst ERRORED = /* @__PURE__ */ Symbol('ERRORED');\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst COMPUTED_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n value: UNSET,\n dirty: true,\n error: null,\n equal: defaultEquals,\n producerMustRecompute(node) {\n // Force a recomputation if there's no current value, or if the current value is in the\n // process of being calculated (which should throw an error).\n return node.value === UNSET || node.value === COMPUTING;\n },\n producerRecomputeValue(node) {\n if (node.value === COMPUTING) {\n // Our computation somehow led to a cyclic read of itself.\n throw new Error('Detected cycle in computations.');\n }\n const oldValue = node.value;\n node.value = COMPUTING;\n const prevConsumer = consumerBeforeComputation(node);\n let newValue;\n try {\n newValue = node.computation();\n }\n catch (err) {\n newValue = ERRORED;\n node.error = err;\n }\n finally {\n consumerAfterComputation(node, prevConsumer);\n }\n if (oldValue !== UNSET &&\n oldValue !== ERRORED &&\n newValue !== ERRORED &&\n node.equal(oldValue, newValue)) {\n // No change to `valueVersion` - old and new values are\n // semantically equivalent.\n node.value = oldValue;\n return;\n }\n node.value = newValue;\n node.version++;\n },\n };\n})();\n\nfunction defaultThrowError() {\n throw new Error();\n}\nlet throwInvalidWriteToSignalErrorFn = defaultThrowError;\nfunction throwInvalidWriteToSignalError() {\n throwInvalidWriteToSignalErrorFn();\n}\nfunction setThrowInvalidWriteToSignalError(fn) {\n throwInvalidWriteToSignalErrorFn = fn;\n}\n\n/**\n * If set, called after `WritableSignal`s are updated.\n *\n * This hook can be used to achieve various effects, such as running effects synchronously as part\n * of setting a signal.\n */\nlet postSignalSetFn = null;\n/**\n * Create a `Signal` that can be set or updated directly.\n */\nfunction createSignal(initialValue) {\n const node = Object.create(SIGNAL_NODE);\n node.value = initialValue;\n const getter = (() => {\n producerAccessed(node);\n return node.value;\n });\n getter[SIGNAL] = node;\n return getter;\n}\nfunction setPostSignalSetFn(fn) {\n const prev = postSignalSetFn;\n postSignalSetFn = fn;\n return prev;\n}\nfunction signalGetFn() {\n producerAccessed(this);\n return this.value;\n}\nfunction signalSetFn(node, newValue) {\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n if (!node.equal(node.value, newValue)) {\n node.value = newValue;\n signalValueChanged(node);\n }\n}\nfunction signalUpdateFn(node, updater) {\n if (!producerUpdatesAllowed()) {\n throwInvalidWriteToSignalError();\n }\n signalSetFn(node, updater(node.value));\n}\nfunction runPostSignalSetFn() {\n postSignalSetFn?.();\n}\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst SIGNAL_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n equal: defaultEquals,\n value: undefined,\n };\n})();\nfunction signalValueChanged(node) {\n node.version++;\n producerIncrementEpoch();\n producerNotifyConsumers(node);\n postSignalSetFn?.();\n}\n\nfunction createWatch(fn, schedule, allowSignalWrites) {\n const node = Object.create(WATCH_NODE);\n if (allowSignalWrites) {\n node.consumerAllowSignalWrites = true;\n }\n node.fn = fn;\n node.schedule = schedule;\n const registerOnCleanup = (cleanupFn) => {\n node.cleanupFn = cleanupFn;\n };\n function isWatchNodeDestroyed(node) {\n return node.fn === null && node.schedule === null;\n }\n function destroyWatchNode(node) {\n if (!isWatchNodeDestroyed(node)) {\n consumerDestroy(node); // disconnect watcher from the reactive graph\n node.cleanupFn();\n // nullify references to the integration functions to mark node as destroyed\n node.fn = null;\n node.schedule = null;\n node.cleanupFn = NOOP_CLEANUP_FN;\n }\n }\n const run = () => {\n if (node.fn === null) {\n // trying to run a destroyed watch is noop\n return;\n }\n if (isInNotificationPhase()) {\n throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`);\n }\n node.dirty = false;\n if (node.hasRun && !consumerPollProducersForChange(node)) {\n return;\n }\n node.hasRun = true;\n const prevConsumer = consumerBeforeComputation(node);\n try {\n node.cleanupFn();\n node.cleanupFn = NOOP_CLEANUP_FN;\n node.fn(registerOnCleanup);\n }\n finally {\n consumerAfterComputation(node, prevConsumer);\n }\n };\n node.ref = {\n notify: () => consumerMarkDirty(node),\n run,\n cleanup: () => node.cleanupFn(),\n destroy: () => destroyWatchNode(node),\n [SIGNAL]: node,\n };\n return node.ref;\n}\nconst NOOP_CLEANUP_FN = () => { };\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst WATCH_NODE = /* @__PURE__ */ (() => {\n return {\n ...REACTIVE_NODE,\n consumerIsAlwaysLive: true,\n consumerAllowSignalWrites: false,\n consumerMarkedDirty: (node) => {\n if (node.schedule !== null) {\n node.schedule(node.ref);\n }\n },\n hasRun: false,\n cleanupFn: NOOP_CLEANUP_FN,\n };\n})();\n\nfunction setAlternateWeakRefImpl(impl) {\n // TODO: remove this function\n}\n\nexport { REACTIVE_NODE, SIGNAL, SIGNAL_NODE, consumerAfterComputation, consumerBeforeComputation, consumerDestroy, consumerMarkDirty, consumerPollProducersForChange, createComputed, createSignal, createWatch, defaultEquals, getActiveConsumer, isInNotificationPhase, isReactive, producerAccessed, producerIncrementEpoch, producerNotifyConsumers, producerUpdateValueVersion, producerUpdatesAllowed, runPostSignalSetFn, setActiveConsumer, setAlternateWeakRefImpl, setPostSignalSetFn, setThrowInvalidWriteToSignalError, signalSetFn, signalUpdateFn };\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export function identity(x) {\n return x;\n}\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","const EmptyErrorImpl = (() => {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport const EmptyError = EmptyErrorImpl;\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue = null) {\n return (source) => source.lift(new DefaultIfEmptyOperator(defaultValue));\n}\nclass DefaultIfEmptyOperator {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n call(subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n }\n}\nclass DefaultIfEmptySubscriber extends Subscriber {\n constructor(destination, defaultValue) {\n super(destination);\n this.defaultValue = defaultValue;\n this.isEmpty = true;\n }\n _next(value) {\n this.isEmpty = false;\n this.destination.next(value);\n }\n _complete() {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n }\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return (source) => {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nclass ThrowIfEmptyOperator {\n constructor(errorFactory) {\n this.errorFactory = errorFactory;\n }\n call(subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n }\n}\nclass ThrowIfEmptySubscriber extends Subscriber {\n constructor(destination, errorFactory) {\n super(destination);\n this.errorFactory = errorFactory;\n this.hasValue = false;\n }\n _next(value) {\n this.hasValue = true;\n this.destination.next(value);\n }\n _complete() {\n if (!this.hasValue) {\n let err;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n }\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","/**\n * @license Angular v18.2.9\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { SIGNAL_NODE as SIGNAL_NODE$1, signalSetFn as signalSetFn$1, producerAccessed as producerAccessed$1, SIGNAL as SIGNAL$1, getActiveConsumer as getActiveConsumer$1, setActiveConsumer as setActiveConsumer$1, consumerDestroy as consumerDestroy$1, REACTIVE_NODE as REACTIVE_NODE$1, consumerBeforeComputation as consumerBeforeComputation$1, consumerAfterComputation as consumerAfterComputation$1, consumerPollProducersForChange as consumerPollProducersForChange$1, createSignal as createSignal$1, signalUpdateFn as signalUpdateFn$1, createComputed as createComputed$1, setThrowInvalidWriteToSignalError as setThrowInvalidWriteToSignalError$1, createWatch as createWatch$1 } from '@angular/core/primitives/signals';\nexport { SIGNAL as ɵSIGNAL } from '@angular/core/primitives/signals';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { map, first } from 'rxjs/operators';\nimport { Attribute as Attribute$1, EventContract, EventContractContainer, getAppScopedQueuedEventInfos, clearAppScopedEarlyEventContract, EventDispatcher, registerDispatcher, isEarlyEventType, isCaptureEventType } from '@angular/core/primitives/event-dispatch';\n\n/**\n * Base URL for the error details page.\n *\n * Keep this constant in sync across:\n * - packages/compiler-cli/src/ngtsc/diagnostics/src/error_details_base_url.ts\n * - packages/core/src/error_details_base_url.ts\n */\nconst ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.dev/errors';\n/**\n * URL for the XSS security documentation.\n */\nconst XSS_SECURITY_URL = 'https://g.co/ng/security#xss';\n\n/**\n * Class that represents a runtime error.\n * Formats and outputs the error message in a consistent way.\n *\n * Example:\n * ```\n * throw new RuntimeError(\n * RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED,\n * ngDevMode && 'Injector has already been destroyed.');\n * ```\n *\n * Note: the `message` argument contains a descriptive error message as a string in development\n * mode (when the `ngDevMode` is defined). In production mode (after tree-shaking pass), the\n * `message` argument becomes `false`, thus we account for it in the typings and the runtime\n * logic.\n */\nclass RuntimeError extends Error {\n constructor(code, message) {\n super(formatRuntimeError(code, message));\n this.code = code;\n }\n}\n/**\n * Called to format a runtime error.\n * See additional info on the `message` argument type in the `RuntimeError` class description.\n */\nfunction formatRuntimeError(code, message) {\n // Error code might be a negative number, which is a special marker that instructs the logic to\n // generate a link to the error details page on angular.io.\n // We also prepend `0` to non-compile-time errors.\n const fullCode = `NG0${Math.abs(code)}`;\n let errorMessage = `${fullCode}${message ? ': ' + message : ''}`;\n if (ngDevMode && code < 0) {\n const addPeriodSeparator = !errorMessage.match(/[.,;!?\\n]$/);\n const separator = addPeriodSeparator ? '.' : '';\n errorMessage = `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`;\n }\n return errorMessage;\n}\n\nconst REQUIRED_UNSET_VALUE = /* @__PURE__ */ Symbol('InputSignalNode#UNSET');\n// Note: Using an IIFE here to ensure that the spread assignment is not considered\n// a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`.\n// TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.\nconst INPUT_SIGNAL_NODE = /* @__PURE__ */ (() => {\n return {\n ...SIGNAL_NODE$1,\n transformFn: undefined,\n applyValueToInputSignal(node, value) {\n signalSetFn$1(node, value);\n },\n };\n})();\n\nconst ɵINPUT_SIGNAL_BRAND_READ_TYPE = /* @__PURE__ */ Symbol();\nconst ɵINPUT_SIGNAL_BRAND_WRITE_TYPE = /* @__PURE__ */ Symbol();\n/**\n * Creates an input signal.\n *\n * @param initialValue The initial value.\n * Can be set to {@link REQUIRED_UNSET_VALUE} for required inputs.\n * @param options Additional options for the input. e.g. a transform, or an alias.\n */\nfunction createInputSignal(initialValue, options) {\n const node = Object.create(INPUT_SIGNAL_NODE);\n node.value = initialValue;\n // Perf note: Always set `transformFn` here to ensure that `node` always\n // has the same v8 class shape, allowing monomorphic reads on input signals.\n node.transformFn = options?.transform;\n function inputValueFn() {\n // Record that someone looked at this signal.\n producerAccessed$1(node);\n if (node.value === REQUIRED_UNSET_VALUE) {\n throw new RuntimeError(-950 /* RuntimeErrorCode.REQUIRED_INPUT_NO_VALUE */, ngDevMode && 'Input is required but no value is available yet.');\n }\n return node.value;\n }\n inputValueFn[SIGNAL$1] = node;\n if (ngDevMode) {\n inputValueFn.toString = () => `[Input Signal: ${inputValueFn()}]`;\n }\n return inputValueFn;\n}\n\n/**\n * Convince closure compiler that the wrapped function has no side-effects.\n *\n * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to\n * allow us to execute a function but have closure compiler mark the call as no-side-effects.\n * It is important that the return value for the `noSideEffects` function be assigned\n * to something which is retained otherwise the call to `noSideEffects` will be removed by closure\n * compiler.\n */\nfunction noSideEffects(fn) {\n return { toString: fn }.toString();\n}\n\nconst ANNOTATIONS = '__annotations__';\nconst PARAMETERS = '__parameters__';\nconst PROP_METADATA = '__prop__metadata__';\n/**\n * @suppress {globalThis}\n */\nfunction makeDecorator(name, props, parentClass, additionalProcessing, typeFn) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function DecoratorFactory(...args) {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, ...args);\n return this;\n }\n const annotationInstance = new DecoratorFactory(...args);\n return function TypeDecorator(cls) {\n if (typeFn)\n typeFn(cls, ...args);\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const annotations = cls.hasOwnProperty(ANNOTATIONS)\n ? cls[ANNOTATIONS]\n : Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n annotations.push(annotationInstance);\n if (additionalProcessing)\n additionalProcessing(cls);\n return cls;\n };\n }\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n DecoratorFactory.prototype.ngMetadataName = name;\n DecoratorFactory.annotationCls = DecoratorFactory;\n return DecoratorFactory;\n });\n}\nfunction makeMetadataCtor(props) {\n return function ctor(...args) {\n if (props) {\n const values = props(...args);\n for (const propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\nfunction makeParamDecorator(name, props, parentClass) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function ParamDecoratorFactory(...args) {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const annotationInstance = new ParamDecoratorFactory(...args);\n ParamDecorator.annotation = annotationInstance;\n return ParamDecorator;\n function ParamDecorator(cls, unusedKey, index) {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const parameters = cls.hasOwnProperty(PARAMETERS)\n ? cls[PARAMETERS]\n : Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS];\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n ParamDecoratorFactory.annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n });\n}\nfunction makePropDecorator(name, props, parentClass, additionalProcessing) {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function PropDecoratorFactory(...args) {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const decoratorInstance = new PropDecoratorFactory(...args);\n function PropDecorator(target, name) {\n // target is undefined with standard decorators. This case is not supported and will throw\n // if this decorator is used in JIT mode with standard decorators.\n if (target === undefined) {\n throw new Error('Standard Angular field decorators are not supported in JIT mode.');\n }\n const constructor = target.constructor;\n // Use of Object.defineProperty is important because it creates a non-enumerable property\n // which prevents the property from being copied during subclassing.\n const meta = constructor.hasOwnProperty(PROP_METADATA)\n ? constructor[PROP_METADATA]\n : Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA];\n meta[name] = (meta.hasOwnProperty(name) && meta[name]) || [];\n meta[name].unshift(decoratorInstance);\n if (additionalProcessing)\n additionalProcessing(target, name, ...args);\n }\n return PropDecorator;\n }\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n PropDecoratorFactory.prototype.ngMetadataName = name;\n PropDecoratorFactory.annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\n });\n}\n\nconst _global = globalThis;\n\nfunction ngDevModeResetPerfCounters() {\n const locationString = typeof location !== 'undefined' ? location.toString() : '';\n const newCounters = {\n namedConstructors: locationString.indexOf('ngDevMode=namedConstructors') != -1,\n firstCreatePass: 0,\n tNode: 0,\n tView: 0,\n rendererCreateTextNode: 0,\n rendererSetText: 0,\n rendererCreateElement: 0,\n rendererAddEventListener: 0,\n rendererSetAttribute: 0,\n rendererRemoveAttribute: 0,\n rendererSetProperty: 0,\n rendererSetClassName: 0,\n rendererAddClass: 0,\n rendererRemoveClass: 0,\n rendererSetStyle: 0,\n rendererRemoveStyle: 0,\n rendererDestroy: 0,\n rendererDestroyNode: 0,\n rendererMoveNode: 0,\n rendererRemoveNode: 0,\n rendererAppendChild: 0,\n rendererInsertBefore: 0,\n rendererCreateComment: 0,\n hydratedNodes: 0,\n hydratedComponents: 0,\n dehydratedViewsRemoved: 0,\n dehydratedViewsCleanupRuns: 0,\n componentsSkippedHydration: 0,\n };\n // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.\n const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;\n if (!allowNgDevModeTrue) {\n _global['ngDevMode'] = false;\n }\n else {\n if (typeof _global['ngDevMode'] !== 'object') {\n _global['ngDevMode'] = {};\n }\n Object.assign(_global['ngDevMode'], newCounters);\n }\n return newCounters;\n}\n/**\n * This function checks to see if the `ngDevMode` has been set. If yes,\n * then we honor it, otherwise we default to dev mode with additional checks.\n *\n * The idea is that unless we are doing production build where we explicitly\n * set `ngDevMode == false` we should be helping the developer by providing\n * as much early warning and errors as possible.\n *\n * `ɵɵdefineComponent` is guaranteed to have been called before any component template functions\n * (and thus Ivy instructions), so a single initialization there is sufficient to ensure ngDevMode\n * is defined for the entire instruction set.\n *\n * When checking `ngDevMode` on toplevel, always init it before referencing it\n * (e.g. `((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode())`), otherwise you can\n * get a `ReferenceError` like in https://github.com/angular/angular/issues/31595.\n *\n * Details on possible values for `ngDevMode` can be found on its docstring.\n *\n * NOTE:\n * - changes to the `ngDevMode` name must be synced with `compiler-cli/src/tooling.ts`.\n */\nfunction initNgDevMode() {\n // The below checks are to ensure that calling `initNgDevMode` multiple times does not\n // reset the counters.\n // If the `ngDevMode` is not an object, then it means we have not created the perf counters\n // yet.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (typeof ngDevMode !== 'object' || Object.keys(ngDevMode).length === 0) {\n ngDevModeResetPerfCounters();\n }\n return typeof ngDevMode !== 'undefined' && !!ngDevMode;\n }\n return false;\n}\n\nfunction getClosureSafeProperty(objWithPropertyToExtract) {\n for (let key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === getClosureSafeProperty) {\n return key;\n }\n }\n throw Error('Could not find renamed property on target object.');\n}\n/**\n * Sets properties on a target object from a source object, but only if\n * the property doesn't already exist on the target object.\n * @param target The target to set properties on\n * @param source The source of the property keys and values to set\n */\nfunction fillProperties(target, source) {\n for (const key in source) {\n if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n}\n\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n if (token == null) {\n return '' + token;\n }\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n if (token.name) {\n return `${token.name}`;\n }\n const res = token.toString();\n if (res == null) {\n return '' + res;\n }\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n/**\n * Concatenates two strings with separator, allocating new strings only when necessary.\n *\n * @param before before string.\n * @param separator separator string.\n * @param after after string.\n * @returns concatenated string.\n */\nfunction concatStringsWithSpace(before, after) {\n return before == null || before === ''\n ? after === null\n ? ''\n : after\n : after == null || after === ''\n ? before\n : before + ' ' + after;\n}\n/**\n * Ellipses the string in the middle when longer than the max length\n *\n * @param string\n * @param maxLength of the output string\n * @returns ellipsed string with ... in the middle\n */\nfunction truncateMiddle(str, maxLength = 100) {\n if (!str || maxLength < 1 || str.length <= maxLength)\n return str;\n if (maxLength == 1)\n return str.substring(0, 1) + '...';\n const halfLimit = Math.round(maxLength / 2);\n return str.substring(0, halfLimit) + '...' + str.substring(str.length - halfLimit);\n}\n\nconst __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty });\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared, but not yet defined. It is also used when the `token` which we use when creating\n * a query is not yet defined.\n *\n * `forwardRef` is also used to break circularities in standalone components imports.\n *\n * @usageNotes\n * ### Circular dependency example\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n *\n * ### Circular standalone reference import example\n * ```ts\n * @Component({\n * standalone: true,\n * imports: [ChildComponent],\n * selector: 'app-parent',\n * template: ``,\n * })\n * export class ParentComponent {\n * @Input() hideParent: boolean;\n * }\n *\n *\n * @Component({\n * standalone: true,\n * imports: [CommonModule, forwardRef(() => ParentComponent)],\n * selector: 'app-child',\n * template: ``,\n * })\n * export class ChildComponent {\n * @Input() hideParent: boolean;\n * }\n * ```\n *\n * @publicApi\n */\nfunction forwardRef(forwardRefFn) {\n forwardRefFn.__forward_ref__ = forwardRef;\n forwardRefFn.toString = function () {\n return stringify(this());\n };\n return forwardRefFn;\n}\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * @see {@link forwardRef}\n * @publicApi\n */\nfunction resolveForwardRef(type) {\n return isForwardRef(type) ? type() : type;\n}\n/** Checks whether a function is wrapped by a `forwardRef`. */\nfunction isForwardRef(fn) {\n return (typeof fn === 'function' &&\n fn.hasOwnProperty(__forward_ref__) &&\n fn.__forward_ref__ === forwardRef);\n}\n\n// The functions in this file verify that the assumptions we are making\nfunction assertNumber(actual, msg) {\n if (!(typeof actual === 'number')) {\n throwError(msg, typeof actual, 'number', '===');\n }\n}\nfunction assertNumberInRange(actual, minInclusive, maxInclusive) {\n assertNumber(actual, 'Expected a number');\n assertLessThanOrEqual(actual, maxInclusive, 'Expected number to be less than or equal to');\n assertGreaterThanOrEqual(actual, minInclusive, 'Expected number to be greater than or equal to');\n}\nfunction assertString(actual, msg) {\n if (!(typeof actual === 'string')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');\n }\n}\nfunction assertFunction(actual, msg) {\n if (!(typeof actual === 'function')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'function', '===');\n }\n}\nfunction assertEqual(actual, expected, msg) {\n if (!(actual == expected)) {\n throwError(msg, actual, expected, '==');\n }\n}\nfunction assertNotEqual(actual, expected, msg) {\n if (!(actual != expected)) {\n throwError(msg, actual, expected, '!=');\n }\n}\nfunction assertSame(actual, expected, msg) {\n if (!(actual === expected)) {\n throwError(msg, actual, expected, '===');\n }\n}\nfunction assertNotSame(actual, expected, msg) {\n if (!(actual !== expected)) {\n throwError(msg, actual, expected, '!==');\n }\n}\nfunction assertLessThan(actual, expected, msg) {\n if (!(actual < expected)) {\n throwError(msg, actual, expected, '<');\n }\n}\nfunction assertLessThanOrEqual(actual, expected, msg) {\n if (!(actual <= expected)) {\n throwError(msg, actual, expected, '<=');\n }\n}\nfunction assertGreaterThan(actual, expected, msg) {\n if (!(actual > expected)) {\n throwError(msg, actual, expected, '>');\n }\n}\nfunction assertGreaterThanOrEqual(actual, expected, msg) {\n if (!(actual >= expected)) {\n throwError(msg, actual, expected, '>=');\n }\n}\nfunction assertNotDefined(actual, msg) {\n if (actual != null) {\n throwError(msg, actual, null, '==');\n }\n}\nfunction assertDefined(actual, msg) {\n if (actual == null) {\n throwError(msg, actual, null, '!=');\n }\n}\nfunction throwError(msg, actual, expected, comparison) {\n throw new Error(`ASSERTION ERROR: ${msg}` +\n (comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`));\n}\nfunction assertDomNode(node) {\n if (!(node instanceof Node)) {\n throwError(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`);\n }\n}\nfunction assertElement(node) {\n if (!(node instanceof Element)) {\n throwError(`The provided value must be an element but got ${stringify(node)}`);\n }\n}\nfunction assertIndexInRange(arr, index) {\n assertDefined(arr, 'Array must be defined.');\n const maxLen = arr.length;\n if (index < 0 || index >= maxLen) {\n throwError(`Index expected to be less than ${maxLen} but got ${index}`);\n }\n}\nfunction assertOneOf(value, ...validValues) {\n if (validValues.indexOf(value) !== -1)\n return true;\n throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`);\n}\nfunction assertNotReactive(fn) {\n if (getActiveConsumer$1() !== null) {\n throwError(`${fn}() should never be called in a reactive context.`);\n }\n}\n\n/**\n * Construct an injectable definition which defines how a token will be constructed by the DI\n * system, and in which injectors (if any) it will be available.\n *\n * This should be assigned to a static `ɵprov` field on a type, which will then be an\n * `InjectableType`.\n *\n * Options:\n * * `providedIn` determines which injectors will include the injectable, by either associating it\n * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be\n * provided in the `'root'` injector, which will be the application-level injector in most apps.\n * * `factory` gives the zero argument function which will create an instance of the injectable.\n * The factory can call [`inject`](api/core/inject) to access the `Injector` and request injection\n * of dependencies.\n *\n * @codeGenApi\n * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.\n */\nfunction ɵɵdefineInjectable(opts) {\n return {\n token: opts.token,\n providedIn: opts.providedIn || null,\n factory: opts.factory,\n value: undefined,\n };\n}\n/**\n * @deprecated in v8, delete after v10. This API should be used only by generated code, and that\n * code should now use ɵɵdefineInjectable instead.\n * @publicApi\n */\nconst defineInjectable = ɵɵdefineInjectable;\n/**\n * Construct an `InjectorDef` which configures an injector.\n *\n * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an\n * `InjectorType`.\n *\n * Options:\n *\n * * `providers`: an optional array of providers to add to the injector. Each provider must\n * either have a factory or point to a type which has a `ɵprov` static property (the\n * type must be an `InjectableType`).\n * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s\n * whose providers will also be added to the injector. Locally provided types will override\n * providers from imports.\n *\n * @codeGenApi\n */\nfunction ɵɵdefineInjector(options) {\n return { providers: options.providers || [], imports: options.imports || [] };\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading\n * inherited value.\n *\n * @param type A type which may have its own (non-inherited) `ɵprov`.\n */\nfunction getInjectableDef(type) {\n return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF);\n}\nfunction isInjectable(type) {\n return getInjectableDef(type) !== null;\n}\n/**\n * Return definition only if it is defined directly on `type` and is not inherited from a base\n * class of `type`.\n */\nfunction getOwnDefinition(type, field) {\n return type.hasOwnProperty(field) ? type[field] : null;\n}\n/**\n * Read the injectable def (`ɵprov`) for `type` or read the `ɵprov` from one of its ancestors.\n *\n * @param type A type which may have `ɵprov`, via inheritance.\n *\n * @deprecated Will be removed in a future version of Angular, where an error will occur in the\n * scenario if we find the `ɵprov` on an ancestor only.\n */\nfunction getInheritedInjectableDef(type) {\n const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]);\n if (def) {\n ngDevMode &&\n console.warn(`DEPRECATED: DI is instantiating a token \"${type.name}\" that inherits its @Injectable decorator but does not provide one itself.\\n` +\n `This will become an error in a future version of Angular. Please add @Injectable() to the \"${type.name}\" class.`);\n return def;\n }\n else {\n return null;\n }\n}\n/**\n * Read the injector def type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have an injector def (`ɵinj`)\n */\nfunction getInjectorDef(type) {\n return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF))\n ? type[NG_INJ_DEF]\n : null;\n}\nconst NG_PROV_DEF = getClosureSafeProperty({ ɵprov: getClosureSafeProperty });\nconst NG_INJ_DEF = getClosureSafeProperty({ ɵinj: getClosureSafeProperty });\n// We need to keep these around so we can read off old defs if new defs are unavailable\nconst NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty });\nconst NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty });\n\n/**\n * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parameterized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides an additional level of type safety.\n *\n *
\n *\n * **Important Note**: Ensure that you use the same instance of the `InjectionToken` in both the\n * provider and the injection call. Creating a new instance of `InjectionToken` in different places,\n * even with the same description, will be treated as different tokens by Angular's DI system,\n * leading to a `NullInjectorError`.\n *\n *
\n *\n * \n *\n * When creating an `InjectionToken`, you can optionally specify a factory function which returns\n * (possibly by creating) a default value of the parameterized type `T`. This sets up the\n * `InjectionToken` using this factory as a provider as if it was defined explicitly in the\n * application's root injector. If the factory function, which takes zero arguments, needs to inject\n * dependencies, it can do so using the [`inject`](api/core/inject) function.\n * As you can see in the Tree-shakable InjectionToken example below.\n *\n * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which\n * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:\n * this option is now deprecated). As mentioned above, `'root'` is the default value for\n * `providedIn`.\n *\n * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.\n *\n * @usageNotes\n * ### Basic Examples\n *\n * ### Plain InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * ### Tree-shakable InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n * @publicApi\n */\nclass InjectionToken {\n /**\n * @param _desc Description for the token,\n * used only for debugging purposes,\n * it should but does not need to be unique\n * @param options Options for the token's usage, as described above\n */\n constructor(_desc, options) {\n this._desc = _desc;\n /** @internal */\n this.ngMetadataName = 'InjectionToken';\n this.ɵprov = undefined;\n if (typeof options == 'number') {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertLessThan(options, 0, 'Only negative numbers are supported here');\n // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.\n // See `InjectorMarkers`\n this.__NG_ELEMENT_ID__ = options;\n }\n else if (options !== undefined) {\n this.ɵprov = ɵɵdefineInjectable({\n token: this,\n providedIn: options.providedIn || 'root',\n factory: options.factory,\n });\n }\n }\n /**\n * @internal\n */\n get multi() {\n return this;\n }\n toString() {\n return `InjectionToken ${this._desc}`;\n }\n}\n\nlet _injectorProfilerContext;\nfunction getInjectorProfilerContext() {\n !ngDevMode && throwError('getInjectorProfilerContext should never be called in production mode');\n return _injectorProfilerContext;\n}\nfunction setInjectorProfilerContext(context) {\n !ngDevMode && throwError('setInjectorProfilerContext should never be called in production mode');\n const previous = _injectorProfilerContext;\n _injectorProfilerContext = context;\n return previous;\n}\nlet injectorProfilerCallback = null;\n/**\n * Sets the callback function which will be invoked during certain DI events within the\n * runtime (for example: injecting services, creating injectable instances, configuring providers)\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nconst setInjectorProfiler = (injectorProfiler) => {\n !ngDevMode && throwError('setInjectorProfiler should never be called in production mode');\n injectorProfilerCallback = injectorProfiler;\n};\n/**\n * Injector profiler function which emits on DI events executed by the runtime.\n *\n * @param event InjectorProfilerEvent corresponding to the DI event being emitted\n */\nfunction injectorProfiler(event) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n if (injectorProfilerCallback != null /* both `null` and `undefined` */) {\n injectorProfilerCallback(event);\n }\n}\n/**\n * Emits an InjectorProfilerEventType.ProviderConfigured to the injector profiler. The data in the\n * emitted event includes the raw provider, as well as the token that provider is providing.\n *\n * @param eventProvider A provider object\n */\nfunction emitProviderConfiguredEvent(eventProvider, isViewProvider = false) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n let token;\n // if the provider is a TypeProvider (typeof provider is function) then the token is the\n // provider itself\n if (typeof eventProvider === 'function') {\n token = eventProvider;\n }\n // if the provider is an injection token, then the token is the injection token.\n else if (eventProvider instanceof InjectionToken) {\n token = eventProvider;\n }\n // in all other cases we can access the token via the `provide` property of the provider\n else {\n token = resolveForwardRef(eventProvider.provide);\n }\n let provider = eventProvider;\n // Injection tokens may define their own default provider which gets attached to the token itself\n // as `ɵprov`. In this case, we want to emit the provider that is attached to the token, not the\n // token itself.\n if (eventProvider instanceof InjectionToken) {\n provider = eventProvider.ɵprov || eventProvider;\n }\n injectorProfiler({\n type: 2 /* InjectorProfilerEventType.ProviderConfigured */,\n context: getInjectorProfilerContext(),\n providerRecord: { token, provider, isViewProvider },\n });\n}\n/**\n * Emits an event to the injector profiler with the instance that was created. Note that\n * the injector associated with this emission can be accessed by using getDebugInjectContext()\n *\n * @param instance an object created by an injector\n */\nfunction emitInstanceCreatedByInjectorEvent(instance) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n injectorProfiler({\n type: 1 /* InjectorProfilerEventType.InstanceCreatedByInjector */,\n context: getInjectorProfilerContext(),\n instance: { value: instance },\n });\n}\n/**\n * @param token DI token associated with injected service\n * @param value the instance of the injected service (i.e the result of `inject(token)`)\n * @param flags the flags that the token was injected with\n */\nfunction emitInjectEvent(token, value, flags) {\n !ngDevMode && throwError('Injector profiler should never be called in production mode');\n injectorProfiler({\n type: 0 /* InjectorProfilerEventType.Inject */,\n context: getInjectorProfilerContext(),\n service: { token, value, flags },\n });\n}\nfunction runInInjectorProfilerContext(injector, token, callback) {\n !ngDevMode &&\n throwError('runInInjectorProfilerContext should never be called in production mode');\n const prevInjectContext = setInjectorProfilerContext({ injector, token });\n try {\n callback();\n }\n finally {\n setInjectorProfilerContext(prevInjectContext);\n }\n}\n\nfunction isEnvironmentProviders(value) {\n return value && !!value.ɵproviders;\n}\n\nconst NG_COMP_DEF = getClosureSafeProperty({ ɵcmp: getClosureSafeProperty });\nconst NG_DIR_DEF = getClosureSafeProperty({ ɵdir: getClosureSafeProperty });\nconst NG_PIPE_DEF = getClosureSafeProperty({ ɵpipe: getClosureSafeProperty });\nconst NG_MOD_DEF = getClosureSafeProperty({ ɵmod: getClosureSafeProperty });\nconst NG_FACTORY_DEF = getClosureSafeProperty({ ɵfac: getClosureSafeProperty });\n/**\n * If a directive is diPublic, bloomAdd sets a property on the type with this constant as\n * the key and the directive's unique ID as the value. This allows us to map directives to their\n * bloom filter bit for DI.\n */\n// TODO(misko): This is wrong. The NG_ELEMENT_ID should never be minified.\nconst NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty });\n/**\n * The `NG_ENV_ID` field on a DI token indicates special processing in the `EnvironmentInjector`:\n * getting such tokens from the `EnvironmentInjector` will bypass the standard DI resolution\n * strategy and instead will return implementation produced by the `NG_ENV_ID` factory function.\n *\n * This particular retrieval of DI tokens is mostly done to eliminate circular dependencies and\n * improve tree-shaking.\n */\nconst NG_ENV_ID = getClosureSafeProperty({ __NG_ENV_ID__: getClosureSafeProperty });\n\n/**\n * Used for stringify render output in Ivy.\n * Important! This function is very performance-sensitive and we should\n * be extra careful not to introduce megamorphic reads in it.\n * Check `core/test/render3/perf/render_stringify` for benchmarks and alternate implementations.\n */\nfunction renderStringify(value) {\n if (typeof value === 'string')\n return value;\n if (value == null)\n return '';\n // Use `String` so that it invokes the `toString` method of the value. Note that this\n // appears to be faster than calling `value.toString` (see `render_stringify` benchmark).\n return String(value);\n}\n/**\n * Used to stringify a value so that it can be displayed in an error message.\n *\n * Important! This function contains a megamorphic read and should only be\n * used for error messages.\n */\nfunction stringifyForError(value) {\n if (typeof value === 'function')\n return value.name || value.toString();\n if (typeof value === 'object' && value != null && typeof value.type === 'function') {\n return value.type.name || value.type.toString();\n }\n return renderStringify(value);\n}\n/**\n * Used to stringify a `Type` and including the file path and line number in which it is defined, if\n * possible, for better debugging experience.\n *\n * Important! This function contains a megamorphic read and should only be used for error messages.\n */\nfunction debugStringifyTypeForError(type) {\n // TODO(pmvald): Do some refactoring so that we can use getComponentDef here without creating\n // circular deps.\n let componentDef = type[NG_COMP_DEF] || null;\n if (componentDef !== null && componentDef.debugInfo) {\n return stringifyTypeFromDebugInfo(componentDef.debugInfo);\n }\n return stringifyForError(type);\n}\n// TODO(pmvald): Do some refactoring so that we can use the type ClassDebugInfo for the param\n// debugInfo here without creating circular deps.\nfunction stringifyTypeFromDebugInfo(debugInfo) {\n if (!debugInfo.filePath || !debugInfo.lineNumber) {\n return debugInfo.className;\n }\n else {\n return `${debugInfo.className} (at ${debugInfo.filePath}:${debugInfo.lineNumber})`;\n }\n}\n\n/** Called when directives inject each other (creating a circular dependency) */\nfunction throwCyclicDependencyError(token, path) {\n const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';\n throw new RuntimeError(-200 /* RuntimeErrorCode.CYCLIC_DI_DEPENDENCY */, ngDevMode ? `Circular dependency in DI detected for ${token}${depPath}` : token);\n}\nfunction throwMixedMultiProviderError() {\n throw new Error(`Cannot mix multi providers and regular providers`);\n}\nfunction throwInvalidProviderError(ngModuleType, providers, provider) {\n if (ngModuleType && providers) {\n const providerDetail = providers.map((v) => (v == provider ? '?' + provider + '?' : '...'));\n throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`);\n }\n else if (isEnvironmentProviders(provider)) {\n if (provider.ɵfromNgModule) {\n throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`);\n }\n else {\n throw new RuntimeError(207 /* RuntimeErrorCode.PROVIDER_IN_WRONG_CONTEXT */, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`);\n }\n }\n else {\n throw new Error('Invalid provider');\n }\n}\n/** Throws an error when a token is not found in DI. */\nfunction throwProviderNotFoundError(token, injectorName) {\n const errorMessage = ngDevMode &&\n `No provider for ${stringifyForError(token)} found${injectorName ? ` in ${injectorName}` : ''}`;\n throw new RuntimeError(-201 /* RuntimeErrorCode.PROVIDER_NOT_FOUND */, errorMessage);\n}\n\n/**\n * Injection flags for DI.\n *\n * @publicApi\n * @deprecated use an options object for [`inject`](api/core/inject) instead.\n */\nvar InjectFlags;\n(function (InjectFlags) {\n // TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer\n // writes exports of it into ngfactory files.\n /** Check self and check parent injector if needed */\n InjectFlags[InjectFlags[\"Default\"] = 0] = \"Default\";\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n InjectFlags[InjectFlags[\"Host\"] = 1] = \"Host\";\n /** Don't ascend to ancestors of the node requesting injection. */\n InjectFlags[InjectFlags[\"Self\"] = 2] = \"Self\";\n /** Skip the node that is requesting injection. */\n InjectFlags[InjectFlags[\"SkipSelf\"] = 4] = \"SkipSelf\";\n /** Inject `defaultValue` instead if token not found. */\n InjectFlags[InjectFlags[\"Optional\"] = 8] = \"Optional\";\n})(InjectFlags || (InjectFlags = {}));\n\n/**\n * Current implementation of inject.\n *\n * By default, it is `injectInjectorOnly`, which makes it `Injector`-only aware. It can be changed\n * to `directiveInject`, which brings in the `NodeInjector` system of ivy. It is designed this\n * way for two reasons:\n * 1. `Injector` should not depend on ivy logic.\n * 2. To maintain tree shake-ability we don't want to bring in unnecessary code.\n */\nlet _injectImplementation;\nfunction getInjectImplementation() {\n return _injectImplementation;\n}\n/**\n * Sets the current inject implementation.\n */\nfunction setInjectImplementation(impl) {\n const previous = _injectImplementation;\n _injectImplementation = impl;\n return previous;\n}\n/**\n * Injects `root` tokens in limp mode.\n *\n * If no injector exists, we can still inject tree-shakable providers which have `providedIn` set to\n * `\"root\"`. This is known as the limp mode injection. In such case the value is stored in the\n * injectable definition.\n */\nfunction injectRootLimpMode(token, notFoundValue, flags) {\n const injectableDef = getInjectableDef(token);\n if (injectableDef && injectableDef.providedIn == 'root') {\n return injectableDef.value === undefined\n ? (injectableDef.value = injectableDef.factory())\n : injectableDef.value;\n }\n if (flags & InjectFlags.Optional)\n return null;\n if (notFoundValue !== undefined)\n return notFoundValue;\n throwProviderNotFoundError(token, 'Injector');\n}\n/**\n * Assert that `_injectImplementation` is not `fn`.\n *\n * This is useful, to prevent infinite recursion.\n *\n * @param fn Function which it should not equal to\n */\nfunction assertInjectImplementationNotEqual(fn) {\n ngDevMode &&\n assertNotEqual(_injectImplementation, fn, 'Calling ɵɵinject would cause infinite recursion');\n}\n\nconst _THROW_IF_NOT_FOUND = {};\nconst THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n/*\n * Name of a property (that we patch onto DI decorator), which is used as an annotation of which\n * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators\n * in the code, thus making them tree-shakable.\n */\nconst DI_DECORATOR_FLAG = '__NG_DI_FLAG__';\nconst NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nconst NG_TOKEN_PATH = 'ngTokenPath';\nconst NEW_LINE = /\\n/gm;\nconst NO_NEW_LINE = 'ɵ';\nconst SOURCE = '__source';\n/**\n * Current injector value used by `inject`.\n * - `undefined`: it is an error to call `inject`\n * - `null`: `inject` can be called but there is no injector (limp-mode).\n * - Injector instance: Use the injector for resolution.\n */\nlet _currentInjector = undefined;\nfunction getCurrentInjector() {\n return _currentInjector;\n}\nfunction setCurrentInjector(injector) {\n const former = _currentInjector;\n _currentInjector = injector;\n return former;\n}\nfunction injectInjectorOnly(token, flags = InjectFlags.Default) {\n if (_currentInjector === undefined) {\n throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&\n `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \\`runInInjectionContext\\`.`);\n }\n else if (_currentInjector === null) {\n return injectRootLimpMode(token, undefined, flags);\n }\n else {\n const value = _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);\n ngDevMode && emitInjectEvent(token, value, flags);\n return value;\n }\n}\nfunction ɵɵinject(token, flags = InjectFlags.Default) {\n return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);\n}\n/**\n * Throws an error indicating that a factory function could not be generated by the compiler for a\n * particular class.\n *\n * The name of the class is not mentioned here, but will be in the generated factory function name\n * and thus in the stack trace.\n *\n * @codeGenApi\n */\nfunction ɵɵinvalidFactoryDep(index) {\n throw new RuntimeError(202 /* RuntimeErrorCode.INVALID_FACTORY_DEPENDENCY */, ngDevMode &&\n `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.`);\n}\n/**\n * Injects a token from the currently active injector.\n * `inject` is only supported in an [injection context](guide/di/dependency-injection-context). It\n * can be used during:\n * - Construction (via the `constructor`) of a class being instantiated by the DI system, such\n * as an `@Injectable` or `@Component`.\n * - In the initializer for fields of such classes.\n * - In the factory function specified for `useFactory` of a `Provider` or an `@Injectable`.\n * - In the `factory` function specified for an `InjectionToken`.\n * - In a stackframe of a function call in a DI context\n *\n * @param token A token that represents a dependency that should be injected.\n * @param flags Optional flags that control how injection is executed.\n * The flags correspond to injection strategies that can be specified with\n * parameter decorators `@Host`, `@Self`, `@SkipSelf`, and `@Optional`.\n * @returns the injected value if operation is successful, `null` otherwise.\n * @throws if called outside of a supported context.\n *\n * @usageNotes\n * In practice the `inject()` calls are allowed in a constructor, a constructor parameter and a\n * field initializer:\n *\n * ```typescript\n * @Injectable({providedIn: 'root'})\n * export class Car {\n * radio: Radio|undefined;\n * // OK: field initializer\n * spareTyre = inject(Tyre);\n *\n * constructor() {\n * // OK: constructor body\n * this.radio = inject(Radio);\n * }\n * }\n * ```\n *\n * It is also legal to call `inject` from a provider's factory:\n *\n * ```typescript\n * providers: [\n * {provide: Car, useFactory: () => {\n * // OK: a class factory\n * const engine = inject(Engine);\n * return new Car(engine);\n * }}\n * ]\n * ```\n *\n * Calls to the `inject()` function outside of the class creation context will result in error. Most\n * notably, calls to `inject()` are disallowed after a class instance was created, in methods\n * (including lifecycle hooks):\n *\n * ```typescript\n * @Component({ ... })\n * export class CarComponent {\n * ngOnInit() {\n * // ERROR: too late, the component instance was already created\n * const engine = inject(Engine);\n * engine.start();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction inject(token, flags = InjectFlags.Default) {\n // The `as any` here _shouldn't_ be necessary, but without it JSCompiler\n // throws a disambiguation error due to the multiple signatures.\n return ɵɵinject(token, convertToBitFlags(flags));\n}\n// Converts object-based DI flags (`InjectOptions`) to bit flags (`InjectFlags`).\nfunction convertToBitFlags(flags) {\n if (typeof flags === 'undefined' || typeof flags === 'number') {\n return flags;\n }\n // While TypeScript doesn't accept it without a cast, bitwise OR with false-y values in\n // JavaScript is a no-op. We can use that for a very codesize-efficient conversion from\n // `InjectOptions` to `InjectFlags`.\n return (0 /* InternalInjectFlags.Default */ | // comment to force a line break in the formatter\n (flags.optional && 8 /* InternalInjectFlags.Optional */) |\n (flags.host && 1 /* InternalInjectFlags.Host */) |\n (flags.self && 2 /* InternalInjectFlags.Self */) |\n (flags.skipSelf && 4 /* InternalInjectFlags.SkipSelf */));\n}\nfunction injectArgs(types) {\n const args = [];\n for (let i = 0; i < types.length; i++) {\n const arg = resolveForwardRef(types[i]);\n if (Array.isArray(arg)) {\n if (arg.length === 0) {\n throw new RuntimeError(900 /* RuntimeErrorCode.INVALID_DIFFER_INPUT */, ngDevMode && 'Arguments array must have arguments.');\n }\n let type = undefined;\n let flags = InjectFlags.Default;\n for (let j = 0; j < arg.length; j++) {\n const meta = arg[j];\n const flag = getInjectFlag(meta);\n if (typeof flag === 'number') {\n // Special case when we handle @Inject decorator.\n if (flag === -1 /* DecoratorFlags.Inject */) {\n type = meta.token;\n }\n else {\n flags |= flag;\n }\n }\n else {\n type = meta;\n }\n }\n args.push(ɵɵinject(type, flags));\n }\n else {\n args.push(ɵɵinject(arg));\n }\n }\n return args;\n}\n/**\n * Attaches a given InjectFlag to a given decorator using monkey-patching.\n * Since DI decorators can be used in providers `deps` array (when provider is configured using\n * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we\n * attach the flag to make it available both as a static property and as a field on decorator\n * instance.\n *\n * @param decorator Provided DI decorator.\n * @param flag InjectFlag that should be applied.\n */\nfunction attachInjectFlag(decorator, flag) {\n decorator[DI_DECORATOR_FLAG] = flag;\n decorator.prototype[DI_DECORATOR_FLAG] = flag;\n return decorator;\n}\n/**\n * Reads monkey-patched property that contains InjectFlag attached to a decorator.\n *\n * @param token Token that may contain monkey-patched DI flags property.\n */\nfunction getInjectFlag(token) {\n return token[DI_DECORATOR_FLAG];\n}\nfunction catchInjectorError(e, token, injectorErrorName, source) {\n const tokenPath = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, injectorErrorName, source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n}\nfunction formatError(text, obj, injectorErrorName, source = null) {\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.slice(2) : text;\n let context = stringify(obj);\n if (Array.isArray(obj)) {\n context = obj.map(stringify).join(' -> ');\n }\n else if (typeof obj === 'object') {\n let parts = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n let value = obj[key];\n parts.push(key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = `{${parts.join(', ')}}`;\n }\n return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${text.replace(NEW_LINE, '\\n ')}`;\n}\n\n/**\n * Inject decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Inject = attachInjectFlag(\n// Disable tslint because `DecoratorFlags` is a const enum which gets inlined.\nmakeParamDecorator('Inject', (token) => ({ token })), -1 /* DecoratorFlags.Inject */);\n/**\n * Optional decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Optional = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Optional'), 8 /* InternalInjectFlags.Optional */);\n/**\n * Self decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Self = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Self'), 2 /* InternalInjectFlags.Self */);\n/**\n * `SkipSelf` decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst SkipSelf = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('SkipSelf'), 4 /* InternalInjectFlags.SkipSelf */);\n/**\n * Host decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Host = \n// Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n// tslint:disable-next-line: no-toplevel-property-access\nattachInjectFlag(makeParamDecorator('Host'), 1 /* InternalInjectFlags.Host */);\n\nfunction getFactoryDef(type, throwNotFound) {\n const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF);\n if (!hasFactoryDef && throwNotFound === true && ngDevMode) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵfac' property.`);\n }\n return hasFactoryDef ? type[NG_FACTORY_DEF] : null;\n}\n\n/**\n * Determines if the contents of two arrays is identical\n *\n * @param a first array\n * @param b second array\n * @param identityAccessor Optional function for extracting stable object identity from a value in\n * the array.\n */\nfunction arrayEquals(a, b, identityAccessor) {\n if (a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (identityAccessor) {\n valueA = identityAccessor(valueA);\n valueB = identityAccessor(valueB);\n }\n if (valueB !== valueA) {\n return false;\n }\n }\n return true;\n}\n/**\n * Flattens an array.\n */\nfunction flatten(list) {\n return list.flat(Number.POSITIVE_INFINITY);\n}\nfunction deepForEach(input, fn) {\n input.forEach((value) => (Array.isArray(value) ? deepForEach(value, fn) : fn(value)));\n}\nfunction addToArray(arr, index, value) {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n }\n else {\n arr.splice(index, 0, value);\n }\n}\nfunction removeFromArray(arr, index) {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n return arr.pop();\n }\n else {\n return arr.splice(index, 1)[0];\n }\n}\nfunction newArray(size, value) {\n const list = [];\n for (let i = 0; i < size; i++) {\n list.push(value);\n }\n return list;\n}\n/**\n * Remove item from array (Same as `Array.splice()` but faster.)\n *\n * `Array.splice()` is not as fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * https://jsperf.com/fast-array-splice (About 20x faster)\n *\n * @param array Array to splice\n * @param index Index of element in array to remove.\n * @param count Number of items to remove.\n */\nfunction arraySplice(array, index, count) {\n const length = array.length - count;\n while (index < length) {\n array[index] = array[index + count];\n index++;\n }\n while (count--) {\n array.pop(); // shrink the array\n }\n}\n/**\n * Same as `Array.splice(index, 0, value)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value Value to add to array.\n */\nfunction arrayInsert(array, index, value) {\n ngDevMode && assertLessThanOrEqual(index, array.length, \"Can't insert past array end.\");\n let end = array.length;\n while (end > index) {\n const previousEnd = end - 1;\n array[end] = array[previousEnd];\n end = previousEnd;\n }\n array[index] = value;\n}\n/**\n * Same as `Array.splice2(index, 0, value1, value2)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value1 Value to add to array.\n * @param value2 Value to add to array.\n */\nfunction arrayInsert2(array, index, value1, value2) {\n ngDevMode && assertLessThanOrEqual(index, array.length, \"Can't insert past array end.\");\n let end = array.length;\n if (end == index) {\n // inserting at the end.\n array.push(value1, value2);\n }\n else if (end === 1) {\n // corner case when we have less items in array than we have items to insert.\n array.push(value2, array[0]);\n array[0] = value1;\n }\n else {\n end--;\n array.push(array[end - 1], array[end]);\n while (end > index) {\n const previousEnd = end - 2;\n array[end] = array[previousEnd];\n end--;\n }\n array[index] = value1;\n array[index + 1] = value2;\n }\n}\n/**\n * Get an index of an `value` in a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * located)\n */\nfunction arrayIndexOfSorted(array, value) {\n return _arrayIndexOfSorted(array, value, 0);\n}\n/**\n * Set a `value` for a `key`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or create.\n * @param value The value to set for a `key`.\n * @returns index (always even) of where the value vas set.\n */\nfunction keyValueArraySet(keyValueArray, key, value) {\n let index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it set it.\n keyValueArray[index | 1] = value;\n }\n else {\n index = ~index;\n arrayInsert2(keyValueArray, index, key, value);\n }\n return index;\n}\n/**\n * Retrieve a `value` for a `key` (on `undefined` if not found.)\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @return The `value` stored at the `key` location or `undefined if not found.\n */\nfunction keyValueArrayGet(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it retrieve it.\n return keyValueArray[index | 1];\n }\n return undefined;\n}\n/**\n * Retrieve a `key` index value in the array or `-1` if not found.\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @returns index of where the key is (or should have been.)\n * - positive (even) index if key found.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been inserted.)\n */\nfunction keyValueArrayIndexOf(keyValueArray, key) {\n return _arrayIndexOfSorted(keyValueArray, key, 1);\n}\n/**\n * Delete a `key` (and `value`) from the `KeyValueArray`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or delete (if exist).\n * @returns index of where the key was (or should have been.)\n * - positive (even) index if key found and deleted.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been.)\n */\nfunction keyValueArrayDelete(keyValueArray, key) {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it remove it.\n arraySplice(keyValueArray, index, 2);\n }\n return index;\n}\n/**\n * INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @param shift grouping shift.\n * - `0` means look at every location\n * - `1` means only look at every other (even) location (the odd locations are to be ignored as\n * they are values.)\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nfunction _arrayIndexOfSorted(array, value, shift) {\n ngDevMode && assertEqual(Array.isArray(array), true, 'Expecting an array');\n let start = 0;\n let end = array.length >> shift;\n while (end !== start) {\n const middle = start + ((end - start) >> 1); // find the middle.\n const current = array[middle << shift];\n if (value === current) {\n return middle << shift;\n }\n else if (current > value) {\n end = middle;\n }\n else {\n start = middle + 1; // We already searched middle so make it non-inclusive by adding 1\n }\n }\n return ~(end << shift);\n}\n\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\nconst EMPTY_OBJ = {};\nconst EMPTY_ARRAY = [];\n// freezing the values prevents any code from accidentally inserting new values in\nif ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {\n // These property accesses can be ignored because ngDevMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_OBJ);\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_ARRAY);\n}\n\n/**\n * A multi-provider token for initialization functions that will run upon construction of an\n * environment injector.\n *\n * Note: As opposed to the `APP_INITIALIZER` token, the `ENVIRONMENT_INITIALIZER` functions are not awaited,\n * hence they should not be `async`.\n *\n * @publicApi\n */\nconst ENVIRONMENT_INITIALIZER = new InjectionToken(ngDevMode ? 'ENVIRONMENT_INITIALIZER' : '');\n\n/**\n * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.\n *\n * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a\n * project.\n *\n * @publicApi\n */\nconst INJECTOR$1 = new InjectionToken(ngDevMode ? 'INJECTOR' : '', \n// Disable tslint because this is const enum which gets inlined not top level prop access.\n// tslint:disable-next-line: no-toplevel-property-access\n-1 /* InjectorMarkers.Injector */);\n\nconst INJECTOR_DEF_TYPES = new InjectionToken(ngDevMode ? 'INJECTOR_DEF_TYPES' : '');\n\nclass NullInjector {\n get(token, notFoundValue = THROW_IF_NOT_FOUND) {\n if (notFoundValue === THROW_IF_NOT_FOUND) {\n const error = new Error(`NullInjectorError: No provider for ${stringify(token)}!`);\n error.name = 'NullInjectorError';\n throw error;\n }\n return notFoundValue;\n }\n}\n\n/**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n *\n * @see [Change detection usage](/api/core/ChangeDetectorRef?tab=usage-notes)\n * @see [Skipping component subtrees](/best-practices/skipping-subtrees)\n *\n * @publicApi\n */\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n /**\n * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated\n * until reactivated by setting the strategy to `Default` (`CheckAlways`).\n * Change detection can still be explicitly invoked.\n * This strategy applies to all child directives and cannot be overridden.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n /**\n * Use the default `CheckAlways` strategy, in which change detection is automatic until\n * explicitly deactivated.\n */\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\n\n/**\n * Defines the CSS styles encapsulation policies for the {@link Component} decorator's\n * `encapsulation` option.\n *\n * See {@link Component#encapsulation encapsulation}.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/ts/metadata/encapsulation.ts region='longform'}\n *\n * @publicApi\n */\nvar ViewEncapsulation$1;\n(function (ViewEncapsulation) {\n // TODO: consider making `ViewEncapsulation` a `const enum` instead. See\n // https://github.com/angular/angular/issues/44119 for additional information.\n /**\n * Emulates a native Shadow DOM encapsulation behavior by adding a specific attribute to the\n * component's host element and applying the same attribute to all the CSS selectors provided\n * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls}.\n *\n * This is the default option.\n */\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n /**\n * Doesn't provide any sort of CSS style encapsulation, meaning that all the styles provided\n * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls} are applicable\n * to any HTML element of the application regardless of their host Component.\n */\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n /**\n * Uses the browser's native Shadow DOM API to encapsulate CSS styles, meaning that it creates\n * a ShadowRoot for the component's host element which is then used to encapsulate\n * all the Component's styling.\n */\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation$1 || (ViewEncapsulation$1 = {}));\n\n/** Flags describing an input for a directive. */\nvar InputFlags;\n(function (InputFlags) {\n InputFlags[InputFlags[\"None\"] = 0] = \"None\";\n InputFlags[InputFlags[\"SignalBased\"] = 1] = \"SignalBased\";\n InputFlags[InputFlags[\"HasDecoratorInputTransform\"] = 2] = \"HasDecoratorInputTransform\";\n})(InputFlags || (InputFlags = {}));\n\n/**\n * Returns an index of `classToSearch` in `className` taking token boundaries into account.\n *\n * `classIndexOf('AB A', 'A', 0)` will be 3 (not 0 since `AB!==A`)\n *\n * @param className A string containing classes (whitespace separated)\n * @param classToSearch A class name to locate\n * @param startingIndex Starting location of search\n * @returns an index of the located class (or -1 if not found)\n */\nfunction classIndexOf(className, classToSearch, startingIndex) {\n ngDevMode && assertNotEqual(classToSearch, '', 'can not look for \"\" string.');\n let end = className.length;\n while (true) {\n const foundIndex = className.indexOf(classToSearch, startingIndex);\n if (foundIndex === -1)\n return foundIndex;\n if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32 /* CharCode.SPACE */) {\n // Ensure that it has leading whitespace\n const length = classToSearch.length;\n if (foundIndex + length === end ||\n className.charCodeAt(foundIndex + length) <= 32 /* CharCode.SPACE */) {\n // Ensure that it has trailing whitespace\n return foundIndex;\n }\n }\n // False positive, keep searching from where we left off.\n startingIndex = foundIndex + 1;\n }\n}\n\n/**\n * Assigns all attribute values to the provided element via the inferred renderer.\n *\n * This function accepts two forms of attribute entries:\n *\n * default: (key, value):\n * attrs = [key1, value1, key2, value2]\n *\n * namespaced: (NAMESPACE_MARKER, uri, name, value)\n * attrs = [NAMESPACE_MARKER, uri, name, value, NAMESPACE_MARKER, uri, name, value]\n *\n * The `attrs` array can contain a mix of both the default and namespaced entries.\n * The \"default\" values are set without a marker, but if the function comes across\n * a marker value then it will attempt to set a namespaced value. If the marker is\n * not of a namespaced value then the function will quit and return the index value\n * where it stopped during the iteration of the attrs array.\n *\n * See [AttributeMarker] to understand what the namespace marker value is.\n *\n * Note that this instruction does not support assigning style and class values to\n * an element. See `elementStart` and `elementHostAttrs` to learn how styling values\n * are applied to an element.\n * @param renderer The renderer to be used\n * @param native The element that the attributes will be assigned to\n * @param attrs The attribute array of values that will be assigned to the element\n * @returns the index value that was last accessed in the attributes array\n */\nfunction setUpAttributes(renderer, native, attrs) {\n let i = 0;\n while (i < attrs.length) {\n const value = attrs[i];\n if (typeof value === 'number') {\n // only namespaces are supported. Other value types (such as style/class\n // entries) are not supported in this function.\n if (value !== 0 /* AttributeMarker.NamespaceURI */) {\n break;\n }\n // we just landed on the marker value ... therefore\n // we should skip to the next entry\n i++;\n const namespaceURI = attrs[i++];\n const attrName = attrs[i++];\n const attrVal = attrs[i++];\n ngDevMode && ngDevMode.rendererSetAttribute++;\n renderer.setAttribute(native, attrName, attrVal, namespaceURI);\n }\n else {\n // attrName is string;\n const attrName = value;\n const attrVal = attrs[++i];\n // Standard attributes\n ngDevMode && ngDevMode.rendererSetAttribute++;\n if (isAnimationProp(attrName)) {\n renderer.setProperty(native, attrName, attrVal);\n }\n else {\n renderer.setAttribute(native, attrName, attrVal);\n }\n i++;\n }\n }\n // another piece of code may iterate over the same attributes array. Therefore\n // it may be helpful to return the exact spot where the attributes array exited\n // whether by running into an unsupported marker or if all the static values were\n // iterated over.\n return i;\n}\n/**\n * Test whether the given value is a marker that indicates that the following\n * attribute values in a `TAttributes` array are only the names of attributes,\n * and not name-value pairs.\n * @param marker The attribute marker to test.\n * @returns true if the marker is a \"name-only\" marker (e.g. `Bindings`, `Template` or `I18n`).\n */\nfunction isNameOnlyAttributeMarker(marker) {\n return (marker === 3 /* AttributeMarker.Bindings */ ||\n marker === 4 /* AttributeMarker.Template */ ||\n marker === 6 /* AttributeMarker.I18n */);\n}\nfunction isAnimationProp(name) {\n // Perf note: accessing charCodeAt to check for the first character of a string is faster as\n // compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that\n // charCodeAt doesn't allocate memory to return a substring.\n return name.charCodeAt(0) === 64 /* CharCode.AT_SIGN */;\n}\n/**\n * Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.\n *\n * This merge function keeps the order of attrs same.\n *\n * @param dst Location of where the merged `TAttributes` should end up.\n * @param src `TAttributes` which should be appended to `dst`\n */\nfunction mergeHostAttrs(dst, src) {\n if (src === null || src.length === 0) {\n // do nothing\n }\n else if (dst === null || dst.length === 0) {\n // We have source, but dst is empty, just make a copy.\n dst = src.slice();\n }\n else {\n let srcMarker = -1 /* AttributeMarker.ImplicitAttributes */;\n for (let i = 0; i < src.length; i++) {\n const item = src[i];\n if (typeof item === 'number') {\n srcMarker = item;\n }\n else {\n if (srcMarker === 0 /* AttributeMarker.NamespaceURI */) {\n // Case where we need to consume `key1`, `key2`, `value` items.\n }\n else if (srcMarker === -1 /* AttributeMarker.ImplicitAttributes */ ||\n srcMarker === 2 /* AttributeMarker.Styles */) {\n // Case where we have to consume `key1` and `value` only.\n mergeHostAttribute(dst, srcMarker, item, null, src[++i]);\n }\n else {\n // Case where we have to consume `key1` only.\n mergeHostAttribute(dst, srcMarker, item, null, null);\n }\n }\n }\n }\n return dst;\n}\n/**\n * Append `key`/`value` to existing `TAttributes` taking region marker and duplicates into account.\n *\n * @param dst `TAttributes` to append to.\n * @param marker Region where the `key`/`value` should be added.\n * @param key1 Key to add to `TAttributes`\n * @param key2 Key to add to `TAttributes` (in case of `AttributeMarker.NamespaceURI`)\n * @param value Value to add or to overwrite to `TAttributes` Only used if `marker` is not Class.\n */\nfunction mergeHostAttribute(dst, marker, key1, key2, value) {\n let i = 0;\n // Assume that new markers will be inserted at the end.\n let markerInsertPosition = dst.length;\n // scan until correct type.\n if (marker === -1 /* AttributeMarker.ImplicitAttributes */) {\n markerInsertPosition = -1;\n }\n else {\n while (i < dst.length) {\n const dstValue = dst[i++];\n if (typeof dstValue === 'number') {\n if (dstValue === marker) {\n markerInsertPosition = -1;\n break;\n }\n else if (dstValue > marker) {\n // We need to save this as we want the markers to be inserted in specific order.\n markerInsertPosition = i - 1;\n break;\n }\n }\n }\n }\n // search until you find place of insertion\n while (i < dst.length) {\n const item = dst[i];\n if (typeof item === 'number') {\n // since `i` started as the index after the marker, we did not find it if we are at the next\n // marker\n break;\n }\n else if (item === key1) {\n // We already have same token\n if (key2 === null) {\n if (value !== null) {\n dst[i + 1] = value;\n }\n return;\n }\n else if (key2 === dst[i + 1]) {\n dst[i + 2] = value;\n return;\n }\n }\n // Increment counter.\n i++;\n if (key2 !== null)\n i++;\n if (value !== null)\n i++;\n }\n // insert at location.\n if (markerInsertPosition !== -1) {\n dst.splice(markerInsertPosition, 0, marker);\n i = markerInsertPosition + 1;\n }\n dst.splice(i++, 0, key1);\n if (key2 !== null) {\n dst.splice(i++, 0, key2);\n }\n if (value !== null) {\n dst.splice(i++, 0, value);\n }\n}\n\nconst NG_TEMPLATE_SELECTOR = 'ng-template';\n/**\n * Search the `TAttributes` to see if it contains `cssClassToMatch` (case insensitive)\n *\n * @param tNode static data of the node to match\n * @param attrs `TAttributes` to search through.\n * @param cssClassToMatch class to match (lowercase)\n * @param isProjectionMode Whether or not class matching should look into the attribute `class` in\n * addition to the `AttributeMarker.Classes`.\n */\nfunction isCssClassMatching(tNode, attrs, cssClassToMatch, isProjectionMode) {\n ngDevMode &&\n assertEqual(cssClassToMatch, cssClassToMatch.toLowerCase(), 'Class name expected to be lowercase.');\n let i = 0;\n if (isProjectionMode) {\n for (; i < attrs.length && typeof attrs[i] === 'string'; i += 2) {\n // Search for an implicit `class` attribute and check if its value matches `cssClassToMatch`.\n if (attrs[i] === 'class' &&\n classIndexOf(attrs[i + 1].toLowerCase(), cssClassToMatch, 0) !== -1) {\n return true;\n }\n }\n }\n else if (isInlineTemplate(tNode)) {\n // Matching directives (i.e. when not matching for projection mode) should not consider the\n // class bindings that are present on inline templates, as those class bindings only target\n // the root node of the template, not the template itself.\n return false;\n }\n // Resume the search for classes after the `Classes` marker.\n i = attrs.indexOf(1 /* AttributeMarker.Classes */, i);\n if (i > -1) {\n // We found the classes section. Start searching for the class.\n let item;\n while (++i < attrs.length && typeof (item = attrs[i]) === 'string') {\n if (item.toLowerCase() === cssClassToMatch) {\n return true;\n }\n }\n }\n return false;\n}\n/**\n * Checks whether the `tNode` represents an inline template (e.g. `*ngFor`).\n *\n * @param tNode current TNode\n */\nfunction isInlineTemplate(tNode) {\n return tNode.type === 4 /* TNodeType.Container */ && tNode.value !== NG_TEMPLATE_SELECTOR;\n}\n/**\n * Function that checks whether a given tNode matches tag-based selector and has a valid type.\n *\n * Matching can be performed in 2 modes: projection mode (when we project nodes) and regular\n * directive matching mode:\n * - in the \"directive matching\" mode we do _not_ take TContainer's tagName into account if it is\n * different from NG_TEMPLATE_SELECTOR (value different from NG_TEMPLATE_SELECTOR indicates that a\n * tag name was extracted from * syntax so we would match the same directive twice);\n * - in the \"projection\" mode, we use a tag name potentially extracted from the * syntax processing\n * (applicable to TNodeType.Container only).\n */\nfunction hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {\n const tagNameToCompare = tNode.type === 4 /* TNodeType.Container */ && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value;\n return currentSelector === tagNameToCompare;\n}\n/**\n * A utility function to match an Ivy node static data against a simple CSS selector\n *\n * @param tNode static data of the node to match\n * @param selector The selector to try matching against the node.\n * @param isProjectionMode if `true` we are matching for content projection, otherwise we are doing\n * directive matching.\n * @returns true if node matches the selector.\n */\nfunction isNodeMatchingSelector(tNode, selector, isProjectionMode) {\n ngDevMode && assertDefined(selector[0], 'Selector should have a tag name');\n let mode = 4 /* SelectorFlags.ELEMENT */;\n const nodeAttrs = tNode.attrs;\n // Find the index of first attribute that has no value, only a name.\n const nameOnlyMarkerIdx = nodeAttrs !== null ? getNameOnlyMarkerIndex(nodeAttrs) : 0;\n // When processing \":not\" selectors, we skip to the next \":not\" if the\n // current one doesn't match\n let skipToNextSelector = false;\n for (let i = 0; i < selector.length; i++) {\n const current = selector[i];\n if (typeof current === 'number') {\n // If we finish processing a :not selector and it hasn't failed, return false\n if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) {\n return false;\n }\n // If we are skipping to the next :not() and this mode flag is positive,\n // it's a part of the current :not() selector, and we should keep skipping\n if (skipToNextSelector && isPositive(current))\n continue;\n skipToNextSelector = false;\n mode = current | (mode & 1 /* SelectorFlags.NOT */);\n continue;\n }\n if (skipToNextSelector)\n continue;\n if (mode & 4 /* SelectorFlags.ELEMENT */) {\n mode = 2 /* SelectorFlags.ATTRIBUTE */ | (mode & 1 /* SelectorFlags.NOT */);\n if ((current !== '' && !hasTagAndTypeMatch(tNode, current, isProjectionMode)) ||\n (current === '' && selector.length === 1)) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n else if (mode & 8 /* SelectorFlags.CLASS */) {\n if (nodeAttrs === null || !isCssClassMatching(tNode, nodeAttrs, current, isProjectionMode)) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n else {\n const selectorAttrValue = selector[++i];\n const attrIndexInNode = findAttrIndexInNode(current, nodeAttrs, isInlineTemplate(tNode), isProjectionMode);\n if (attrIndexInNode === -1) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n continue;\n }\n if (selectorAttrValue !== '') {\n let nodeAttrValue;\n if (attrIndexInNode > nameOnlyMarkerIdx) {\n nodeAttrValue = '';\n }\n else {\n ngDevMode &&\n assertNotEqual(nodeAttrs[attrIndexInNode], 0 /* AttributeMarker.NamespaceURI */, 'We do not match directives on namespaced attributes');\n // we lowercase the attribute value to be able to match\n // selectors without case-sensitivity\n // (selectors are already in lowercase when generated)\n nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase();\n }\n if (mode & 2 /* SelectorFlags.ATTRIBUTE */ && selectorAttrValue !== nodeAttrValue) {\n if (isPositive(mode))\n return false;\n skipToNextSelector = true;\n }\n }\n }\n }\n return isPositive(mode) || skipToNextSelector;\n}\nfunction isPositive(mode) {\n return (mode & 1 /* SelectorFlags.NOT */) === 0;\n}\n/**\n * Examines the attribute's definition array for a node to find the index of the\n * attribute that matches the given `name`.\n *\n * NOTE: This will not match namespaced attributes.\n *\n * Attribute matching depends upon `isInlineTemplate` and `isProjectionMode`.\n * The following table summarizes which types of attributes we attempt to match:\n *\n * ===========================================================================================================\n * Modes | Normal Attributes | Bindings Attributes | Template Attributes | I18n\n * Attributes\n * ===========================================================================================================\n * Inline + Projection | YES | YES | NO | YES\n * -----------------------------------------------------------------------------------------------------------\n * Inline + Directive | NO | NO | YES | NO\n * -----------------------------------------------------------------------------------------------------------\n * Non-inline + Projection | YES | YES | NO | YES\n * -----------------------------------------------------------------------------------------------------------\n * Non-inline + Directive | YES | YES | NO | YES\n * ===========================================================================================================\n *\n * @param name the name of the attribute to find\n * @param attrs the attribute array to examine\n * @param isInlineTemplate true if the node being matched is an inline template (e.g. `*ngFor`)\n * rather than a manually expanded template node (e.g ``).\n * @param isProjectionMode true if we are matching against content projection otherwise we are\n * matching against directives.\n */\nfunction findAttrIndexInNode(name, attrs, isInlineTemplate, isProjectionMode) {\n if (attrs === null)\n return -1;\n let i = 0;\n if (isProjectionMode || !isInlineTemplate) {\n let bindingsMode = false;\n while (i < attrs.length) {\n const maybeAttrName = attrs[i];\n if (maybeAttrName === name) {\n return i;\n }\n else if (maybeAttrName === 3 /* AttributeMarker.Bindings */ ||\n maybeAttrName === 6 /* AttributeMarker.I18n */) {\n bindingsMode = true;\n }\n else if (maybeAttrName === 1 /* AttributeMarker.Classes */ ||\n maybeAttrName === 2 /* AttributeMarker.Styles */) {\n let value = attrs[++i];\n // We should skip classes here because we have a separate mechanism for\n // matching classes in projection mode.\n while (typeof value === 'string') {\n value = attrs[++i];\n }\n continue;\n }\n else if (maybeAttrName === 4 /* AttributeMarker.Template */) {\n // We do not care about Template attributes in this scenario.\n break;\n }\n else if (maybeAttrName === 0 /* AttributeMarker.NamespaceURI */) {\n // Skip the whole namespaced attribute and value. This is by design.\n i += 4;\n continue;\n }\n // In binding mode there are only names, rather than name-value pairs.\n i += bindingsMode ? 1 : 2;\n }\n // We did not match the attribute\n return -1;\n }\n else {\n return matchTemplateAttribute(attrs, name);\n }\n}\nfunction isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) {\n for (let i = 0; i < selector.length; i++) {\n if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) {\n return true;\n }\n }\n return false;\n}\nfunction getProjectAsAttrValue(tNode) {\n const nodeAttrs = tNode.attrs;\n if (nodeAttrs != null) {\n const ngProjectAsAttrIdx = nodeAttrs.indexOf(5 /* AttributeMarker.ProjectAs */);\n // only check for ngProjectAs in attribute names, don't accidentally match attribute's value\n // (attribute names are stored at even indexes)\n if ((ngProjectAsAttrIdx & 1) === 0) {\n return nodeAttrs[ngProjectAsAttrIdx + 1];\n }\n }\n return null;\n}\nfunction getNameOnlyMarkerIndex(nodeAttrs) {\n for (let i = 0; i < nodeAttrs.length; i++) {\n const nodeAttr = nodeAttrs[i];\n if (isNameOnlyAttributeMarker(nodeAttr)) {\n return i;\n }\n }\n return nodeAttrs.length;\n}\nfunction matchTemplateAttribute(attrs, name) {\n let i = attrs.indexOf(4 /* AttributeMarker.Template */);\n if (i > -1) {\n i++;\n while (i < attrs.length) {\n const attr = attrs[i];\n // Return in case we checked all template attrs and are switching to the next section in the\n // attrs array (that starts with a number that represents an attribute marker).\n if (typeof attr === 'number')\n return -1;\n if (attr === name)\n return i;\n i++;\n }\n }\n return -1;\n}\n/**\n * Checks whether a selector is inside a CssSelectorList\n * @param selector Selector to be checked.\n * @param list List in which to look for the selector.\n */\nfunction isSelectorInSelectorList(selector, list) {\n selectorListLoop: for (let i = 0; i < list.length; i++) {\n const currentSelectorInList = list[i];\n if (selector.length !== currentSelectorInList.length) {\n continue;\n }\n for (let j = 0; j < selector.length; j++) {\n if (selector[j] !== currentSelectorInList[j]) {\n continue selectorListLoop;\n }\n }\n return true;\n }\n return false;\n}\nfunction maybeWrapInNotSelector(isNegativeMode, chunk) {\n return isNegativeMode ? ':not(' + chunk.trim() + ')' : chunk;\n}\nfunction stringifyCSSSelector(selector) {\n let result = selector[0];\n let i = 1;\n let mode = 2 /* SelectorFlags.ATTRIBUTE */;\n let currentChunk = '';\n let isNegativeMode = false;\n while (i < selector.length) {\n let valueOrMarker = selector[i];\n if (typeof valueOrMarker === 'string') {\n if (mode & 2 /* SelectorFlags.ATTRIBUTE */) {\n const attrValue = selector[++i];\n currentChunk +=\n '[' + valueOrMarker + (attrValue.length > 0 ? '=\"' + attrValue + '\"' : '') + ']';\n }\n else if (mode & 8 /* SelectorFlags.CLASS */) {\n currentChunk += '.' + valueOrMarker;\n }\n else if (mode & 4 /* SelectorFlags.ELEMENT */) {\n currentChunk += ' ' + valueOrMarker;\n }\n }\n else {\n //\n // Append current chunk to the final result in case we come across SelectorFlag, which\n // indicates that the previous section of a selector is over. We need to accumulate content\n // between flags to make sure we wrap the chunk later in :not() selector if needed, e.g.\n // ```\n // ['', Flags.CLASS, '.classA', Flags.CLASS | Flags.NOT, '.classB', '.classC']\n // ```\n // should be transformed to `.classA :not(.classB .classC)`.\n //\n // Note: for negative selector part, we accumulate content between flags until we find the\n // next negative flag. This is needed to support a case where `:not()` rule contains more than\n // one chunk, e.g. the following selector:\n // ```\n // ['', Flags.ELEMENT | Flags.NOT, 'p', Flags.CLASS, 'foo', Flags.CLASS | Flags.NOT, 'bar']\n // ```\n // should be stringified to `:not(p.foo) :not(.bar)`\n //\n if (currentChunk !== '' && !isPositive(valueOrMarker)) {\n result += maybeWrapInNotSelector(isNegativeMode, currentChunk);\n currentChunk = '';\n }\n mode = valueOrMarker;\n // According to CssSelector spec, once we come across `SelectorFlags.NOT` flag, the negative\n // mode is maintained for remaining chunks of a selector.\n isNegativeMode = isNegativeMode || !isPositive(mode);\n }\n i++;\n }\n if (currentChunk !== '') {\n result += maybeWrapInNotSelector(isNegativeMode, currentChunk);\n }\n return result;\n}\n/**\n * Generates string representation of CSS selector in parsed form.\n *\n * ComponentDef and DirectiveDef are generated with the selector in parsed form to avoid doing\n * additional parsing at runtime (for example, for directive matching). However in some cases (for\n * example, while bootstrapping a component), a string version of the selector is required to query\n * for the host element on the page. This function takes the parsed form of a selector and returns\n * its string representation.\n *\n * @param selectorList selector in parsed form\n * @returns string representation of a given selector\n */\nfunction stringifyCSSSelectorList(selectorList) {\n return selectorList.map(stringifyCSSSelector).join(',');\n}\n/**\n * Extracts attributes and classes information from a given CSS selector.\n *\n * This function is used while creating a component dynamically. In this case, the host element\n * (that is created dynamically) should contain attributes and classes specified in component's CSS\n * selector.\n *\n * @param selector CSS selector in parsed form (in a form of array)\n * @returns object with `attrs` and `classes` fields that contain extracted information\n */\nfunction extractAttrsAndClassesFromSelector(selector) {\n const attrs = [];\n const classes = [];\n let i = 1;\n let mode = 2 /* SelectorFlags.ATTRIBUTE */;\n while (i < selector.length) {\n let valueOrMarker = selector[i];\n if (typeof valueOrMarker === 'string') {\n if (mode === 2 /* SelectorFlags.ATTRIBUTE */) {\n if (valueOrMarker !== '') {\n attrs.push(valueOrMarker, selector[++i]);\n }\n }\n else if (mode === 8 /* SelectorFlags.CLASS */) {\n classes.push(valueOrMarker);\n }\n }\n else {\n // According to CssSelector spec, once we come across `SelectorFlags.NOT` flag, the negative\n // mode is maintained for remaining chunks of a selector. Since attributes and classes are\n // extracted only for \"positive\" part of the selector, we can stop here.\n if (!isPositive(mode))\n break;\n mode = valueOrMarker;\n }\n i++;\n }\n return { attrs, classes };\n}\n\n/**\n * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyComponent {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵcmp = defineComponent({\n * ...\n * });\n * }\n * ```\n * @codeGenApi\n */\nfunction ɵɵdefineComponent(componentDefinition) {\n return noSideEffects(() => {\n // Initialize ngDevMode. This must be the first statement in ɵɵdefineComponent.\n // See the `initNgDevMode` docstring for more information.\n (typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode();\n const baseDef = getNgDirectiveDef(componentDefinition);\n const def = {\n ...baseDef,\n decls: componentDefinition.decls,\n vars: componentDefinition.vars,\n template: componentDefinition.template,\n consts: componentDefinition.consts || null,\n ngContentSelectors: componentDefinition.ngContentSelectors,\n onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,\n directiveDefs: null, // assigned in noSideEffects\n pipeDefs: null, // assigned in noSideEffects\n dependencies: (baseDef.standalone && componentDefinition.dependencies) || null,\n getStandaloneInjector: null,\n signals: componentDefinition.signals ?? false,\n data: componentDefinition.data || {},\n encapsulation: componentDefinition.encapsulation || ViewEncapsulation$1.Emulated,\n styles: componentDefinition.styles || EMPTY_ARRAY,\n _: null,\n schemas: componentDefinition.schemas || null,\n tView: null,\n id: '',\n };\n initFeatures(def);\n const dependencies = componentDefinition.dependencies;\n def.directiveDefs = extractDefListOrFactory(dependencies, /* pipeDef */ false);\n def.pipeDefs = extractDefListOrFactory(dependencies, /* pipeDef */ true);\n def.id = getComponentId(def);\n return def;\n });\n}\nfunction extractDirectiveDef(type) {\n return getComponentDef(type) || getDirectiveDef(type);\n}\nfunction nonNull(value) {\n return value !== null;\n}\n/**\n * @codeGenApi\n */\nfunction ɵɵdefineNgModule(def) {\n return noSideEffects(() => {\n const res = {\n type: def.type,\n bootstrap: def.bootstrap || EMPTY_ARRAY,\n declarations: def.declarations || EMPTY_ARRAY,\n imports: def.imports || EMPTY_ARRAY,\n exports: def.exports || EMPTY_ARRAY,\n transitiveCompileScopes: null,\n schemas: def.schemas || null,\n id: def.id || null,\n };\n return res;\n });\n}\nfunction parseAndConvertBindingsForDefinition(obj, declaredInputs) {\n if (obj == null)\n return EMPTY_OBJ;\n const newLookup = {};\n for (const minifiedKey in obj) {\n if (obj.hasOwnProperty(minifiedKey)) {\n const value = obj[minifiedKey];\n let publicName;\n let declaredName;\n let inputFlags = InputFlags.None;\n if (Array.isArray(value)) {\n inputFlags = value[0];\n publicName = value[1];\n declaredName = value[2] ?? publicName; // declared name might not be set to save bytes.\n }\n else {\n publicName = value;\n declaredName = value;\n }\n // For inputs, capture the declared name, or if some flags are set.\n if (declaredInputs) {\n // Perf note: An array is only allocated for the input if there are flags.\n newLookup[publicName] =\n inputFlags !== InputFlags.None ? [minifiedKey, inputFlags] : minifiedKey;\n declaredInputs[publicName] = declaredName;\n }\n else {\n newLookup[publicName] = minifiedKey;\n }\n }\n }\n return newLookup;\n}\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```ts\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵdir = ɵɵdefineDirective({\n * ...\n * });\n * }\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵdefineDirective(directiveDefinition) {\n return noSideEffects(() => {\n const def = getNgDirectiveDef(directiveDefinition);\n initFeatures(def);\n return def;\n });\n}\n/**\n * Create a pipe definition object.\n *\n * # Example\n * ```\n * class MyPipe implements PipeTransform {\n * // Generated by Angular Template Compiler\n * static ɵpipe = definePipe({\n * ...\n * });\n * }\n * ```\n * @param pipeDef Pipe definition generated by the compiler\n *\n * @codeGenApi\n */\nfunction ɵɵdefinePipe(pipeDef) {\n return {\n type: pipeDef.type,\n name: pipeDef.name,\n factory: null,\n pure: pipeDef.pure !== false,\n standalone: pipeDef.standalone === true,\n onDestroy: pipeDef.type.prototype.ngOnDestroy || null,\n };\n}\n/**\n * The following getter methods retrieve the definition from the type. Currently the retrieval\n * honors inheritance, but in the future we may change the rule to require that definitions are\n * explicit. This would require some sort of migration strategy.\n */\nfunction getComponentDef(type) {\n return type[NG_COMP_DEF] || null;\n}\nfunction getDirectiveDef(type) {\n return type[NG_DIR_DEF] || null;\n}\nfunction getPipeDef$1(type) {\n return type[NG_PIPE_DEF] || null;\n}\n/**\n * Checks whether a given Component, Directive or Pipe is marked as standalone.\n * This will return false if passed anything other than a Component, Directive, or Pipe class\n * See [this guide](guide/components/importing) for additional information:\n *\n * @param type A reference to a Component, Directive or Pipe.\n * @publicApi\n */\nfunction isStandalone(type) {\n const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type);\n return def !== null ? def.standalone : false;\n}\nfunction getNgModuleDef(type, throwNotFound) {\n const ngModuleDef = type[NG_MOD_DEF] || null;\n if (!ngModuleDef && throwNotFound === true) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`);\n }\n return ngModuleDef;\n}\nfunction getNgDirectiveDef(directiveDefinition) {\n const declaredInputs = {};\n return {\n type: directiveDefinition.type,\n providersResolver: null,\n factory: null,\n hostBindings: directiveDefinition.hostBindings || null,\n hostVars: directiveDefinition.hostVars || 0,\n hostAttrs: directiveDefinition.hostAttrs || null,\n contentQueries: directiveDefinition.contentQueries || null,\n declaredInputs: declaredInputs,\n inputTransforms: null,\n inputConfig: directiveDefinition.inputs || EMPTY_OBJ,\n exportAs: directiveDefinition.exportAs || null,\n standalone: directiveDefinition.standalone === true,\n signals: directiveDefinition.signals === true,\n selectors: directiveDefinition.selectors || EMPTY_ARRAY,\n viewQuery: directiveDefinition.viewQuery || null,\n features: directiveDefinition.features || null,\n setInput: null,\n findHostDirectiveDefs: null,\n hostDirectives: null,\n inputs: parseAndConvertBindingsForDefinition(directiveDefinition.inputs, declaredInputs),\n outputs: parseAndConvertBindingsForDefinition(directiveDefinition.outputs),\n debugInfo: null,\n };\n}\nfunction initFeatures(definition) {\n definition.features?.forEach((fn) => fn(definition));\n}\nfunction extractDefListOrFactory(dependencies, pipeDef) {\n if (!dependencies) {\n return null;\n }\n const defExtractor = pipeDef ? getPipeDef$1 : extractDirectiveDef;\n return () => (typeof dependencies === 'function' ? dependencies() : dependencies)\n .map((dep) => defExtractor(dep))\n .filter(nonNull);\n}\n/**\n * A map that contains the generated component IDs and type.\n */\nconst GENERATED_COMP_IDS = new Map();\n/**\n * A method can returns a component ID from the component definition using a variant of DJB2 hash\n * algorithm.\n */\nfunction getComponentId(componentDef) {\n let hash = 0;\n // We cannot rely solely on the component selector as the same selector can be used in different\n // modules.\n //\n // `componentDef.style` is not used, due to it causing inconsistencies. Ex: when server\n // component styles has no sourcemaps and browsers do.\n //\n // Example:\n // https://github.com/angular/components/blob/d9f82c8f95309e77a6d82fd574c65871e91354c2/src/material/core/option/option.ts#L248\n // https://github.com/angular/components/blob/285f46dc2b4c5b127d356cb7c4714b221f03ce50/src/material/legacy-core/option/option.ts#L32\n const hashSelectors = [\n componentDef.selectors,\n componentDef.ngContentSelectors,\n componentDef.hostVars,\n componentDef.hostAttrs,\n componentDef.consts,\n componentDef.vars,\n componentDef.decls,\n componentDef.encapsulation,\n componentDef.standalone,\n componentDef.signals,\n componentDef.exportAs,\n JSON.stringify(componentDef.inputs),\n JSON.stringify(componentDef.outputs),\n // We cannot use 'componentDef.type.name' as the name of the symbol will change and will not\n // match in the server and browser bundles.\n Object.getOwnPropertyNames(componentDef.type.prototype),\n !!componentDef.contentQueries,\n !!componentDef.viewQuery,\n ].join('|');\n for (const char of hashSelectors) {\n hash = (Math.imul(31, hash) + char.charCodeAt(0)) << 0;\n }\n // Force positive number hash.\n // 2147483647 = equivalent of Integer.MAX_VALUE.\n hash += 2147483647 + 1;\n const compId = 'c' + hash;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (GENERATED_COMP_IDS.has(compId)) {\n const previousCompDefType = GENERATED_COMP_IDS.get(compId);\n if (previousCompDefType !== componentDef.type) {\n console.warn(formatRuntimeError(-912 /* RuntimeErrorCode.COMPONENT_ID_COLLISION */, `Component ID generation collision detected. Components '${previousCompDefType.name}' and '${componentDef.type.name}' with selector '${stringifyCSSSelectorList(componentDef.selectors)}' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID.`));\n }\n }\n else {\n GENERATED_COMP_IDS.set(compId, componentDef.type);\n }\n }\n return compId;\n}\n\n/**\n * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally\n * referenced in `@Component` in a component injector.\n */\nfunction makeEnvironmentProviders(providers) {\n return {\n ɵproviders: providers,\n };\n}\n/**\n * Collects providers from all NgModules and standalone components, including transitively imported\n * ones.\n *\n * Providers extracted via `importProvidersFrom` are only usable in an application injector or\n * another environment injector (such as a route injector). They should not be used in component\n * providers.\n *\n * More information about standalone components can be found in [this\n * guide](guide/components/importing).\n *\n * @usageNotes\n * The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(NgModuleOne, NgModuleTwo)\n * ]\n * });\n * ```\n *\n * You can also use the `importProvidersFrom` results in the `providers` field of a route, when a\n * standalone component is used:\n *\n * ```typescript\n * export const ROUTES: Route[] = [\n * {\n * path: 'foo',\n * providers: [\n * importProvidersFrom(NgModuleOne, NgModuleTwo)\n * ],\n * component: YourStandaloneComponent\n * }\n * ];\n * ```\n *\n * @returns Collected providers from the specified list of types.\n * @publicApi\n */\nfunction importProvidersFrom(...sources) {\n return {\n ɵproviders: internalImportProvidersFrom(true, sources),\n ɵfromNgModule: true,\n };\n}\nfunction internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {\n const providersOut = [];\n const dedup = new Set(); // already seen types\n let injectorTypesWithProviders;\n const collectProviders = (provider) => {\n providersOut.push(provider);\n };\n deepForEach(sources, (source) => {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && checkForStandaloneCmp) {\n const cmpDef = getComponentDef(source);\n if (cmpDef?.standalone) {\n throw new RuntimeError(800 /* RuntimeErrorCode.IMPORT_PROVIDERS_FROM_STANDALONE */, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component \"${stringifyForError(source)}\"`);\n }\n }\n // Narrow `source` to access the internal type analogue for `ModuleWithProviders`.\n const internalSource = source;\n if (walkProviderTree(internalSource, collectProviders, [], dedup)) {\n injectorTypesWithProviders ||= [];\n injectorTypesWithProviders.push(internalSource);\n }\n });\n // Collect all providers from `ModuleWithProviders` types.\n if (injectorTypesWithProviders !== undefined) {\n processInjectorTypesWithProviders(injectorTypesWithProviders, collectProviders);\n }\n return providersOut;\n}\n/**\n * Collects all providers from the list of `ModuleWithProviders` and appends them to the provided\n * array.\n */\nfunction processInjectorTypesWithProviders(typesWithProviders, visitor) {\n for (let i = 0; i < typesWithProviders.length; i++) {\n const { ngModule, providers } = typesWithProviders[i];\n deepForEachProvider(providers, (provider) => {\n ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule);\n visitor(provider, ngModule);\n });\n }\n}\n/**\n * The logic visits an `InjectorType`, an `InjectorTypeWithProviders`, or a standalone\n * `ComponentType`, and all of its transitive providers and collects providers.\n *\n * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,\n * the function will return \"true\" to indicate that the providers of the type definition need\n * to be processed. This allows us to process providers of injector types after all imports of\n * an injector definition are processed. (following View Engine semantics: see FW-1349)\n */\nfunction walkProviderTree(container, visitor, parents, dedup) {\n container = resolveForwardRef(container);\n if (!container)\n return false;\n // The actual type which had the definition. Usually `container`, but may be an unwrapped type\n // from `InjectorTypeWithProviders`.\n let defType = null;\n let injDef = getInjectorDef(container);\n const cmpDef = !injDef && getComponentDef(container);\n if (!injDef && !cmpDef) {\n // `container` is not an injector type or a component type. It might be:\n // * An `InjectorTypeWithProviders` that wraps an injector type.\n // * A standalone directive or pipe that got pulled in from a standalone component's\n // dependencies.\n // Try to unwrap it as an `InjectorTypeWithProviders` first.\n const ngModule = container\n .ngModule;\n injDef = getInjectorDef(ngModule);\n if (injDef) {\n defType = ngModule;\n }\n else {\n // Not a component or injector type, so ignore it.\n return false;\n }\n }\n else if (cmpDef && !cmpDef.standalone) {\n return false;\n }\n else {\n defType = container;\n }\n // Check for circular dependencies.\n if (ngDevMode && parents.indexOf(defType) !== -1) {\n const defName = stringify(defType);\n const path = parents.map(stringify);\n throwCyclicDependencyError(defName, path);\n }\n // Check for multiple imports of the same module\n const isDuplicate = dedup.has(defType);\n if (cmpDef) {\n if (isDuplicate) {\n // This component definition has already been processed.\n return false;\n }\n dedup.add(defType);\n if (cmpDef.dependencies) {\n const deps = typeof cmpDef.dependencies === 'function' ? cmpDef.dependencies() : cmpDef.dependencies;\n for (const dep of deps) {\n walkProviderTree(dep, visitor, parents, dedup);\n }\n }\n }\n else if (injDef) {\n // First, include providers from any imports.\n if (injDef.imports != null && !isDuplicate) {\n // Before processing defType's imports, add it to the set of parents. This way, if it ends\n // up deeply importing itself, this can be detected.\n ngDevMode && parents.push(defType);\n // Add it to the set of dedups. This way we can detect multiple imports of the same module\n dedup.add(defType);\n let importTypesWithProviders;\n try {\n deepForEach(injDef.imports, (imported) => {\n if (walkProviderTree(imported, visitor, parents, dedup)) {\n importTypesWithProviders ||= [];\n // If the processed import is an injector type with providers, we store it in the\n // list of import types with providers, so that we can process those afterwards.\n importTypesWithProviders.push(imported);\n }\n });\n }\n finally {\n // Remove it from the parents set when finished.\n ngDevMode && parents.pop();\n }\n // Imports which are declared with providers (TypeWithProviders) need to be processed\n // after all imported modules are processed. This is similar to how View Engine\n // processes/merges module imports in the metadata resolver. See: FW-1349.\n if (importTypesWithProviders !== undefined) {\n processInjectorTypesWithProviders(importTypesWithProviders, visitor);\n }\n }\n if (!isDuplicate) {\n // Track the InjectorType and add a provider for it.\n // It's important that this is done after the def's imports.\n const factory = getFactoryDef(defType) || (() => new defType());\n // Append extra providers to make more info available for consumers (to retrieve an injector\n // type), as well as internally (to calculate an injection scope correctly and eagerly\n // instantiate a `defType` when an injector is created).\n // Provider to create `defType` using its factory.\n visitor({ provide: defType, useFactory: factory, deps: EMPTY_ARRAY }, defType);\n // Make this `defType` available to an internal logic that calculates injector scope.\n visitor({ provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true }, defType);\n // Provider to eagerly instantiate `defType` via `INJECTOR_INITIALIZER`.\n visitor({ provide: ENVIRONMENT_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true }, defType);\n }\n // Next, include providers listed on the definition itself.\n const defProviders = injDef.providers;\n if (defProviders != null && !isDuplicate) {\n const injectorType = container;\n deepForEachProvider(defProviders, (provider) => {\n ngDevMode && validateProvider(provider, defProviders, injectorType);\n visitor(provider, injectorType);\n });\n }\n }\n else {\n // Should not happen, but just in case.\n return false;\n }\n return (defType !== container && container.providers !== undefined);\n}\nfunction validateProvider(provider, providers, containerType) {\n if (isTypeProvider(provider) ||\n isValueProvider(provider) ||\n isFactoryProvider(provider) ||\n isExistingProvider(provider)) {\n return;\n }\n // Here we expect the provider to be a `useClass` provider (by elimination).\n const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide));\n if (!classRef) {\n throwInvalidProviderError(containerType, providers, provider);\n }\n}\nfunction deepForEachProvider(providers, fn) {\n for (let provider of providers) {\n if (isEnvironmentProviders(provider)) {\n provider = provider.ɵproviders;\n }\n if (Array.isArray(provider)) {\n deepForEachProvider(provider, fn);\n }\n else {\n fn(provider);\n }\n }\n}\nconst USE_VALUE$1 = getClosureSafeProperty({\n provide: String,\n useValue: getClosureSafeProperty,\n});\nfunction isValueProvider(value) {\n return value !== null && typeof value == 'object' && USE_VALUE$1 in value;\n}\nfunction isExistingProvider(value) {\n return !!(value && value.useExisting);\n}\nfunction isFactoryProvider(value) {\n return !!(value && value.useFactory);\n}\nfunction isTypeProvider(value) {\n return typeof value === 'function';\n}\nfunction isClassProvider(value) {\n return !!value.useClass;\n}\n\n/**\n * An internal token whose presence in an injector indicates that the injector should treat itself\n * as a root scoped injector when processing requests for unknown tokens which may indicate\n * they are provided in the root scope.\n */\nconst INJECTOR_SCOPE = new InjectionToken(ngDevMode ? 'Set Injector scope.' : '');\n\n/**\n * Marker which indicates that a value has not yet been created from the factory function.\n */\nconst NOT_YET = {};\n/**\n * Marker which indicates that the factory function for a token is in the process of being called.\n *\n * If the injector is asked to inject a token with its value set to CIRCULAR, that indicates\n * injection of a dependency has recursively attempted to inject the original token, and there is\n * a circular dependency among the providers.\n */\nconst CIRCULAR = {};\n/**\n * A lazily initialized NullInjector.\n */\nlet NULL_INJECTOR = undefined;\nfunction getNullInjector() {\n if (NULL_INJECTOR === undefined) {\n NULL_INJECTOR = new NullInjector();\n }\n return NULL_INJECTOR;\n}\n/**\n * An `Injector` that's part of the environment injector hierarchy, which exists outside of the\n * component tree.\n */\nclass EnvironmentInjector {\n}\nclass R3Injector extends EnvironmentInjector {\n /**\n * Flag indicating that this injector was previously destroyed.\n */\n get destroyed() {\n return this._destroyed;\n }\n constructor(providers, parent, source, scopes) {\n super();\n this.parent = parent;\n this.source = source;\n this.scopes = scopes;\n /**\n * Map of tokens to records which contain the instances of those tokens.\n * - `null` value implies that we don't have the record. Used by tree-shakable injectors\n * to prevent further searches.\n */\n this.records = new Map();\n /**\n * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.\n */\n this._ngOnDestroyHooks = new Set();\n this._onDestroyHooks = [];\n this._destroyed = false;\n // Start off by creating Records for every provider.\n forEachSingleProvider(providers, (provider) => this.processProvider(provider));\n // Make sure the INJECTOR token provides this injector.\n this.records.set(INJECTOR$1, makeRecord(undefined, this));\n // And `EnvironmentInjector` if the current injector is supposed to be env-scoped.\n if (scopes.has('environment')) {\n this.records.set(EnvironmentInjector, makeRecord(undefined, this));\n }\n // Detect whether this injector has the APP_ROOT_SCOPE token and thus should provide\n // any injectable scoped to APP_ROOT_SCOPE.\n const record = this.records.get(INJECTOR_SCOPE);\n if (record != null && typeof record.value === 'string') {\n this.scopes.add(record.value);\n }\n this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, InjectFlags.Self));\n }\n /**\n * Destroy the injector and release references to every instance or provider associated with it.\n *\n * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a\n * hook was found.\n */\n destroy() {\n this.assertNotDestroyed();\n // Set destroyed = true first, in case lifecycle hooks re-enter destroy().\n this._destroyed = true;\n const prevConsumer = setActiveConsumer$1(null);\n try {\n // Call all the lifecycle hooks.\n for (const service of this._ngOnDestroyHooks) {\n service.ngOnDestroy();\n }\n const onDestroyHooks = this._onDestroyHooks;\n // Reset the _onDestroyHooks array before iterating over it to prevent hooks that unregister\n // themselves from mutating the array during iteration.\n this._onDestroyHooks = [];\n for (const hook of onDestroyHooks) {\n hook();\n }\n }\n finally {\n // Release all references.\n this.records.clear();\n this._ngOnDestroyHooks.clear();\n this.injectorDefTypes.clear();\n setActiveConsumer$1(prevConsumer);\n }\n }\n onDestroy(callback) {\n this.assertNotDestroyed();\n this._onDestroyHooks.push(callback);\n return () => this.removeOnDestroy(callback);\n }\n runInContext(fn) {\n this.assertNotDestroyed();\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });\n }\n try {\n return fn();\n }\n finally {\n setCurrentInjector(previousInjector);\n setInjectImplementation(previousInjectImplementation);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n }\n }\n get(token, notFoundValue = THROW_IF_NOT_FOUND, flags = InjectFlags.Default) {\n this.assertNotDestroyed();\n if (token.hasOwnProperty(NG_ENV_ID)) {\n return token[NG_ENV_ID](this);\n }\n flags = convertToBitFlags(flags);\n // Set the injection context.\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: token });\n }\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n // Check for the SkipSelf flag.\n if (!(flags & InjectFlags.SkipSelf)) {\n // SkipSelf isn't set, check if the record belongs to this injector.\n let record = this.records.get(token);\n if (record === undefined) {\n // No record, but maybe the token is scoped to this injector. Look for an injectable\n // def with a scope matching this injector.\n const def = couldBeInjectableType(token) && getInjectableDef(token);\n if (def && this.injectableDefInScope(def)) {\n // Found an injectable def and it's scoped to this injector. Pretend as if it was here\n // all along.\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n emitProviderConfiguredEvent(token);\n });\n }\n record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET);\n }\n else {\n record = null;\n }\n this.records.set(token, record);\n }\n // If a record was found, get the instance for it and return it.\n if (record != null /* NOT null || undefined */) {\n return this.hydrate(token, record);\n }\n }\n // Select the next injector based on the Self flag - if self is set, the next injector is\n // the NullInjector, otherwise it's the parent.\n const nextInjector = !(flags & InjectFlags.Self) ? this.parent : getNullInjector();\n // Set the notFoundValue based on the Optional flag - if optional is set and notFoundValue\n // is undefined, the value is null, otherwise it's the notFoundValue.\n notFoundValue =\n flags & InjectFlags.Optional && notFoundValue === THROW_IF_NOT_FOUND ? null : notFoundValue;\n return nextInjector.get(token, notFoundValue);\n }\n catch (e) {\n if (e.name === 'NullInjectorError') {\n const path = (e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || []);\n path.unshift(stringify(token));\n if (previousInjector) {\n // We still have a parent injector, keep throwing\n throw e;\n }\n else {\n // Format & throw the final error message when we don't have any previous injector\n return catchInjectorError(e, token, 'R3InjectorError', this.source);\n }\n }\n else {\n throw e;\n }\n }\n finally {\n // Lastly, restore the previous injection context.\n setInjectImplementation(previousInjectImplementation);\n setCurrentInjector(previousInjector);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n }\n }\n /** @internal */\n resolveInjectorInitializers() {\n const prevConsumer = setActiveConsumer$1(null);\n const previousInjector = setCurrentInjector(this);\n const previousInjectImplementation = setInjectImplementation(undefined);\n let prevInjectContext;\n if (ngDevMode) {\n prevInjectContext = setInjectorProfilerContext({ injector: this, token: null });\n }\n try {\n const initializers = this.get(ENVIRONMENT_INITIALIZER, EMPTY_ARRAY, InjectFlags.Self);\n if (ngDevMode && !Array.isArray(initializers)) {\n throw new RuntimeError(-209 /* RuntimeErrorCode.INVALID_MULTI_PROVIDER */, 'Unexpected type of the `ENVIRONMENT_INITIALIZER` token value ' +\n `(expected an array, but got ${typeof initializers}). ` +\n 'Please check that the `ENVIRONMENT_INITIALIZER` token is configured as a ' +\n '`multi: true` provider.');\n }\n for (const initializer of initializers) {\n initializer();\n }\n }\n finally {\n setCurrentInjector(previousInjector);\n setInjectImplementation(previousInjectImplementation);\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n setActiveConsumer$1(prevConsumer);\n }\n }\n toString() {\n const tokens = [];\n const records = this.records;\n for (const token of records.keys()) {\n tokens.push(stringify(token));\n }\n return `R3Injector[${tokens.join(', ')}]`;\n }\n assertNotDestroyed() {\n if (this._destroyed) {\n throw new RuntimeError(205 /* RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED */, ngDevMode && 'Injector has already been destroyed.');\n }\n }\n /**\n * Process a `SingleProvider` and add it.\n */\n processProvider(provider) {\n // Determine the token from the provider. Either it's its own token, or has a {provide: ...}\n // property.\n provider = resolveForwardRef(provider);\n let token = isTypeProvider(provider)\n ? provider\n : resolveForwardRef(provider && provider.provide);\n // Construct a `Record` for the provider.\n const record = providerToRecord(provider);\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n // Emit InjectorProfilerEventType.Create if provider is a value provider because\n // these are the only providers that do not go through the value hydration logic\n // where this event would normally be emitted from.\n if (isValueProvider(provider)) {\n emitInstanceCreatedByInjectorEvent(provider.useValue);\n }\n emitProviderConfiguredEvent(provider);\n });\n }\n if (!isTypeProvider(provider) && provider.multi === true) {\n // If the provider indicates that it's a multi-provider, process it specially.\n // First check whether it's been defined already.\n let multiRecord = this.records.get(token);\n if (multiRecord) {\n // It has. Throw a nice error if\n if (ngDevMode && multiRecord.multi === undefined) {\n throwMixedMultiProviderError();\n }\n }\n else {\n multiRecord = makeRecord(undefined, NOT_YET, true);\n multiRecord.factory = () => injectArgs(multiRecord.multi);\n this.records.set(token, multiRecord);\n }\n token = provider;\n multiRecord.multi.push(provider);\n }\n else {\n if (ngDevMode) {\n const existing = this.records.get(token);\n if (existing && existing.multi !== undefined) {\n throwMixedMultiProviderError();\n }\n }\n }\n this.records.set(token, record);\n }\n hydrate(token, record) {\n const prevConsumer = setActiveConsumer$1(null);\n try {\n if (ngDevMode && record.value === CIRCULAR) {\n throwCyclicDependencyError(stringify(token));\n }\n else if (record.value === NOT_YET) {\n record.value = CIRCULAR;\n if (ngDevMode) {\n runInInjectorProfilerContext(this, token, () => {\n record.value = record.factory();\n emitInstanceCreatedByInjectorEvent(record.value);\n });\n }\n else {\n record.value = record.factory();\n }\n }\n if (typeof record.value === 'object' && record.value && hasOnDestroy(record.value)) {\n this._ngOnDestroyHooks.add(record.value);\n }\n return record.value;\n }\n finally {\n setActiveConsumer$1(prevConsumer);\n }\n }\n injectableDefInScope(def) {\n if (!def.providedIn) {\n return false;\n }\n const providedIn = resolveForwardRef(def.providedIn);\n if (typeof providedIn === 'string') {\n return providedIn === 'any' || this.scopes.has(providedIn);\n }\n else {\n return this.injectorDefTypes.has(providedIn);\n }\n }\n removeOnDestroy(callback) {\n const destroyCBIdx = this._onDestroyHooks.indexOf(callback);\n if (destroyCBIdx !== -1) {\n this._onDestroyHooks.splice(destroyCBIdx, 1);\n }\n }\n}\nfunction injectableDefOrInjectorDefFactory(token) {\n // Most tokens will have an injectable def directly on them, which specifies a factory directly.\n const injectableDef = getInjectableDef(token);\n const factory = injectableDef !== null ? injectableDef.factory : getFactoryDef(token);\n if (factory !== null) {\n return factory;\n }\n // InjectionTokens should have an injectable def (ɵprov) and thus should be handled above.\n // If it's missing that, it's an error.\n if (token instanceof InjectionToken) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`);\n }\n // Undecorated types can sometimes be created if they have no constructor arguments.\n if (token instanceof Function) {\n return getUndecoratedInjectableFactory(token);\n }\n // There was no way to resolve a factory for this token.\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && 'unreachable');\n}\nfunction getUndecoratedInjectableFactory(token) {\n // If the token has parameters then it has dependencies that we cannot resolve implicitly.\n const paramLength = token.length;\n if (paramLength > 0) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&\n `Can't resolve all parameters for ${stringify(token)}: (${newArray(paramLength, '?').join(', ')}).`);\n }\n // The constructor function appears to have no parameters.\n // This might be because it inherits from a super-class. In which case, use an injectable\n // def from an ancestor if there is one.\n // Otherwise this really is a simple class with no dependencies, so return a factory that\n // just instantiates the zero-arg constructor.\n const inheritedInjectableDef = getInheritedInjectableDef(token);\n if (inheritedInjectableDef !== null) {\n return () => inheritedInjectableDef.factory(token);\n }\n else {\n return () => new token();\n }\n}\nfunction providerToRecord(provider) {\n if (isValueProvider(provider)) {\n return makeRecord(undefined, provider.useValue);\n }\n else {\n const factory = providerToFactory(provider);\n return makeRecord(factory, NOT_YET);\n }\n}\n/**\n * Converts a `SingleProvider` into a factory function.\n *\n * @param provider provider to convert to factory\n */\nfunction providerToFactory(provider, ngModuleType, providers) {\n let factory = undefined;\n if (ngDevMode && isEnvironmentProviders(provider)) {\n throwInvalidProviderError(undefined, providers, provider);\n }\n if (isTypeProvider(provider)) {\n const unwrappedProvider = resolveForwardRef(provider);\n return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider);\n }\n else {\n if (isValueProvider(provider)) {\n factory = () => resolveForwardRef(provider.useValue);\n }\n else if (isFactoryProvider(provider)) {\n factory = () => provider.useFactory(...injectArgs(provider.deps || []));\n }\n else if (isExistingProvider(provider)) {\n factory = () => ɵɵinject(resolveForwardRef(provider.useExisting));\n }\n else {\n const classRef = resolveForwardRef(provider &&\n (provider.useClass || provider.provide));\n if (ngDevMode && !classRef) {\n throwInvalidProviderError(ngModuleType, providers, provider);\n }\n if (hasDeps(provider)) {\n factory = () => new classRef(...injectArgs(provider.deps));\n }\n else {\n return getFactoryDef(classRef) || injectableDefOrInjectorDefFactory(classRef);\n }\n }\n }\n return factory;\n}\nfunction makeRecord(factory, value, multi = false) {\n return {\n factory: factory,\n value: value,\n multi: multi ? [] : undefined,\n };\n}\nfunction hasDeps(value) {\n return !!value.deps;\n}\nfunction hasOnDestroy(value) {\n return (value !== null &&\n typeof value === 'object' &&\n typeof value.ngOnDestroy === 'function');\n}\nfunction couldBeInjectableType(value) {\n return (typeof value === 'function' || (typeof value === 'object' && value instanceof InjectionToken));\n}\nfunction forEachSingleProvider(providers, fn) {\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n forEachSingleProvider(provider, fn);\n }\n else if (provider && isEnvironmentProviders(provider)) {\n forEachSingleProvider(provider.ɵproviders, fn);\n }\n else {\n fn(provider);\n }\n }\n}\n\n/**\n * Runs the given function in the [context](guide/di/dependency-injection-context) of the given\n * `Injector`.\n *\n * Within the function's stack frame, [`inject`](api/core/inject) can be used to inject dependencies\n * from the given `Injector`. Note that `inject` is only usable synchronously, and cannot be used in\n * any asynchronous callbacks or after any `await` points.\n *\n * @param injector the injector which will satisfy calls to [`inject`](api/core/inject) while `fn`\n * is executing\n * @param fn the closure to be run in the context of `injector`\n * @returns the return value of the function, if any\n * @publicApi\n */\nfunction runInInjectionContext(injector, fn) {\n if (injector instanceof R3Injector) {\n injector.assertNotDestroyed();\n }\n let prevInjectorProfilerContext;\n if (ngDevMode) {\n prevInjectorProfilerContext = setInjectorProfilerContext({ injector, token: null });\n }\n const prevInjector = setCurrentInjector(injector);\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n return fn();\n }\n finally {\n setCurrentInjector(prevInjector);\n ngDevMode && setInjectorProfilerContext(prevInjectorProfilerContext);\n setInjectImplementation(previousInjectImplementation);\n }\n}\n/**\n * Whether the current stack frame is inside an injection context.\n */\nfunction isInInjectionContext() {\n return getInjectImplementation() !== undefined || getCurrentInjector() != null;\n}\n/**\n * Asserts that the current stack frame is within an [injection\n * context](guide/di/dependency-injection-context) and has access to `inject`.\n *\n * @param debugFn a reference to the function making the assertion (used for the error message).\n *\n * @publicApi\n */\nfunction assertInInjectionContext(debugFn) {\n // Taking a `Function` instead of a string name here prevents the unminified name of the function\n // from being retained in the bundle regardless of minification.\n if (!isInInjectionContext()) {\n throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&\n debugFn.name +\n '() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`');\n }\n}\n\nvar FactoryTarget;\n(function (FactoryTarget) {\n FactoryTarget[FactoryTarget[\"Directive\"] = 0] = \"Directive\";\n FactoryTarget[FactoryTarget[\"Component\"] = 1] = \"Component\";\n FactoryTarget[FactoryTarget[\"Injectable\"] = 2] = \"Injectable\";\n FactoryTarget[FactoryTarget[\"Pipe\"] = 3] = \"Pipe\";\n FactoryTarget[FactoryTarget[\"NgModule\"] = 4] = \"NgModule\";\n})(FactoryTarget || (FactoryTarget = {}));\nvar R3TemplateDependencyKind;\n(function (R3TemplateDependencyKind) {\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Directive\"] = 0] = \"Directive\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Pipe\"] = 1] = \"Pipe\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"NgModule\"] = 2] = \"NgModule\";\n})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {}));\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\n\nfunction getCompilerFacade(request) {\n const globalNg = _global['ng'];\n if (globalNg && globalNg.ɵcompilerFacade) {\n return globalNg.ɵcompilerFacade;\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Log the type as an error so that a developer can easily navigate to the type from the\n // console.\n console.error(`JIT compilation failed for ${request.kind}`, request.type);\n let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available.\\n\\n`;\n if (request.usage === 1 /* JitCompilerUsage.PartialDeclaration */) {\n message += `The ${request.kind} is part of a library that has been partially compiled.\\n`;\n message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback.\\n`;\n message += '\\n';\n message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled.\\n`;\n }\n else {\n message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead.\\n`;\n }\n message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server',\\n`;\n message += `or manually provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.`;\n throw new Error(message);\n }\n else {\n throw new Error('JIT compiler unavailable');\n }\n}\n\n/**\n * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.\n *\n * This should be kept up to date with the public exports of @angular/core.\n */\nconst angularCoreDiEnv = {\n 'ɵɵdefineInjectable': ɵɵdefineInjectable,\n 'ɵɵdefineInjector': ɵɵdefineInjector,\n 'ɵɵinject': ɵɵinject,\n 'ɵɵinvalidFactoryDep': ɵɵinvalidFactoryDep,\n 'resolveForwardRef': resolveForwardRef,\n};\n\n/**\n * @description\n *\n * Represents a type that a Component or other object is instances of.\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by\n * the `MyCustomComponent` constructor function.\n *\n * @publicApi\n */\nconst Type = Function;\nfunction isType(v) {\n return typeof v === 'function';\n}\n\n/*\n * #########################\n * Attention: These Regular expressions have to hold even if the code is minified!\n * ##########################\n */\n/**\n * Regular expression that detects pass-through constructors for ES5 output. This Regex\n * intends to capture the common delegation pattern emitted by TypeScript and Babel. Also\n * it intends to capture the pattern where existing constructors have been downleveled from\n * ES2015 to ES5 using TypeScript w/ downlevel iteration. e.g.\n *\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, arguments) || this;\n * ```\n *\n * downleveled to ES5 with `downlevelIteration` for TypeScript < 4.2:\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, __spread(arguments)) || this;\n * ```\n *\n * or downleveled to ES5 with `downlevelIteration` for TypeScript >= 4.2:\n * ```\n * function MyClass() {\n * var _this = _super.apply(this, __spreadArray([], __read(arguments), false)) || this;\n * ```\n *\n * More details can be found in: https://github.com/angular/angular/issues/38453.\n */\nconst ES5_DELEGATE_CTOR = /^function\\s+\\S+\\(\\)\\s*{[\\s\\S]+\\.apply\\(this,\\s*(arguments|(?:[^()]+\\(\\[\\],)?[^()]+\\(arguments\\).*)\\)/;\n/** Regular expression that detects ES2015 classes which extend from other classes. */\nconst ES2015_INHERITED_CLASS = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes and\n * have an explicit constructor defined.\n */\nconst ES2015_INHERITED_CLASS_WITH_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(/;\n/**\n * Regular expression that detects ES2015 classes which extend from other classes\n * and inherit a constructor.\n */\nconst ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\\s+[A-Za-z\\d$_]*\\s*extends\\s+[^{]+{[\\s\\S]*constructor\\s*\\(\\)\\s*{[^}]*super\\(\\.\\.\\.arguments\\)/;\n/**\n * Determine whether a stringified type is a class which delegates its constructor\n * to its parent.\n *\n * This is not trivial since compiled code can actually contain a constructor function\n * even if the original source code did not. For instance, when the child class contains\n * an initialized instance property.\n */\nfunction isDelegateCtor(typeStr) {\n return (ES5_DELEGATE_CTOR.test(typeStr) ||\n ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) ||\n (ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr)));\n}\nclass ReflectionCapabilities {\n constructor(reflect) {\n this._reflect = reflect || _global['Reflect'];\n }\n factory(t) {\n return (...args) => new t(...args);\n }\n /** @internal */\n _zipTypesAndAnnotations(paramTypes, paramAnnotations) {\n let result;\n if (typeof paramTypes === 'undefined') {\n result = newArray(paramAnnotations.length);\n }\n else {\n result = newArray(paramTypes.length);\n }\n for (let i = 0; i < result.length; i++) {\n // TS outputs Object for parameters without types, while Traceur omits\n // the annotations. For now we preserve the Traceur behavior to aid\n // migration, but this can be revisited.\n if (typeof paramTypes === 'undefined') {\n result[i] = [];\n }\n else if (paramTypes[i] && paramTypes[i] != Object) {\n result[i] = [paramTypes[i]];\n }\n else {\n result[i] = [];\n }\n if (paramAnnotations && paramAnnotations[i] != null) {\n result[i] = result[i].concat(paramAnnotations[i]);\n }\n }\n return result;\n }\n _ownParameters(type, parentCtor) {\n const typeStr = type.toString();\n // If we have no decorators, we only have function.length as metadata.\n // In that case, to detect whether a child class declared an own constructor or not,\n // we need to look inside of that constructor to check whether it is\n // just calling the parent.\n // This also helps to work around for https://github.com/Microsoft/TypeScript/issues/12439\n // that sets 'design:paramtypes' to []\n // if a class inherits from another class but has no ctor declared itself.\n if (isDelegateCtor(typeStr)) {\n return null;\n }\n // Prefer the direct API.\n if (type.parameters && type.parameters !== parentCtor.parameters) {\n return type.parameters;\n }\n // API of tsickle for lowering decorators to properties on the class.\n const tsickleCtorParams = type.ctorParameters;\n if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) {\n // Newer tsickle uses a function closure\n // Retain the non-function case for compatibility with older tsickle\n const ctorParameters = typeof tsickleCtorParams === 'function' ? tsickleCtorParams() : tsickleCtorParams;\n const paramTypes = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type);\n const paramAnnotations = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators));\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // API for metadata created by invoking the decorators.\n const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS];\n const paramTypes = this._reflect &&\n this._reflect.getOwnMetadata &&\n this._reflect.getOwnMetadata('design:paramtypes', type);\n if (paramTypes || paramAnnotations) {\n return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);\n }\n // If a class has no decorators, at least create metadata\n // based on function.length.\n // Note: We know that this is a real constructor as we checked\n // the content of the constructor above.\n return newArray(type.length);\n }\n parameters(type) {\n // Note: only report metadata if we have at least one class decorator\n // to stay in sync with the static reflector.\n if (!isType(type)) {\n return [];\n }\n const parentCtor = getParentCtor(type);\n let parameters = this._ownParameters(type, parentCtor);\n if (!parameters && parentCtor !== Object) {\n parameters = this.parameters(parentCtor);\n }\n return parameters || [];\n }\n _ownAnnotations(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) {\n let annotations = typeOrFunc.annotations;\n if (typeof annotations === 'function' && annotations.annotations) {\n annotations = annotations.annotations;\n }\n return annotations;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) {\n return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators);\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n return typeOrFunc[ANNOTATIONS];\n }\n return null;\n }\n annotations(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return [];\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : [];\n return parentAnnotations.concat(ownAnnotations);\n }\n _ownPropMetadata(typeOrFunc, parentCtor) {\n // Prefer the direct API.\n if (typeOrFunc.propMetadata &&\n typeOrFunc.propMetadata !== parentCtor.propMetadata) {\n let propMetadata = typeOrFunc.propMetadata;\n if (typeof propMetadata === 'function' && propMetadata.propMetadata) {\n propMetadata = propMetadata.propMetadata;\n }\n return propMetadata;\n }\n // API of tsickle for lowering decorators to properties on the class.\n if (typeOrFunc.propDecorators &&\n typeOrFunc.propDecorators !== parentCtor.propDecorators) {\n const propDecorators = typeOrFunc.propDecorators;\n const propMetadata = {};\n Object.keys(propDecorators).forEach((prop) => {\n propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]);\n });\n return propMetadata;\n }\n // API for metadata created by invoking the decorators.\n if (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n return typeOrFunc[PROP_METADATA];\n }\n return null;\n }\n propMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n const parentCtor = getParentCtor(typeOrFunc);\n const propMetadata = {};\n if (parentCtor !== Object) {\n const parentPropMetadata = this.propMetadata(parentCtor);\n Object.keys(parentPropMetadata).forEach((propName) => {\n propMetadata[propName] = parentPropMetadata[propName];\n });\n }\n const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n if (ownPropMetadata) {\n Object.keys(ownPropMetadata).forEach((propName) => {\n const decorators = [];\n if (propMetadata.hasOwnProperty(propName)) {\n decorators.push(...propMetadata[propName]);\n }\n decorators.push(...ownPropMetadata[propName]);\n propMetadata[propName] = decorators;\n });\n }\n return propMetadata;\n }\n ownPropMetadata(typeOrFunc) {\n if (!isType(typeOrFunc)) {\n return {};\n }\n return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {};\n }\n hasLifecycleHook(type, lcProperty) {\n return type instanceof Type && lcProperty in type.prototype;\n }\n}\nfunction convertTsickleDecoratorIntoMetadata(decoratorInvocations) {\n if (!decoratorInvocations) {\n return [];\n }\n return decoratorInvocations.map((decoratorInvocation) => {\n const decoratorType = decoratorInvocation.type;\n const annotationCls = decoratorType.annotationCls;\n const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : [];\n return new annotationCls(...annotationArgs);\n });\n}\nfunction getParentCtor(ctor) {\n const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null;\n const parentCtor = parentProto ? parentProto.constructor : null;\n // Note: We always use `Object` as the null value\n // to simplify checking later on.\n return parentCtor || Object;\n}\n\n// Below are constants for LView indices to help us look up LView members\n// without having to remember the specific indices.\n// Uglify will inline these when minifying so there shouldn't be a cost.\nconst HOST = 0;\nconst TVIEW = 1;\n// Shared with LContainer\nconst FLAGS = 2;\nconst PARENT = 3;\nconst NEXT = 4;\nconst T_HOST = 5;\n// End shared with LContainer\nconst HYDRATION = 6;\nconst CLEANUP = 7;\nconst CONTEXT = 8;\nconst INJECTOR = 9;\nconst ENVIRONMENT = 10;\nconst RENDERER = 11;\nconst CHILD_HEAD = 12;\nconst CHILD_TAIL = 13;\n// FIXME(misko): Investigate if the three declarations aren't all same thing.\nconst DECLARATION_VIEW = 14;\nconst DECLARATION_COMPONENT_VIEW = 15;\nconst DECLARATION_LCONTAINER = 16;\nconst PREORDER_HOOK_FLAGS = 17;\nconst QUERIES = 18;\nconst ID = 19;\nconst EMBEDDED_VIEW_INJECTOR = 20;\nconst ON_DESTROY_HOOKS = 21;\nconst EFFECTS_TO_SCHEDULE = 22;\nconst REACTIVE_TEMPLATE_CONSUMER = 23;\n/**\n * Size of LView's header. Necessary to adjust for it when setting slots.\n *\n * IMPORTANT: `HEADER_OFFSET` should only be referred to the in the `ɵɵ*` instructions to translate\n * instruction index into `LView` index. All other indexes should be in the `LView` index space and\n * there should be no need to refer to `HEADER_OFFSET` anywhere else.\n */\nconst HEADER_OFFSET = 25;\n\n/**\n * Special location which allows easy identification of type. If we have an array which was\n * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is\n * `LContainer`.\n */\nconst TYPE = 1;\n/**\n * Below are constants for LContainer indices to help us look up LContainer members\n * without having to remember the specific indices.\n * Uglify will inline these when minifying so there shouldn't be a cost.\n */\n// FLAGS, PARENT, NEXT, and T_HOST are indices 2, 3, 4, and 5\n// As we already have these constants in LView, we don't need to re-create them.\nconst DEHYDRATED_VIEWS = 6;\nconst NATIVE = 7;\nconst VIEW_REFS = 8;\nconst MOVED_VIEWS = 9;\n/**\n * Size of LContainer's header. Represents the index after which all views in the\n * container will be inserted. We need to keep a record of current views so we know\n * which views are already in the DOM (and don't need to be re-added) and so we can\n * remove views from the DOM when they are no longer required.\n */\nconst CONTAINER_HEADER_OFFSET = 10;\n/** Flags associated with an LContainer (saved in LContainer[FLAGS]) */\nvar LContainerFlags;\n(function (LContainerFlags) {\n LContainerFlags[LContainerFlags[\"None\"] = 0] = \"None\";\n /**\n * Flag to signify that this `LContainer` may have transplanted views which need to be change\n * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.\n *\n * This flag, once set, is never unset for the `LContainer`.\n */\n LContainerFlags[LContainerFlags[\"HasTransplantedViews\"] = 2] = \"HasTransplantedViews\";\n})(LContainerFlags || (LContainerFlags = {}));\n\n/**\n * True if `value` is `LView`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLView(value) {\n return Array.isArray(value) && typeof value[TYPE] === 'object';\n}\n/**\n * True if `value` is `LContainer`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction isLContainer(value) {\n return Array.isArray(value) && value[TYPE] === true;\n}\nfunction isContentQueryHost(tNode) {\n return (tNode.flags & 4 /* TNodeFlags.hasContentQuery */) !== 0;\n}\nfunction isComponentHost(tNode) {\n return tNode.componentOffset > -1;\n}\nfunction isDirectiveHost(tNode) {\n return (tNode.flags & 1 /* TNodeFlags.isDirectiveHost */) === 1 /* TNodeFlags.isDirectiveHost */;\n}\nfunction isComponentDef(def) {\n return !!def.template;\n}\nfunction isRootView(target) {\n return (target[FLAGS] & 512 /* LViewFlags.IsRoot */) !== 0;\n}\nfunction isProjectionTNode(tNode) {\n return (tNode.type & 16 /* TNodeType.Projection */) === 16 /* TNodeType.Projection */;\n}\nfunction hasI18n(lView) {\n return (lView[FLAGS] & 32 /* LViewFlags.HasI18n */) === 32 /* LViewFlags.HasI18n */;\n}\nfunction isDestroyed(lView) {\n return (lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */;\n}\n\n// [Assert functions do not constraint type when they are guarded by a truthy\n// expression.](https://github.com/microsoft/TypeScript/issues/37295)\nfunction assertTNodeForLView(tNode, lView) {\n assertTNodeForTView(tNode, lView[TVIEW]);\n}\nfunction assertTNodeForTView(tNode, tView) {\n assertTNode(tNode);\n const tData = tView.data;\n for (let i = HEADER_OFFSET; i < tData.length; i++) {\n if (tData[i] === tNode) {\n return;\n }\n }\n throwError('This TNode does not belong to this TView.');\n}\nfunction assertTNode(tNode) {\n assertDefined(tNode, 'TNode must be defined');\n if (!(tNode && typeof tNode === 'object' && tNode.hasOwnProperty('directiveStylingLast'))) {\n throwError('Not of type TNode, got: ' + tNode);\n }\n}\nfunction assertTIcu(tIcu) {\n assertDefined(tIcu, 'Expected TIcu to be defined');\n if (!(typeof tIcu.currentCaseLViewIndex === 'number')) {\n throwError('Object is not of TIcu type.');\n }\n}\nfunction assertComponentType(actual, msg = \"Type passed in is not ComponentType, it does not have 'ɵcmp' property.\") {\n if (!getComponentDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertNgModuleType(actual, msg = \"Type passed in is not NgModuleType, it does not have 'ɵmod' property.\") {\n if (!getNgModuleDef(actual)) {\n throwError(msg);\n }\n}\nfunction assertCurrentTNodeIsParent(isParent) {\n assertEqual(isParent, true, 'currentTNode should be a parent');\n}\nfunction assertHasParent(tNode) {\n assertDefined(tNode, 'currentTNode should exist!');\n assertDefined(tNode.parent, 'currentTNode should have a parent');\n}\nfunction assertLContainer(value) {\n assertDefined(value, 'LContainer must be defined');\n assertEqual(isLContainer(value), true, 'Expecting LContainer');\n}\nfunction assertLViewOrUndefined(value) {\n value && assertEqual(isLView(value), true, 'Expecting LView or undefined or null');\n}\nfunction assertLView(value) {\n assertDefined(value, 'LView must be defined');\n assertEqual(isLView(value), true, 'Expecting LView');\n}\nfunction assertFirstCreatePass(tView, errMessage) {\n assertEqual(tView.firstCreatePass, true, errMessage || 'Should only be called in first create pass.');\n}\nfunction assertFirstUpdatePass(tView, errMessage) {\n assertEqual(tView.firstUpdatePass, true, errMessage || 'Should only be called in first update pass.');\n}\n/**\n * This is a basic sanity check that an object is probably a directive def. DirectiveDef is\n * an interface, so we can't do a direct instanceof check.\n */\nfunction assertDirectiveDef(obj) {\n if (obj.type === undefined || obj.selectors == undefined || obj.inputs === undefined) {\n throwError(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`);\n }\n}\nfunction assertIndexInDeclRange(tView, index) {\n assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index);\n}\nfunction assertIndexInExpandoRange(lView, index) {\n const tView = lView[1];\n assertBetween(tView.expandoStartIndex, lView.length, index);\n}\nfunction assertBetween(lower, upper, index) {\n if (!(lower <= index && index < upper)) {\n throwError(`Index out of range (expecting ${lower} <= ${index} < ${upper})`);\n }\n}\nfunction assertProjectionSlots(lView, errMessage) {\n assertDefined(lView[DECLARATION_COMPONENT_VIEW], 'Component views should exist.');\n assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, errMessage ||\n 'Components with projection nodes () must have projection slots defined.');\n}\nfunction assertParentView(lView, errMessage) {\n assertDefined(lView, errMessage || \"Component views should always have a parent view (component's host view)\");\n}\nfunction assertNoDuplicateDirectives(directives) {\n // The array needs at least two elements in order to have duplicates.\n if (directives.length < 2) {\n return;\n }\n const seenDirectives = new Set();\n for (const current of directives) {\n if (seenDirectives.has(current)) {\n throw new RuntimeError(309 /* RuntimeErrorCode.DUPLICATE_DIRECTIVE */, `Directive ${current.type.name} matches multiple times on the same element. ` +\n `Directives can only match an element once.`);\n }\n seenDirectives.add(current);\n }\n}\n/**\n * This is a basic sanity check that the `injectorIndex` seems to point to what looks like a\n * NodeInjector data structure.\n *\n * @param lView `LView` which should be checked.\n * @param injectorIndex index into the `LView` where the `NodeInjector` is expected.\n */\nfunction assertNodeInjector(lView, injectorIndex) {\n assertIndexInExpandoRange(lView, injectorIndex);\n assertIndexInExpandoRange(lView, injectorIndex + 8 /* NodeInjectorOffset.PARENT */);\n assertNumber(lView[injectorIndex + 0], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 1], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 2], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 3], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 4], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 5], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 6], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 7], 'injectorIndex should point to a bloom filter');\n assertNumber(lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */], 'injectorIndex should point to parent injector');\n}\n\n/**\n * Represents a basic change from a previous to a new value for a single\n * property on a directive instance. Passed as a value in a\n * {@link SimpleChanges} object to the `ngOnChanges` hook.\n *\n * @see {@link OnChanges}\n *\n * @publicApi\n */\nclass SimpleChange {\n constructor(previousValue, currentValue, firstChange) {\n this.previousValue = previousValue;\n this.currentValue = currentValue;\n this.firstChange = firstChange;\n }\n /**\n * Check whether the new value is the first value assigned.\n */\n isFirstChange() {\n return this.firstChange;\n }\n}\n\nfunction applyValueToInputField(instance, inputSignalNode, privateName, value) {\n if (inputSignalNode !== null) {\n inputSignalNode.applyValueToInputSignal(inputSignalNode, value);\n }\n else {\n instance[privateName] = value;\n }\n}\n\n/**\n * The NgOnChangesFeature decorates a component with support for the ngOnChanges\n * lifecycle hook, so it should be included in any component that implements\n * that hook.\n *\n * If the component or directive uses inheritance, the NgOnChangesFeature MUST\n * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise\n * inherited properties will not be propagated to the ngOnChanges lifecycle\n * hook.\n *\n * Example usage:\n *\n * ```\n * static ɵcmp = defineComponent({\n * ...\n * inputs: {name: 'publicName'},\n * features: [NgOnChangesFeature]\n * });\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵNgOnChangesFeature() {\n return NgOnChangesFeatureImpl;\n}\nfunction NgOnChangesFeatureImpl(definition) {\n if (definition.type.prototype.ngOnChanges) {\n definition.setInput = ngOnChangesSetInput;\n }\n return rememberChangeHistoryAndInvokeOnChangesHook;\n}\n// This option ensures that the ngOnChanges lifecycle hook will be inherited\n// from superclasses (in InheritDefinitionFeature).\n/** @nocollapse */\n// tslint:disable-next-line:no-toplevel-property-access\nɵɵNgOnChangesFeature.ngInherit = true;\n/**\n * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate\n * `ngOnChanges`.\n *\n * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are\n * found it invokes `ngOnChanges` on the component instance.\n *\n * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,\n * it is guaranteed to be called with component instance.\n */\nfunction rememberChangeHistoryAndInvokeOnChangesHook() {\n const simpleChangesStore = getSimpleChangesStore(this);\n const current = simpleChangesStore?.current;\n if (current) {\n const previous = simpleChangesStore.previous;\n if (previous === EMPTY_OBJ) {\n simpleChangesStore.previous = current;\n }\n else {\n // New changes are copied to the previous store, so that we don't lose history for inputs\n // which were not changed this time\n for (let key in current) {\n previous[key] = current[key];\n }\n }\n simpleChangesStore.current = null;\n this.ngOnChanges(current);\n }\n}\nfunction ngOnChangesSetInput(instance, inputSignalNode, value, publicName, privateName) {\n const declaredName = this.declaredInputs[publicName];\n ngDevMode && assertString(declaredName, 'Name of input in ngOnChanges has to be a string');\n const simpleChangesStore = getSimpleChangesStore(instance) ||\n setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null });\n const current = simpleChangesStore.current || (simpleChangesStore.current = {});\n const previous = simpleChangesStore.previous;\n const previousChange = previous[declaredName];\n current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);\n applyValueToInputField(instance, inputSignalNode, privateName, value);\n}\nconst SIMPLE_CHANGES_STORE = '__ngSimpleChanges__';\nfunction getSimpleChangesStore(instance) {\n return instance[SIMPLE_CHANGES_STORE] || null;\n}\nfunction setSimpleChangesStore(instance, store) {\n return (instance[SIMPLE_CHANGES_STORE] = store);\n}\n\nlet profilerCallback = null;\n/**\n * Sets the callback function which will be invoked before and after performing certain actions at\n * runtime (for example, before and after running change detection).\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nconst setProfiler = (profiler) => {\n profilerCallback = profiler;\n};\n/**\n * Profiler function which wraps user code executed by the runtime.\n *\n * @param event ProfilerEvent corresponding to the execution context\n * @param instance component instance\n * @param hookOrListener lifecycle hook function or output listener. The value depends on the\n * execution context\n * @returns\n */\nconst profiler = function (event, instance, hookOrListener) {\n if (profilerCallback != null /* both `null` and `undefined` */) {\n profilerCallback(event, instance, hookOrListener);\n }\n};\n\nconst SVG_NAMESPACE = 'svg';\nconst MATH_ML_NAMESPACE = 'math';\n\n/**\n * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)\n * in same location in `LView`. This is because we don't want to pre-allocate space for it\n * because the storage is sparse. This file contains utilities for dealing with such data types.\n *\n * How do we know what is stored at a given location in `LView`.\n * - `Array.isArray(value) === false` => `RNode` (The normal storage value)\n * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.\n * - `typeof value[TYPE] === 'object'` => `LView`\n * - This happens when we have a component at a given location\n * - `typeof value[TYPE] === true` => `LContainer`\n * - This happens when we have `LContainer` binding at a given location.\n *\n *\n * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.\n */\n/**\n * Returns `RNode`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapRNode(value) {\n while (Array.isArray(value)) {\n value = value[HOST];\n }\n return value;\n}\n/**\n * Returns `LView` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nfunction unwrapLView(value) {\n while (Array.isArray(value)) {\n // This check is same as `isLView()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (typeof value[TYPE] === 'object')\n return value;\n value = value[HOST];\n }\n return null;\n}\n/**\n * Retrieves an element value from the provided `viewData`, by unwrapping\n * from any containers, component views, or style contexts.\n */\nfunction getNativeByIndex(index, lView) {\n ngDevMode && assertIndexInRange(lView, index);\n ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Expected to be past HEADER_OFFSET');\n return unwrapRNode(lView[index]);\n}\n/**\n * Retrieve an `RNode` for a given `TNode` and `LView`.\n *\n * This function guarantees in dev mode to retrieve a non-null `RNode`.\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNode(tNode, lView) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n ngDevMode && assertIndexInRange(lView, tNode.index);\n const node = unwrapRNode(lView[tNode.index]);\n return node;\n}\n/**\n * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.\n *\n * Some `TNode`s don't have associated `RNode`s. For example `Projection`\n *\n * @param tNode\n * @param lView\n */\nfunction getNativeByTNodeOrNull(tNode, lView) {\n const index = tNode === null ? -1 : tNode.index;\n if (index !== -1) {\n ngDevMode && assertTNodeForLView(tNode, lView);\n const node = unwrapRNode(lView[index]);\n return node;\n }\n return null;\n}\n// fixme(misko): The return Type should be `TNode|null`\nfunction getTNode(tView, index) {\n ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');\n ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');\n const tNode = tView.data[index];\n ngDevMode && tNode !== null && assertTNode(tNode);\n return tNode;\n}\n/** Retrieves a value from any `LView` or `TData`. */\nfunction load(view, index) {\n ngDevMode && assertIndexInRange(view, index);\n return view[index];\n}\nfunction getComponentLViewByIndex(nodeIndex, hostView) {\n // Could be an LView or an LContainer. If LContainer, unwrap to find LView.\n ngDevMode && assertIndexInRange(hostView, nodeIndex);\n const slotValue = hostView[nodeIndex];\n const lView = isLView(slotValue) ? slotValue : slotValue[HOST];\n return lView;\n}\n/** Checks whether a given view is in creation mode */\nfunction isCreationMode(view) {\n return (view[FLAGS] & 4 /* LViewFlags.CreationMode */) === 4 /* LViewFlags.CreationMode */;\n}\n/**\n * Returns a boolean for whether the view is attached to the change detection tree.\n *\n * Note: This determines whether a view should be checked, not whether it's inserted\n * into a container. For that, you'll want `viewAttachedToContainer` below.\n */\nfunction viewAttachedToChangeDetector(view) {\n return (view[FLAGS] & 128 /* LViewFlags.Attached */) === 128 /* LViewFlags.Attached */;\n}\n/** Returns a boolean for whether the view is attached to a container. */\nfunction viewAttachedToContainer(view) {\n return isLContainer(view[PARENT]);\n}\nfunction getConstant(consts, index) {\n if (index === null || index === undefined)\n return null;\n ngDevMode && assertIndexInRange(consts, index);\n return consts[index];\n}\n/**\n * Resets the pre-order hook flags of the view.\n * @param lView the LView on which the flags are reset\n */\nfunction resetPreOrderHookFlags(lView) {\n lView[PREORDER_HOOK_FLAGS] = 0;\n}\n/**\n * Adds the `RefreshView` flag from the lView and updates HAS_CHILD_VIEWS_TO_REFRESH flag of\n * parents.\n */\nfunction markViewForRefresh(lView) {\n if (lView[FLAGS] & 1024 /* LViewFlags.RefreshView */) {\n return;\n }\n lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;\n if (viewAttachedToChangeDetector(lView)) {\n markAncestorsForTraversal(lView);\n }\n}\n/**\n * Walks up the LView hierarchy.\n * @param nestingLevel Number of times to walk up in hierarchy.\n * @param currentView View from which to start the lookup.\n */\nfunction walkUpViews(nestingLevel, currentView) {\n while (nestingLevel > 0) {\n ngDevMode &&\n assertDefined(currentView[DECLARATION_VIEW], 'Declaration view should be defined if nesting level is greater than 0.');\n currentView = currentView[DECLARATION_VIEW];\n nestingLevel--;\n }\n return currentView;\n}\nfunction requiresRefreshOrTraversal(lView) {\n return !!(lView[FLAGS] & (1024 /* LViewFlags.RefreshView */ | 8192 /* LViewFlags.HasChildViewsToRefresh */) ||\n lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty);\n}\n/**\n * Updates the `HasChildViewsToRefresh` flag on the parents of the `LView` as well as the\n * parents above.\n */\nfunction updateAncestorTraversalFlagsOnAttach(lView) {\n lView[ENVIRONMENT].changeDetectionScheduler?.notify(8 /* NotificationSource.ViewAttached */);\n if (lView[FLAGS] & 64 /* LViewFlags.Dirty */) {\n lView[FLAGS] |= 1024 /* LViewFlags.RefreshView */;\n }\n if (requiresRefreshOrTraversal(lView)) {\n markAncestorsForTraversal(lView);\n }\n}\n/**\n * Ensures views above the given `lView` are traversed during change detection even when they are\n * not dirty.\n *\n * This is done by setting the `HAS_CHILD_VIEWS_TO_REFRESH` flag up to the root, stopping when the\n * flag is already `true` or the `lView` is detached.\n */\nfunction markAncestorsForTraversal(lView) {\n lView[ENVIRONMENT].changeDetectionScheduler?.notify(0 /* NotificationSource.MarkAncestorsForTraversal */);\n let parent = getLViewParent(lView);\n while (parent !== null) {\n // We stop adding markers to the ancestors once we reach one that already has the marker. This\n // is to avoid needlessly traversing all the way to the root when the marker already exists.\n if (parent[FLAGS] & 8192 /* LViewFlags.HasChildViewsToRefresh */) {\n break;\n }\n parent[FLAGS] |= 8192 /* LViewFlags.HasChildViewsToRefresh */;\n if (!viewAttachedToChangeDetector(parent)) {\n break;\n }\n parent = getLViewParent(parent);\n }\n}\n/**\n * Stores a LView-specific destroy callback.\n */\nfunction storeLViewOnDestroy(lView, onDestroyCallback) {\n if ((lView[FLAGS] & 256 /* LViewFlags.Destroyed */) === 256 /* LViewFlags.Destroyed */) {\n throw new RuntimeError(911 /* RuntimeErrorCode.VIEW_ALREADY_DESTROYED */, ngDevMode && 'View has already been destroyed.');\n }\n if (lView[ON_DESTROY_HOOKS] === null) {\n lView[ON_DESTROY_HOOKS] = [];\n }\n lView[ON_DESTROY_HOOKS].push(onDestroyCallback);\n}\n/**\n * Removes previously registered LView-specific destroy callback.\n */\nfunction removeLViewOnDestroy(lView, onDestroyCallback) {\n if (lView[ON_DESTROY_HOOKS] === null)\n return;\n const destroyCBIdx = lView[ON_DESTROY_HOOKS].indexOf(onDestroyCallback);\n if (destroyCBIdx !== -1) {\n lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1);\n }\n}\n/**\n * Gets the parent LView of the passed LView, if the PARENT is an LContainer, will get the parent of\n * that LContainer, which is an LView\n * @param lView the lView whose parent to get\n */\nfunction getLViewParent(lView) {\n ngDevMode && assertLView(lView);\n const parent = lView[PARENT];\n return isLContainer(parent) ? parent[PARENT] : parent;\n}\n\nconst instructionState = {\n lFrame: createLFrame(null),\n bindingsEnabled: true,\n skipHydrationRootTNode: null,\n};\nvar CheckNoChangesMode;\n(function (CheckNoChangesMode) {\n CheckNoChangesMode[CheckNoChangesMode[\"Off\"] = 0] = \"Off\";\n CheckNoChangesMode[CheckNoChangesMode[\"Exhaustive\"] = 1] = \"Exhaustive\";\n CheckNoChangesMode[CheckNoChangesMode[\"OnlyDirtyViews\"] = 2] = \"OnlyDirtyViews\";\n})(CheckNoChangesMode || (CheckNoChangesMode = {}));\n/**\n * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error.\n *\n * Necessary to support ChangeDetectorRef.checkNoChanges().\n *\n * The `checkNoChanges` function is invoked only in ngDevMode=true and verifies that no unintended\n * changes exist in the change detector or its children.\n */\nlet _checkNoChangesMode = 0; /* CheckNoChangesMode.Off */\n/**\n * Flag used to indicate that we are in the middle running change detection on a view\n *\n * @see detectChangesInViewWhileDirty\n */\nlet _isRefreshingViews = false;\n/**\n * Returns true if the instruction state stack is empty.\n *\n * Intended to be called from tests only (tree shaken otherwise).\n */\nfunction specOnlyIsInstructionStateEmpty() {\n return instructionState.lFrame.parent === null;\n}\nfunction getElementDepthCount() {\n return instructionState.lFrame.elementDepthCount;\n}\nfunction increaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount++;\n}\nfunction decreaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount--;\n}\nfunction getBindingsEnabled() {\n return instructionState.bindingsEnabled;\n}\n/**\n * Returns true if currently inside a skip hydration block.\n * @returns boolean\n */\nfunction isInSkipHydrationBlock$1() {\n return instructionState.skipHydrationRootTNode !== null;\n}\n/**\n * Returns true if this is the root TNode of the skip hydration block.\n * @param tNode the current TNode\n * @returns boolean\n */\nfunction isSkipHydrationRootTNode(tNode) {\n return instructionState.skipHydrationRootTNode === tNode;\n}\n/**\n * Enables directive matching on elements.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵenableBindings() {\n instructionState.bindingsEnabled = true;\n}\n/**\n * Sets a flag to specify that the TNode is in a skip hydration block.\n * @param tNode the current TNode\n */\nfunction enterSkipHydrationBlock(tNode) {\n instructionState.skipHydrationRootTNode = tNode;\n}\n/**\n * Disables directive matching on element.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
\n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
\n * ```\n *\n * @codeGenApi\n */\nfunction ɵɵdisableBindings() {\n instructionState.bindingsEnabled = false;\n}\n/**\n * Clears the root skip hydration node when leaving a skip hydration block.\n */\nfunction leaveSkipHydrationBlock() {\n instructionState.skipHydrationRootTNode = null;\n}\n/**\n * Return the current `LView`.\n */\nfunction getLView() {\n return instructionState.lFrame.lView;\n}\n/**\n * Return the current `TView`.\n */\nfunction getTView() {\n return instructionState.lFrame.tView;\n}\n/**\n * Restores `contextViewData` to the given OpaqueViewState instance.\n *\n * Used in conjunction with the getCurrentView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @param viewToRestore The OpaqueViewState instance to restore.\n * @returns Context of the restored OpaqueViewState instance.\n *\n * @codeGenApi\n */\nfunction ɵɵrestoreView(viewToRestore) {\n instructionState.lFrame.contextLView = viewToRestore;\n return viewToRestore[CONTEXT];\n}\n/**\n * Clears the view set in `ɵɵrestoreView` from memory. Returns the passed in\n * value so that it can be used as a return value of an instruction.\n *\n * @codeGenApi\n */\nfunction ɵɵresetView(value) {\n instructionState.lFrame.contextLView = null;\n return value;\n}\nfunction getCurrentTNode() {\n let currentTNode = getCurrentTNodePlaceholderOk();\n while (currentTNode !== null && currentTNode.type === 64 /* TNodeType.Placeholder */) {\n currentTNode = currentTNode.parent;\n }\n return currentTNode;\n}\nfunction getCurrentTNodePlaceholderOk() {\n return instructionState.lFrame.currentTNode;\n}\nfunction getCurrentParentTNode() {\n const lFrame = instructionState.lFrame;\n const currentTNode = lFrame.currentTNode;\n return lFrame.isParent ? currentTNode : currentTNode.parent;\n}\nfunction setCurrentTNode(tNode, isParent) {\n ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView);\n const lFrame = instructionState.lFrame;\n lFrame.currentTNode = tNode;\n lFrame.isParent = isParent;\n}\nfunction isCurrentTNodeParent() {\n return instructionState.lFrame.isParent;\n}\nfunction setCurrentTNodeAsNotParent() {\n instructionState.lFrame.isParent = false;\n}\nfunction getContextLView() {\n const contextLView = instructionState.lFrame.contextLView;\n ngDevMode && assertDefined(contextLView, 'contextLView must be defined.');\n return contextLView;\n}\nfunction isInCheckNoChangesMode() {\n !ngDevMode && throwError('Must never be called in production mode');\n return _checkNoChangesMode !== CheckNoChangesMode.Off;\n}\nfunction isExhaustiveCheckNoChanges() {\n !ngDevMode && throwError('Must never be called in production mode');\n return _checkNoChangesMode === CheckNoChangesMode.Exhaustive;\n}\nfunction setIsInCheckNoChangesMode(mode) {\n !ngDevMode && throwError('Must never be called in production mode');\n _checkNoChangesMode = mode;\n}\nfunction isRefreshingViews() {\n return _isRefreshingViews;\n}\nfunction setIsRefreshingViews(mode) {\n _isRefreshingViews = mode;\n}\n// top level variables should not be exported for performance reasons (PERF_NOTES.md)\nfunction getBindingRoot() {\n const lFrame = instructionState.lFrame;\n let index = lFrame.bindingRootIndex;\n if (index === -1) {\n index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex;\n }\n return index;\n}\nfunction getBindingIndex() {\n return instructionState.lFrame.bindingIndex;\n}\nfunction setBindingIndex(value) {\n return (instructionState.lFrame.bindingIndex = value);\n}\nfunction nextBindingIndex() {\n return instructionState.lFrame.bindingIndex++;\n}\nfunction incrementBindingIndex(count) {\n const lFrame = instructionState.lFrame;\n const index = lFrame.bindingIndex;\n lFrame.bindingIndex = lFrame.bindingIndex + count;\n return index;\n}\nfunction isInI18nBlock() {\n return instructionState.lFrame.inI18n;\n}\nfunction setInI18nBlock(isInI18nBlock) {\n instructionState.lFrame.inI18n = isInI18nBlock;\n}\n/**\n * Set a new binding root index so that host template functions can execute.\n *\n * Bindings inside the host template are 0 index. But because we don't know ahead of time\n * how many host bindings we have we can't pre-compute them. For this reason they are all\n * 0 index and we just shift the root so that they match next available location in the LView.\n *\n * @param bindingRootIndex Root index for `hostBindings`\n * @param currentDirectiveIndex `TData[currentDirectiveIndex]` will point to the current directive\n * whose `hostBindings` are being processed.\n */\nfunction setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) {\n const lFrame = instructionState.lFrame;\n lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex;\n setCurrentDirectiveIndex(currentDirectiveIndex);\n}\n/**\n * When host binding is executing this points to the directive index.\n * `TView.data[getCurrentDirectiveIndex()]` is `DirectiveDef`\n * `LView[getCurrentDirectiveIndex()]` is directive instance.\n */\nfunction getCurrentDirectiveIndex() {\n return instructionState.lFrame.currentDirectiveIndex;\n}\n/**\n * Sets an index of a directive whose `hostBindings` are being processed.\n *\n * @param currentDirectiveIndex `TData` index where current directive instance can be found.\n */\nfunction setCurrentDirectiveIndex(currentDirectiveIndex) {\n instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex;\n}\n/**\n * Retrieve the current `DirectiveDef` which is active when `hostBindings` instruction is being\n * executed.\n *\n * @param tData Current `TData` where the `DirectiveDef` will be looked up at.\n */\nfunction getCurrentDirectiveDef(tData) {\n const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex;\n return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex];\n}\nfunction getCurrentQueryIndex() {\n return instructionState.lFrame.currentQueryIndex;\n}\nfunction setCurrentQueryIndex(value) {\n instructionState.lFrame.currentQueryIndex = value;\n}\n/**\n * Returns a `TNode` of the location where the current `LView` is declared at.\n *\n * @param lView an `LView` that we want to find parent `TNode` for.\n */\nfunction getDeclarationTNode(lView) {\n const tView = lView[TVIEW];\n // Return the declaration parent for embedded views\n if (tView.type === 2 /* TViewType.Embedded */) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n // Falling back to `T_HOST` in case we cross component boundary.\n if (tView.type === 1 /* TViewType.Component */) {\n return lView[T_HOST];\n }\n // Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.\n return null;\n}\n/**\n * This is a light weight version of the `enterView` which is needed by the DI system.\n *\n * @param lView `LView` location of the DI context.\n * @param tNode `TNode` for DI context\n * @param flags DI context flags. if `SkipSelf` flag is set than we walk up the declaration\n * tree from `tNode` until we find parent declared `TElementNode`.\n * @returns `true` if we have successfully entered DI associated with `tNode` (or with declared\n * `TNode` if `flags` has `SkipSelf`). Failing to enter DI implies that no associated\n * `NodeInjector` can be found and we should instead use `ModuleInjector`.\n * - If `true` than this call must be fallowed by `leaveDI`\n * - If `false` than this call failed and we should NOT call `leaveDI`\n */\nfunction enterDI(lView, tNode, flags) {\n ngDevMode && assertLViewOrUndefined(lView);\n if (flags & InjectFlags.SkipSelf) {\n ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]);\n let parentTNode = tNode;\n let parentLView = lView;\n while (true) {\n ngDevMode && assertDefined(parentTNode, 'Parent TNode should be defined');\n parentTNode = parentTNode.parent;\n if (parentTNode === null && !(flags & InjectFlags.Host)) {\n parentTNode = getDeclarationTNode(parentLView);\n if (parentTNode === null)\n break;\n // In this case, a parent exists and is definitely an element. So it will definitely\n // have an existing lView as the declaration view, which is why we can assume it's defined.\n ngDevMode && assertDefined(parentLView, 'Parent LView should be defined');\n parentLView = parentLView[DECLARATION_VIEW];\n // In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives\n // We want to skip those and look only at Elements and ElementContainers to ensure\n // we're looking at true parent nodes, and not content or other types.\n if (parentTNode.type & (2 /* TNodeType.Element */ | 8 /* TNodeType.ElementContainer */)) {\n break;\n }\n }\n else {\n break;\n }\n }\n if (parentTNode === null) {\n // If we failed to find a parent TNode this means that we should use module injector.\n return false;\n }\n else {\n tNode = parentTNode;\n lView = parentLView;\n }\n }\n ngDevMode && assertTNodeForLView(tNode, lView);\n const lFrame = (instructionState.lFrame = allocLFrame());\n lFrame.currentTNode = tNode;\n lFrame.lView = lView;\n return true;\n}\n/**\n * Swap the current lView with a new lView.\n *\n * For performance reasons we store the lView in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the lView for later, and when the view is\n * exited the state has to be restored\n *\n * @param newView New lView to become active\n * @returns the previously active lView;\n */\nfunction enterView(newView) {\n ngDevMode && assertNotEqual(newView[0], newView[1], '????');\n ngDevMode && assertLViewOrUndefined(newView);\n const newLFrame = allocLFrame();\n if (ngDevMode) {\n assertEqual(newLFrame.isParent, true, 'Expected clean LFrame');\n assertEqual(newLFrame.lView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.tView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.selectedIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.elementDepthCount, 0, 'Expected clean LFrame');\n assertEqual(newLFrame.currentDirectiveIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentNamespace, null, 'Expected clean LFrame');\n assertEqual(newLFrame.bindingRootIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentQueryIndex, 0, 'Expected clean LFrame');\n }\n const tView = newView[TVIEW];\n instructionState.lFrame = newLFrame;\n ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView);\n newLFrame.currentTNode = tView.firstChild;\n newLFrame.lView = newView;\n newLFrame.tView = tView;\n newLFrame.contextLView = newView;\n newLFrame.bindingIndex = tView.bindingStartIndex;\n newLFrame.inI18n = false;\n}\n/**\n * Allocates next free LFrame. This function tries to reuse the `LFrame`s to lower memory pressure.\n */\nfunction allocLFrame() {\n const currentLFrame = instructionState.lFrame;\n const childLFrame = currentLFrame === null ? null : currentLFrame.child;\n const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame;\n return newLFrame;\n}\nfunction createLFrame(parent) {\n const lFrame = {\n currentTNode: null,\n isParent: true,\n lView: null,\n tView: null,\n selectedIndex: -1,\n contextLView: null,\n elementDepthCount: 0,\n currentNamespace: null,\n currentDirectiveIndex: -1,\n bindingRootIndex: -1,\n bindingIndex: -1,\n currentQueryIndex: 0,\n parent: parent,\n child: null,\n inI18n: false,\n };\n parent !== null && (parent.child = lFrame); // link the new LFrame for reuse.\n return lFrame;\n}\n/**\n * A lightweight version of leave which is used with DI.\n *\n * This function only resets `currentTNode` and `LView` as those are the only properties\n * used with DI (`enterDI()`).\n *\n * NOTE: This function is reexported as `leaveDI`. However `leaveDI` has return type of `void` where\n * as `leaveViewLight` has `LFrame`. This is so that `leaveViewLight` can be used in `leaveView`.\n */\nfunction leaveViewLight() {\n const oldLFrame = instructionState.lFrame;\n instructionState.lFrame = oldLFrame.parent;\n oldLFrame.currentTNode = null;\n oldLFrame.lView = null;\n return oldLFrame;\n}\n/**\n * This is a lightweight version of the `leaveView` which is needed by the DI system.\n *\n * NOTE: this function is an alias so that we can change the type of the function to have `void`\n * return type.\n */\nconst leaveDI = leaveViewLight;\n/**\n * Leave the current `LView`\n *\n * This pops the `LFrame` with the associated `LView` from the stack.\n *\n * IMPORTANT: We must zero out the `LFrame` values here otherwise they will be retained. This is\n * because for performance reasons we don't release `LFrame` but rather keep it for next use.\n */\nfunction leaveView() {\n const oldLFrame = leaveViewLight();\n oldLFrame.isParent = true;\n oldLFrame.tView = null;\n oldLFrame.selectedIndex = -1;\n oldLFrame.contextLView = null;\n oldLFrame.elementDepthCount = 0;\n oldLFrame.currentDirectiveIndex = -1;\n oldLFrame.currentNamespace = null;\n oldLFrame.bindingRootIndex = -1;\n oldLFrame.bindingIndex = -1;\n oldLFrame.currentQueryIndex = 0;\n}\nfunction nextContextImpl(level) {\n const contextLView = (instructionState.lFrame.contextLView = walkUpViews(level, instructionState.lFrame.contextLView));\n return contextLView[CONTEXT];\n}\n/**\n * Gets the currently selected element index.\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n */\nfunction getSelectedIndex() {\n return instructionState.lFrame.selectedIndex;\n}\n/**\n * Sets the most recent index passed to {@link select}\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n *\n * (Note that if an \"exit function\" was set earlier (via `setElementExitFn()`) then that will be\n * run if and when the provided `index` value is different from the current selected index value.)\n */\nfunction setSelectedIndex(index) {\n ngDevMode &&\n index !== -1 &&\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Index must be past HEADER_OFFSET (or -1).');\n ngDevMode &&\n assertLessThan(index, instructionState.lFrame.lView.length, \"Can't set index passed end of LView\");\n instructionState.lFrame.selectedIndex = index;\n}\n/**\n * Gets the `tNode` that represents currently selected element.\n */\nfunction getSelectedTNode() {\n const lFrame = instructionState.lFrame;\n return getTNode(lFrame.tView, lFrame.selectedIndex);\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceSVG() {\n instructionState.lFrame.currentNamespace = SVG_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceMathML() {\n instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE;\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n *\n * @codeGenApi\n */\nfunction ɵɵnamespaceHTML() {\n namespaceHTMLInternal();\n}\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n */\nfunction namespaceHTMLInternal() {\n instructionState.lFrame.currentNamespace = null;\n}\nfunction getNamespace$1() {\n return instructionState.lFrame.currentNamespace;\n}\nlet _wasLastNodeCreated = true;\n/**\n * Retrieves a global flag that indicates whether the most recent DOM node\n * was created or hydrated.\n */\nfunction wasLastNodeCreated() {\n return _wasLastNodeCreated;\n}\n/**\n * Sets a global flag to indicate whether the most recent DOM node\n * was created or hydrated.\n */\nfunction lastNodeWasCreated(flag) {\n _wasLastNodeCreated = flag;\n}\n\n/**\n * Adds all directive lifecycle hooks from the given `DirectiveDef` to the given `TView`.\n *\n * Must be run *only* on the first template pass.\n *\n * Sets up the pre-order hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * @param directiveIndex The index of the directive in LView\n * @param directiveDef The definition containing the hooks to setup in tView\n * @param tView The current TView\n */\nfunction registerPreOrderHooks(directiveIndex, directiveDef, tView) {\n ngDevMode && assertFirstCreatePass(tView);\n const { ngOnChanges, ngOnInit, ngDoCheck } = directiveDef.type.prototype;\n if (ngOnChanges) {\n const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef);\n (tView.preOrderHooks ??= []).push(directiveIndex, wrappedOnChanges);\n (tView.preOrderCheckHooks ??= []).push(directiveIndex, wrappedOnChanges);\n }\n if (ngOnInit) {\n (tView.preOrderHooks ??= []).push(0 - directiveIndex, ngOnInit);\n }\n if (ngDoCheck) {\n (tView.preOrderHooks ??= []).push(directiveIndex, ngDoCheck);\n (tView.preOrderCheckHooks ??= []).push(directiveIndex, ngDoCheck);\n }\n}\n/**\n *\n * Loops through the directives on the provided `tNode` and queues hooks to be\n * run that are not initialization hooks.\n *\n * Should be executed during `elementEnd()` and similar to\n * preserve hook execution order. Content, view, and destroy hooks for projected\n * components and directives must be called *before* their hosts.\n *\n * Sets up the content, view, and destroy hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * NOTE: This does not set up `onChanges`, `onInit` or `doCheck`, those are set up\n * separately at `elementStart`.\n *\n * @param tView The current TView\n * @param tNode The TNode whose directives are to be searched for hooks to queue\n */\nfunction registerPostOrderHooks(tView, tNode) {\n ngDevMode && assertFirstCreatePass(tView);\n // It's necessary to loop through the directives at elementEnd() (rather than processing in\n // directiveCreate) so we can preserve the current hook order. Content, view, and destroy\n // hooks for projected components and directives must be called *before* their hosts.\n for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) {\n const directiveDef = tView.data[i];\n ngDevMode && assertDefined(directiveDef, 'Expecting DirectiveDef');\n const lifecycleHooks = directiveDef.type.prototype;\n const { ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy, } = lifecycleHooks;\n if (ngAfterContentInit) {\n (tView.contentHooks ??= []).push(-i, ngAfterContentInit);\n }\n if (ngAfterContentChecked) {\n (tView.contentHooks ??= []).push(i, ngAfterContentChecked);\n (tView.contentCheckHooks ??= []).push(i, ngAfterContentChecked);\n }\n if (ngAfterViewInit) {\n (tView.viewHooks ??= []).push(-i, ngAfterViewInit);\n }\n if (ngAfterViewChecked) {\n (tView.viewHooks ??= []).push(i, ngAfterViewChecked);\n (tView.viewCheckHooks ??= []).push(i, ngAfterViewChecked);\n }\n if (ngOnDestroy != null) {\n (tView.destroyHooks ??= []).push(i, ngOnDestroy);\n }\n }\n}\n/**\n * Executing hooks requires complex logic as we need to deal with 2 constraints.\n *\n * 1. Init hooks (ngOnInit, ngAfterContentInit, ngAfterViewInit) must all be executed once and only\n * once, across many change detection cycles. This must be true even if some hooks throw, or if\n * some recursively trigger a change detection cycle.\n * To solve that, it is required to track the state of the execution of these init hooks.\n * This is done by storing and maintaining flags in the view: the {@link InitPhaseState},\n * and the index within that phase. They can be seen as a cursor in the following structure:\n * [[onInit1, onInit2], [afterContentInit1], [afterViewInit1, afterViewInit2, afterViewInit3]]\n * They are stored as flags in LView[FLAGS].\n *\n * 2. Pre-order hooks can be executed in batches, because of the select instruction.\n * To be able to pause and resume their execution, we also need some state about the hook's array\n * that is being processed:\n * - the index of the next hook to be executed\n * - the number of init hooks already found in the processed part of the array\n * They are stored as flags in LView[PREORDER_HOOK_FLAGS].\n */\n/**\n * Executes pre-order check hooks ( OnChanges, DoChanges) given a view where all the init hooks were\n * executed once. This is a light version of executeInitAndCheckPreOrderHooks where we can skip read\n * / write of the init-hooks related flags.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeCheckHooks(lView, hooks, nodeIndex) {\n callHooks(lView, hooks, 3 /* InitPhaseState.InitPhaseCompleted */, nodeIndex);\n}\n/**\n * Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,\n * AfterViewInit, AfterViewChecked) given a view where there are pending init hooks to be executed.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param initPhase A phase for which hooks should be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init pre-order hooks should not be called more than once');\n if ((lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n callHooks(lView, hooks, initPhase, nodeIndex);\n }\n}\nfunction incrementInitPhaseFlags(lView, initPhase) {\n ngDevMode &&\n assertNotEqual(initPhase, 3 /* InitPhaseState.InitPhaseCompleted */, 'Init hooks phase should not be incremented after all init hooks have been run.');\n let flags = lView[FLAGS];\n if ((flags & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n flags &= 16383 /* LViewFlags.IndexWithinInitPhaseReset */;\n flags += 1 /* LViewFlags.InitPhaseStateIncrementer */;\n lView[FLAGS] = flags;\n }\n}\n/**\n * Calls lifecycle hooks with their contexts, skipping init hooks if it's not\n * the first LView pass\n *\n * @param currentView The current view\n * @param arr The array in which the hooks are found\n * @param initPhaseState the current state of the init phase\n * @param currentNodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction callHooks(currentView, arr, initPhase, currentNodeIndex) {\n ngDevMode &&\n assertEqual(isInCheckNoChangesMode(), false, 'Hooks should never be run when in check no changes mode.');\n const startIndex = currentNodeIndex !== undefined\n ? currentView[PREORDER_HOOK_FLAGS] & 65535 /* PreOrderHookFlags.IndexOfTheNextPreOrderHookMaskMask */\n : 0;\n const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;\n const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1\n let lastNodeIndexFound = 0;\n for (let i = startIndex; i < max; i++) {\n const hook = arr[i + 1];\n if (typeof hook === 'number') {\n lastNodeIndexFound = arr[i];\n if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) {\n break;\n }\n }\n else {\n const isInitHook = arr[i] < 0;\n if (isInitHook) {\n currentView[PREORDER_HOOK_FLAGS] += 65536 /* PreOrderHookFlags.NumberOfInitHooksCalledIncrementer */;\n }\n if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {\n callHook(currentView, initPhase, arr, i);\n currentView[PREORDER_HOOK_FLAGS] =\n (currentView[PREORDER_HOOK_FLAGS] & 4294901760 /* PreOrderHookFlags.NumberOfInitHooksCalledMask */) +\n i +\n 2;\n }\n i++;\n }\n }\n}\n/**\n * Executes a single lifecycle hook, making sure that:\n * - it is called in the non-reactive context;\n * - profiling data are registered.\n */\nfunction callHookInternal(directive, hook) {\n profiler(4 /* ProfilerEvent.LifecycleHookStart */, directive, hook);\n const prevConsumer = setActiveConsumer$1(null);\n try {\n hook.call(directive);\n }\n finally {\n setActiveConsumer$1(prevConsumer);\n profiler(5 /* ProfilerEvent.LifecycleHookEnd */, directive, hook);\n }\n}\n/**\n * Execute one hook against the current `LView`.\n *\n * @param currentView The current view\n * @param initPhaseState the current state of the init phase\n * @param arr The array in which the hooks are found\n * @param i The current index within the hook data array\n */\nfunction callHook(currentView, initPhase, arr, i) {\n const isInitHook = arr[i] < 0;\n const hook = arr[i + 1];\n const directiveIndex = isInitHook ? -arr[i] : arr[i];\n const directive = currentView[directiveIndex];\n if (isInitHook) {\n const indexWithintInitPhase = currentView[FLAGS] >> 14 /* LViewFlags.IndexWithinInitPhaseShift */;\n // The init phase state must be always checked here as it may have been recursively updated.\n if (indexWithintInitPhase <\n currentView[PREORDER_HOOK_FLAGS] >> 16 /* PreOrderHookFlags.NumberOfInitHooksCalledShift */ &&\n (currentView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === initPhase) {\n currentView[FLAGS] += 16384 /* LViewFlags.IndexWithinInitPhaseIncrementer */;\n callHookInternal(directive, hook);\n }\n }\n else {\n callHookInternal(directive, hook);\n }\n}\n\nconst NO_PARENT_INJECTOR = -1;\n/**\n * Each injector is saved in 9 contiguous slots in `LView` and 9 contiguous slots in\n * `TView.data`. This allows us to store information about the current node's tokens (which\n * can be shared in `TView`) as well as the tokens of its ancestor nodes (which cannot be\n * shared, so they live in `LView`).\n *\n * Each of these slots (aside from the last slot) contains a bloom filter. This bloom filter\n * determines whether a directive is available on the associated node or not. This prevents us\n * from searching the directives array at this level unless it's probable the directive is in it.\n *\n * See: https://en.wikipedia.org/wiki/Bloom_filter for more about bloom filters.\n *\n * Because all injectors have been flattened into `LView` and `TViewData`, they cannot typed\n * using interfaces as they were previously. The start index of each `LInjector` and `TInjector`\n * will differ based on where it is flattened into the main array, so it's not possible to know\n * the indices ahead of time and save their types here. The interfaces are still included here\n * for documentation purposes.\n *\n * export interface LInjector extends Array {\n *\n * // Cumulative bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Cumulative bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Cumulative bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Cumulative bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Cumulative bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Cumulative bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Cumulative bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Cumulative bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // We need to store a reference to the injector's parent so DI can keep looking up\n * // the injector tree until it finds the dependency it's looking for.\n * [PARENT_INJECTOR]: number;\n * }\n *\n * export interface TInjector extends Array {\n *\n * // Shared node bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Shared node bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Shared node bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Shared node bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Shared node bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Shared node bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Shared node bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Shared node bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // Necessary to find directive indices for a particular node.\n * [TNODE]: TElementNode|TElementContainerNode|TContainerNode;\n * }\n */\n/**\n * Factory for creating instances of injectors in the NodeInjector.\n *\n * This factory is complicated by the fact that it can resolve `multi` factories as well.\n *\n * NOTE: Some of the fields are optional which means that this class has two hidden classes.\n * - One without `multi` support (most common)\n * - One with `multi` values, (rare).\n *\n * Since VMs can cache up to 4 inline hidden classes this is OK.\n *\n * - Single factory: Only `resolving` and `factory` is defined.\n * - `providers` factory: `componentProviders` is a number and `index = -1`.\n * - `viewProviders` factory: `componentProviders` is a number and `index` points to `providers`.\n */\nclass NodeInjectorFactory {\n constructor(\n /**\n * Factory to invoke in order to create a new instance.\n */\n factory, \n /**\n * Set to `true` if the token is declared in `viewProviders` (or if it is component).\n */\n isViewProvider, injectImplementation) {\n this.factory = factory;\n /**\n * Marker set to true during factory invocation to see if we get into recursive loop.\n * Recursive loop causes an error to be displayed.\n */\n this.resolving = false;\n ngDevMode && assertDefined(factory, 'Factory not specified');\n ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');\n this.canSeeViewProviders = isViewProvider;\n this.injectImpl = injectImplementation;\n }\n}\nfunction isFactory(obj) {\n return obj instanceof NodeInjectorFactory;\n}\n\n/**\n * Converts `TNodeType` into human readable text.\n * Make sure this matches with `TNodeType`\n */\nfunction toTNodeTypeAsString(tNodeType) {\n let text = '';\n tNodeType & 1 /* TNodeType.Text */ && (text += '|Text');\n tNodeType & 2 /* TNodeType.Element */ && (text += '|Element');\n tNodeType & 4 /* TNodeType.Container */ && (text += '|Container');\n tNodeType & 8 /* TNodeType.ElementContainer */ && (text += '|ElementContainer');\n tNodeType & 16 /* TNodeType.Projection */ && (text += '|Projection');\n tNodeType & 32 /* TNodeType.Icu */ && (text += '|IcuContainer');\n tNodeType & 64 /* TNodeType.Placeholder */ && (text += '|Placeholder');\n tNodeType & 128 /* TNodeType.LetDeclaration */ && (text += '|LetDeclaration');\n return text.length > 0 ? text.substring(1) : text;\n}\n/**\n * Helper function to detect if a given value matches a `TNode` shape.\n *\n * The logic uses the `insertBeforeIndex` and its possible values as\n * a way to differentiate a TNode shape from other types of objects\n * within the `TView.data`. This is not a perfect check, but it can\n * be a reasonable differentiator, since we control the shapes of objects\n * within `TView.data`.\n */\nfunction isTNodeShape(value) {\n return (value != null &&\n typeof value === 'object' &&\n (value.insertBeforeIndex === null ||\n typeof value.insertBeforeIndex === 'number' ||\n Array.isArray(value.insertBeforeIndex)));\n}\nfunction isLetDeclaration(tNode) {\n return !!(tNode.type & 128 /* TNodeType.LetDeclaration */);\n}\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `class` binding.\n *\n * ```\n *
\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasClassInput(tNode) {\n return (tNode.flags & 8 /* TNodeFlags.hasClassInput */) !== 0;\n}\n/**\n * Returns `true` if the `TNode` has a directive which has `@Input()` for `style` binding.\n *\n * ```\n *
\n * ```\n * and\n * ```\n * @Directive({\n * })\n * class MyDirective {\n * @Input()\n * class: string;\n * }\n * ```\n *\n * In the above case it is necessary to write the reconciled styling information into the\n * directive's input.\n *\n * @param tNode\n */\nfunction hasStyleInput(tNode) {\n return (tNode.flags & 16 /* TNodeFlags.hasStyleInput */) !== 0;\n}\n\nfunction assertTNodeType(tNode, expectedTypes, message) {\n assertDefined(tNode, 'should be called with a TNode');\n if ((tNode.type & expectedTypes) === 0) {\n throwError(message ||\n `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`);\n }\n}\nfunction assertPureTNodeType(type) {\n if (!(type === 2 /* TNodeType.Element */ ||\n type === 1 /* TNodeType.Text */ ||\n type === 4 /* TNodeType.Container */ ||\n type === 8 /* TNodeType.ElementContainer */ ||\n type === 32 /* TNodeType.Icu */ ||\n type === 16 /* TNodeType.Projection */ ||\n type === 64 /* TNodeType.Placeholder */ ||\n type === 128 /* TNodeType.LetDeclaration */)) {\n throwError(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`);\n }\n}\n\n// This default value is when checking the hierarchy for a token.\n//\n// It means both:\n// - the token is not provided by the current injector,\n// - only the element injectors should be checked (ie do not check module injectors\n//\n// mod1\n// /\n// el1 mod2\n// \\ /\n// el2\n//\n// When requesting el2.injector.get(token), we should check in the following order and return the\n// first found value:\n// - el2.injector.get(token, default)\n// - el1.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) -> do not check the module\n// - mod2.injector.get(token, default)\nconst NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR = {};\n\n/**\n * Injector that looks up a value using a specific injector, before falling back to the module\n * injector. Used primarily when creating components or embedded views dynamically.\n */\nclass ChainedInjector {\n constructor(injector, parentInjector) {\n this.injector = injector;\n this.parentInjector = parentInjector;\n }\n get(token, notFoundValue, flags) {\n flags = convertToBitFlags(flags);\n const value = this.injector.get(token, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, flags);\n if (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR ||\n notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR) {\n // Return the value from the root element injector when\n // - it provides it\n // (value !== NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n // - the module injector should not be checked\n // (notFoundValue === NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR)\n return value;\n }\n return this.parentInjector.get(token, notFoundValue, flags);\n }\n}\n\n/// Parent Injector Utils ///////////////////////////////////////////////////////////////\nfunction hasParentInjector(parentLocation) {\n return parentLocation !== NO_PARENT_INJECTOR;\n}\nfunction getParentInjectorIndex(parentLocation) {\n if (ngDevMode) {\n assertNumber(parentLocation, 'Number expected');\n assertNotEqual(parentLocation, -1, 'Not a valid state.');\n const parentInjectorIndex = parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;\n assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, 'Parent injector must be pointing past HEADER_OFFSET.');\n }\n return parentLocation & 32767 /* RelativeInjectorLocationFlags.InjectorIndexMask */;\n}\nfunction getParentInjectorViewOffset(parentLocation) {\n return parentLocation >> 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */;\n}\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the view is found that contains the parent\n * injector.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @returns The LView instance that contains the parent injector\n */\nfunction getParentInjectorView(location, startView) {\n let viewOffset = getParentInjectorViewOffset(location);\n let parentView = startView;\n // For most cases, the parent injector can be found on the host node (e.g. for component\n // or container), but we must keep the loop here to support the rarer case of deeply nested\n // tags or inline views, where the parent injector might live many views\n // above the child injector.\n while (viewOffset > 0) {\n parentView = parentView[DECLARATION_VIEW];\n viewOffset--;\n }\n return parentView;\n}\n/**\n * Detects whether an injector is an instance of a `ChainedInjector`,\n * created based on the `OutletInjector`.\n */\nfunction isRouterOutletInjector(currentInjector) {\n return (currentInjector instanceof ChainedInjector &&\n typeof currentInjector.injector.__ngOutletInjector === 'function');\n}\n\n/**\n * Defines if the call to `inject` should include `viewProviders` in its resolution.\n *\n * This is set to true when we try to instantiate a component. This value is reset in\n * `getNodeInjectable` to a value which matches the declaration location of the token about to be\n * instantiated. This is done so that if we are injecting a token which was declared outside of\n * `viewProviders` we don't accidentally pull `viewProviders` in.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * class MyService {\n * constructor(public value: String) {}\n * }\n *\n * @Component({\n * providers: [\n * MyService,\n * {provide: String, value: 'providers' }\n * ]\n * viewProviders: [\n * {provide: String, value: 'viewProviders'}\n * ]\n * })\n * class MyComponent {\n * constructor(myService: MyService, value: String) {\n * // We expect that Component can see into `viewProviders`.\n * expect(value).toEqual('viewProviders');\n * // `MyService` was not declared in `viewProviders` hence it can't see it.\n * expect(myService.value).toEqual('providers');\n * }\n * }\n *\n * ```\n */\nlet includeViewProviders = true;\nfunction setIncludeViewProviders(v) {\n const oldValue = includeViewProviders;\n includeViewProviders = v;\n return oldValue;\n}\n/**\n * The number of slots in each bloom filter (used by DI). The larger this number, the fewer\n * directives that will share slots, and thus, the fewer false positives when checking for\n * the existence of a directive.\n */\nconst BLOOM_SIZE = 256;\nconst BLOOM_MASK = BLOOM_SIZE - 1;\n/**\n * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,\n * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash\n * number.\n */\nconst BLOOM_BUCKET_BITS = 5;\n/** Counter used to generate unique IDs for directives. */\nlet nextNgElementId = 0;\n/** Value used when something wasn't found by an injector. */\nconst NOT_FOUND = {};\n/**\n * Registers this directive as present in its node's injector by flipping the directive's\n * corresponding bit in the injector's bloom filter.\n *\n * @param injectorIndex The index of the node injector where this token should be registered\n * @param tView The TView for the injector's bloom filters\n * @param type The directive token to register\n */\nfunction bloomAdd(injectorIndex, tView, type) {\n ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');\n let id;\n if (typeof type === 'string') {\n id = type.charCodeAt(0) || 0;\n }\n else if (type.hasOwnProperty(NG_ELEMENT_ID)) {\n id = type[NG_ELEMENT_ID];\n }\n // Set a unique ID on the directive type, so if something tries to inject the directive,\n // we can easily retrieve the ID and hash it into the bloom bit that should be checked.\n if (id == null) {\n id = type[NG_ELEMENT_ID] = nextNgElementId++;\n }\n // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),\n // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.\n const bloomHash = id & BLOOM_MASK;\n // Create a mask that targets the specific bit associated with the directive.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.\n // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask\n // should be written to.\n tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;\n}\n/**\n * Creates (or gets an existing) injector for a given element or container.\n *\n * @param tNode for which an injector should be retrieved / created.\n * @param lView View where the node is stored\n * @returns Node injector\n */\nfunction getOrCreateNodeInjectorForNode(tNode, lView) {\n const existingInjectorIndex = getInjectorIndex(tNode, lView);\n if (existingInjectorIndex !== -1) {\n return existingInjectorIndex;\n }\n const tView = lView[TVIEW];\n if (tView.firstCreatePass) {\n tNode.injectorIndex = lView.length;\n insertBloom(tView.data, tNode); // foundation for node bloom\n insertBloom(lView, null); // foundation for cumulative bloom\n insertBloom(tView.blueprint, null);\n }\n const parentLoc = getParentInjectorLocation(tNode, lView);\n const injectorIndex = tNode.injectorIndex;\n // If a parent injector can't be found, its location is set to -1.\n // In that case, we don't need to set up a cumulative bloom\n if (hasParentInjector(parentLoc)) {\n const parentIndex = getParentInjectorIndex(parentLoc);\n const parentLView = getParentInjectorView(parentLoc, lView);\n const parentData = parentLView[TVIEW].data;\n // Creates a cumulative bloom filter that merges the parent's bloom filter\n // and its own cumulative bloom (which contains tokens for all ancestors)\n for (let i = 0; i < 8 /* NodeInjectorOffset.BLOOM_SIZE */; i++) {\n lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];\n }\n }\n lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */] = parentLoc;\n return injectorIndex;\n}\nfunction insertBloom(arr, footer) {\n arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);\n}\nfunction getInjectorIndex(tNode, lView) {\n if (tNode.injectorIndex === -1 ||\n // If the injector index is the same as its parent's injector index, then the index has been\n // copied down from the parent node. No injector has been created yet on this node.\n (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||\n // After the first template pass, the injector index might exist but the parent values\n // might not have been calculated yet for this instance\n lView[tNode.injectorIndex + 8 /* NodeInjectorOffset.PARENT */] === null) {\n return -1;\n }\n else {\n ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);\n return tNode.injectorIndex;\n }\n}\n/**\n * Finds the index of the parent injector, with a view offset if applicable. Used to set the\n * parent injector initially.\n *\n * @returns Returns a number that is the combination of the number of LViews that we have to go up\n * to find the LView containing the parent inject AND the index of the injector within that LView.\n */\nfunction getParentInjectorLocation(tNode, lView) {\n if (tNode.parent && tNode.parent.injectorIndex !== -1) {\n // If we have a parent `TNode` and there is an injector associated with it we are done, because\n // the parent injector is within the current `LView`.\n return tNode.parent.injectorIndex; // ViewOffset is 0\n }\n // When parent injector location is computed it may be outside of the current view. (ie it could\n // be pointing to a declared parent location). This variable stores number of declaration parents\n // we need to walk up in order to find the parent injector location.\n let declarationViewOffset = 0;\n let parentTNode = null;\n let lViewCursor = lView;\n // The parent injector is not in the current `LView`. We will have to walk the declared parent\n // `LView` hierarchy and look for it. If we walk of the top, that means that there is no parent\n // `NodeInjector`.\n while (lViewCursor !== null) {\n parentTNode = getTNodeFromLView(lViewCursor);\n if (parentTNode === null) {\n // If we have no parent, than we are done.\n return NO_PARENT_INJECTOR;\n }\n ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]);\n // Every iteration of the loop requires that we go to the declared parent.\n declarationViewOffset++;\n lViewCursor = lViewCursor[DECLARATION_VIEW];\n if (parentTNode.injectorIndex !== -1) {\n // We found a NodeInjector which points to something.\n return (parentTNode.injectorIndex |\n (declarationViewOffset <<\n 16 /* RelativeInjectorLocationFlags.ViewOffsetShift */));\n }\n }\n return NO_PARENT_INJECTOR;\n}\n/**\n * Makes a type or an injection token public to the DI system by adding it to an\n * injector's bloom filter.\n *\n * @param di The node injector in which a directive will be added\n * @param token The type or the injection token to be made public\n */\nfunction diPublicInInjector(injectorIndex, tView, token) {\n bloomAdd(injectorIndex, tView, token);\n}\n/**\n * Inject static attribute value into directive constructor.\n *\n * This method is used with `factory` functions which are generated as part of\n * `defineDirective` or `defineComponent`. The method retrieves the static value\n * of an attribute. (Dynamic attributes are not supported since they are not resolved\n * at the time of injection and can change over time.)\n *\n * # Example\n * Given:\n * ```\n * @Component(...)\n * class MyComponent {\n * constructor(@Attribute('title') title: string) { ... }\n * }\n * ```\n * When instantiated with\n * ```\n * \n * ```\n *\n * Then factory method generated is:\n * ```\n * MyComponent.ɵcmp = defineComponent({\n * factory: () => new MyComponent(injectAttribute('title'))\n * ...\n * })\n * ```\n *\n * @publicApi\n */\nfunction injectAttributeImpl(tNode, attrNameToInject) {\n ngDevMode && assertTNodeType(tNode, 12 /* TNodeType.AnyContainer */ | 3 /* TNodeType.AnyRNode */);\n ngDevMode && assertDefined(tNode, 'expecting tNode');\n if (attrNameToInject === 'class') {\n return tNode.classes;\n }\n if (attrNameToInject === 'style') {\n return tNode.styles;\n }\n const attrs = tNode.attrs;\n if (attrs) {\n const attrsLength = attrs.length;\n let i = 0;\n while (i < attrsLength) {\n const value = attrs[i];\n // If we hit a `Bindings` or `Template` marker then we are done.\n if (isNameOnlyAttributeMarker(value))\n break;\n // Skip namespaced attributes\n if (value === 0 /* AttributeMarker.NamespaceURI */) {\n // we skip the next two values\n // as namespaced attributes looks like\n // [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',\n // 'existValue', ...]\n i = i + 2;\n }\n else if (typeof value === 'number') {\n // Skip to the first value of the marked attribute.\n i++;\n while (i < attrsLength && typeof attrs[i] === 'string') {\n i++;\n }\n }\n else if (value === attrNameToInject) {\n return attrs[i + 1];\n }\n else {\n i = i + 2;\n }\n }\n }\n return null;\n}\nfunction notFoundValueOrThrow(notFoundValue, token, flags) {\n if (flags & InjectFlags.Optional || notFoundValue !== undefined) {\n return notFoundValue;\n }\n else {\n throwProviderNotFoundError(token, 'NodeInjector');\n }\n}\n/**\n * Returns the value associated to the given token from the ModuleInjector or throws exception\n *\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector or throws an exception\n */\nfunction lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) {\n if (flags & InjectFlags.Optional && notFoundValue === undefined) {\n // This must be set or the NullInjector will throw for optional deps\n notFoundValue = null;\n }\n if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) {\n const moduleInjector = lView[INJECTOR];\n // switch to `injectInjectorOnly` implementation for module injector, since module injector\n // should not have access to Component/Directive DI scope (that may happen through\n // `directiveInject` implementation)\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n if (moduleInjector) {\n return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional);\n }\n else {\n return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional);\n }\n }\n finally {\n setInjectImplementation(previousInjectImplementation);\n }\n }\n return notFoundValueOrThrow(notFoundValue, token, flags);\n}\n/**\n * Returns the value associated to the given token from the NodeInjectors => ModuleInjector.\n *\n * Look for the injector providing the token by walking up the node injector tree and then\n * the module injector tree.\n *\n * This function patches `token` with `__NG_ELEMENT_ID__` which contains the id for the bloom\n * filter. `-1` is reserved for injecting `Injector` (implemented by `NodeInjector`)\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) {\n if (tNode !== null) {\n // If the view or any of its ancestors have an embedded\n // view injector, we have to look it up there first.\n if (lView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */ &&\n // The token must be present on the current node injector when the `Self`\n // flag is set, so the lookup on embedded view injector(s) can be skipped.\n !(flags & InjectFlags.Self)) {\n const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND);\n if (embeddedInjectorValue !== NOT_FOUND) {\n return embeddedInjectorValue;\n }\n }\n // Otherwise try the node injector.\n const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND);\n if (value !== NOT_FOUND) {\n return value;\n }\n }\n // Finally, fall back to the module injector.\n return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n}\n/**\n * Returns the value associated to the given token from the node injector.\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) {\n const bloomHash = bloomHashBitOrFactory(token);\n // If the ID stored here is a function, this is a special object like ElementRef or TemplateRef\n // so just call the factory function to create it.\n if (typeof bloomHash === 'function') {\n if (!enterDI(lView, tNode, flags)) {\n // Failed to enter DI, try module injector instead. If a token is injected with the @Host\n // flag, the module injector is not searched for that token in Ivy.\n return flags & InjectFlags.Host\n ? notFoundValueOrThrow(notFoundValue, token, flags)\n : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n }\n try {\n let value;\n if (ngDevMode) {\n runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => {\n value = bloomHash(flags);\n if (value != null) {\n emitInstanceCreatedByInjectorEvent(value);\n }\n });\n }\n else {\n value = bloomHash(flags);\n }\n if (value == null && !(flags & InjectFlags.Optional)) {\n throwProviderNotFoundError(token);\n }\n else {\n return value;\n }\n }\n finally {\n leaveDI();\n }\n }\n else if (typeof bloomHash === 'number') {\n // A reference to the previous injector TView that was found while climbing the element\n // injector tree. This is used to know if viewProviders can be accessed on the current\n // injector.\n let previousTView = null;\n let injectorIndex = getInjectorIndex(tNode, lView);\n let parentLocation = NO_PARENT_INJECTOR;\n let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;\n // If we should skip this injector, or if there is no injector on this node, start by\n // searching the parent injector.\n if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {\n parentLocation =\n injectorIndex === -1\n ? getParentInjectorLocation(tNode, lView)\n : lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];\n if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {\n injectorIndex = -1;\n }\n else {\n previousTView = lView[TVIEW];\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n }\n // Traverse up the injector tree until we find a potential match or until we know there\n // *isn't* a match.\n while (injectorIndex !== -1) {\n ngDevMode && assertNodeInjector(lView, injectorIndex);\n // Check the current injector. If it matches, see if it contains token.\n const tView = lView[TVIEW];\n ngDevMode &&\n assertTNodeForLView(tView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */], lView);\n if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {\n // At this point, we have an injector which *may* contain the token, so we step through\n // the providers and directives associated with the injector's corresponding node to get\n // the instance.\n const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode);\n if (instance !== NOT_FOUND) {\n return instance;\n }\n }\n parentLocation = lView[injectorIndex + 8 /* NodeInjectorOffset.PARENT */];\n if (parentLocation !== NO_PARENT_INJECTOR &&\n shouldSearchParent(flags, lView[TVIEW].data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */] === hostTElementNode) &&\n bloomHasToken(bloomHash, injectorIndex, lView)) {\n // The def wasn't found anywhere on this node, so it was a false positive.\n // Traverse up the tree and continue searching.\n previousTView = tView;\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n else {\n // If we should not search parent OR If the ancestor bloom filter value does not have the\n // bit corresponding to the directive we can give up on traversing up to find the specific\n // injector.\n injectorIndex = -1;\n }\n }\n }\n return notFoundValue;\n}\nfunction searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) {\n const currentTView = lView[TVIEW];\n const tNode = currentTView.data[injectorIndex + 8 /* NodeInjectorOffset.TNODE */];\n // First, we need to determine if view providers can be accessed by the starting element.\n // There are two possibilities\n const canAccessViewProviders = previousTView == null\n ? // 1) This is the first invocation `previousTView == null` which means that we are at the\n // `TNode` of where injector is starting to look. In such a case the only time we are allowed\n // to look into the ViewProviders is if:\n // - we are on a component\n // - AND the injector set `includeViewProviders` to true (implying that the token can see\n // ViewProviders because it is the Component or a Service which itself was declared in\n // ViewProviders)\n isComponentHost(tNode) && includeViewProviders\n : // 2) `previousTView != null` which means that we are now walking across the parent nodes.\n // In such a case we are only allowed to look into the ViewProviders if:\n // - We just crossed from child View to Parent View `previousTView != currentTView`\n // - AND the parent TNode is an Element.\n // This means that we just came from the Component's View and therefore are allowed to see\n // into the ViewProviders.\n previousTView != currentTView && (tNode.type & 3 /* TNodeType.AnyRNode */) !== 0;\n // This special case happens when there is a @host on the inject and when we are searching\n // on the host element node.\n const isHostSpecialCase = flags & InjectFlags.Host && hostTElementNode === tNode;\n const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);\n if (injectableIdx !== null) {\n return getNodeInjectable(lView, currentTView, injectableIdx, tNode);\n }\n else {\n return NOT_FOUND;\n }\n}\n/**\n * Searches for the given token among the node's directives and providers.\n *\n * @param tNode TNode on which directives are present.\n * @param tView The tView we are currently processing\n * @param token Provider token or type of a directive to look for.\n * @param canAccessViewProviders Whether view providers should be considered.\n * @param isHostSpecialCase Whether the host special case applies.\n * @returns Index of a found directive or provider, or null when none found.\n */\nfunction locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) {\n const nodeProviderIndexes = tNode.providerIndexes;\n const tInjectables = tView.data;\n const injectablesStart = nodeProviderIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;\n const directivesStart = tNode.directiveStart;\n const directiveEnd = tNode.directiveEnd;\n const cptViewProvidersCount = nodeProviderIndexes >> 20 /* TNodeProviderIndexes.CptViewProvidersCountShift */;\n const startingIndex = canAccessViewProviders\n ? injectablesStart\n : injectablesStart + cptViewProvidersCount;\n // When the host special case applies, only the viewProviders and the component are visible\n const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;\n for (let i = startingIndex; i < endIndex; i++) {\n const providerTokenOrDef = tInjectables[i];\n if ((i < directivesStart && token === providerTokenOrDef) ||\n (i >= directivesStart && providerTokenOrDef.type === token)) {\n return i;\n }\n }\n if (isHostSpecialCase) {\n const dirDef = tInjectables[directivesStart];\n if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {\n return directivesStart;\n }\n }\n return null;\n}\n/**\n * Retrieve or instantiate the injectable from the `LView` at particular `index`.\n *\n * This function checks to see if the value has already been instantiated and if so returns the\n * cached `injectable`. Otherwise if it detects that the value is still a factory it\n * instantiates the `injectable` and caches the value.\n */\nfunction getNodeInjectable(lView, tView, index, tNode) {\n let value = lView[index];\n const tData = tView.data;\n if (isFactory(value)) {\n const factory = value;\n if (factory.resolving) {\n throwCyclicDependencyError(stringifyForError(tData[index]));\n }\n const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);\n factory.resolving = true;\n let prevInjectContext;\n if (ngDevMode) {\n // tData indexes mirror the concrete instances in its corresponding LView.\n // lView[index] here is either the injectable instace itself or a factory,\n // therefore tData[index] is the constructor of that injectable or a\n // definition object that contains the constructor in a `.type` field.\n const token = tData[index].type || tData[index];\n const injector = new NodeInjector(tNode, lView);\n prevInjectContext = setInjectorProfilerContext({ injector, token });\n }\n const previousInjectImplementation = factory.injectImpl\n ? setInjectImplementation(factory.injectImpl)\n : null;\n const success = enterDI(lView, tNode, InjectFlags.Default);\n ngDevMode &&\n assertEqual(success, true, \"Because flags do not contain `SkipSelf' we expect this to always succeed.\");\n try {\n value = lView[index] = factory.factory(undefined, tData, lView, tNode);\n ngDevMode && emitInstanceCreatedByInjectorEvent(value);\n // This code path is hit for both directives and providers.\n // For perf reasons, we want to avoid searching for hooks on providers.\n // It does no harm to try (the hooks just won't exist), but the extra\n // checks are unnecessary and this is a hot path. So we check to see\n // if the index of the dependency is in the directive range for this\n // tNode. If it's not, we know it's a provider and skip hook registration.\n if (tView.firstCreatePass && index >= tNode.directiveStart) {\n ngDevMode && assertDirectiveDef(tData[index]);\n registerPreOrderHooks(index, tData[index], tView);\n }\n }\n finally {\n ngDevMode && setInjectorProfilerContext(prevInjectContext);\n previousInjectImplementation !== null &&\n setInjectImplementation(previousInjectImplementation);\n setIncludeViewProviders(previousIncludeViewProviders);\n factory.resolving = false;\n leaveDI();\n }\n }\n return value;\n}\n/**\n * Returns the bit in an injector's bloom filter that should be used to determine whether or not\n * the directive might be provided by the injector.\n *\n * When a directive is public, it is added to the bloom filter and given a unique ID that can be\n * retrieved on the Type. When the directive isn't public or the token is not a directive `null`\n * is returned as the node injector can not possibly provide that token.\n *\n * @param token the injection token\n * @returns the matching bit to check in the bloom filter or `null` if the token is not known.\n * When the returned value is negative then it represents special values such as `Injector`.\n */\nfunction bloomHashBitOrFactory(token) {\n ngDevMode && assertDefined(token, 'token must be defined');\n if (typeof token === 'string') {\n return token.charCodeAt(0) || 0;\n }\n const tokenId = \n // First check with `hasOwnProperty` so we don't get an inherited ID.\n token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : undefined;\n // Negative token IDs are used for special objects such as `Injector`\n if (typeof tokenId === 'number') {\n if (tokenId >= 0) {\n return tokenId & BLOOM_MASK;\n }\n else {\n ngDevMode &&\n assertEqual(tokenId, -1 /* InjectorMarkers.Injector */, 'Expecting to get Special Injector Id');\n return createNodeInjector;\n }\n }\n else {\n return tokenId;\n }\n}\nfunction bloomHasToken(bloomHash, injectorIndex, injectorView) {\n // Create a mask that targets the specific bit associated with the directive we're looking for.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of\n // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset\n // that should be used.\n const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];\n // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,\n // this injector is a potential match.\n return !!(value & mask);\n}\n/** Returns true if flags prevent parent injector from being searched for tokens */\nfunction shouldSearchParent(flags, isFirstHostTNode) {\n return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode);\n}\nfunction getNodeInjectorLView(nodeInjector) {\n return nodeInjector._lView;\n}\nfunction getNodeInjectorTNode(nodeInjector) {\n return nodeInjector._tNode;\n}\nclass NodeInjector {\n constructor(_tNode, _lView) {\n this._tNode = _tNode;\n this._lView = _lView;\n }\n get(token, notFoundValue, flags) {\n return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue);\n }\n}\n/** Creates a `NodeInjector` for the current node. */\nfunction createNodeInjector() {\n return new NodeInjector(getCurrentTNode(), getLView());\n}\n/**\n * @codeGenApi\n */\nfunction ɵɵgetInheritedFactory(type) {\n return noSideEffects(() => {\n const ownConstructor = type.prototype.constructor;\n const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);\n const objectPrototype = Object.prototype;\n let parent = Object.getPrototypeOf(type.prototype).constructor;\n // Go up the prototype until we hit `Object`.\n while (parent && parent !== objectPrototype) {\n const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);\n // If we hit something that has a factory and the factory isn't the same as the type,\n // we've found the inherited factory. Note the check that the factory isn't the type's\n // own factory is redundant in most cases, but if the user has custom decorators on the\n // class, this lookup will start one level down in the prototype chain, causing us to\n // find the own factory first and potentially triggering an infinite loop downstream.\n if (factory && factory !== ownFactory) {\n return factory;\n }\n parent = Object.getPrototypeOf(parent);\n }\n // There is no factory defined. Either this was improper usage of inheritance\n // (no Angular decorator on the superclass) or there is no constructor at all\n // in the inheritance chain. Since the two cases cannot be distinguished, the\n // latter has to be assumed.\n return (t) => new t();\n });\n}\nfunction getFactoryOf(type) {\n if (isForwardRef(type)) {\n return () => {\n const factory = getFactoryOf(resolveForwardRef(type));\n return factory && factory();\n };\n }\n return getFactoryDef(type);\n}\n/**\n * Returns a value from the closest embedded or node injector.\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nfunction lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) {\n let currentTNode = tNode;\n let currentLView = lView;\n // When an LView with an embedded view injector is inserted, it'll likely be interlaced with\n // nodes who may have injectors (e.g. node injector -> embedded view injector -> node injector).\n // Since the bloom filters for the node injectors have already been constructed and we don't\n // have a way of extracting the records from an injector, the only way to maintain the correct\n // hierarchy when resolving the value is to walk it node-by-node while attempting to resolve\n // the token at each level.\n while (currentTNode !== null &&\n currentLView !== null &&\n currentLView[FLAGS] & 2048 /* LViewFlags.HasEmbeddedViewInjector */ &&\n !(currentLView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {\n ngDevMode && assertTNodeForLView(currentTNode, currentLView);\n // Note that this lookup on the node injector is using the `Self` flag, because\n // we don't want the node injector to look at any parent injectors since we\n // may hit the embedded view injector first.\n const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | InjectFlags.Self, NOT_FOUND);\n if (nodeInjectorValue !== NOT_FOUND) {\n return nodeInjectorValue;\n }\n // Has an explicit type due to a TS bug: https://github.com/microsoft/TypeScript/issues/33191\n let parentTNode = currentTNode.parent;\n // `TNode.parent` includes the parent within the current view only. If it doesn't exist,\n // it means that we've hit the view boundary and we need to go up to the next view.\n if (!parentTNode) {\n // Before we go to the next LView, check if the token exists on the current embedded injector.\n const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR];\n if (embeddedViewInjector) {\n const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags);\n if (embeddedViewInjectorValue !== NOT_FOUND) {\n return embeddedViewInjectorValue;\n }\n }\n // Otherwise keep going up the tree.\n parentTNode = getTNodeFromLView(currentLView);\n currentLView = currentLView[DECLARATION_VIEW];\n }\n currentTNode = parentTNode;\n }\n return notFoundValue;\n}\n/** Gets the TNode associated with an LView inside of the declaration view. */\nfunction getTNodeFromLView(lView) {\n const tView = lView[TVIEW];\n const tViewType = tView.type;\n // The parent pointer differs based on `TView.type`.\n if (tViewType === 2 /* TViewType.Embedded */) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n else if (tViewType === 1 /* TViewType.Component */) {\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n return lView[T_HOST];\n }\n return null;\n}\n\n/**\n * Facade for the attribute injection from DI.\n *\n * @codeGenApi\n */\nfunction ɵɵinjectAttribute(attrNameToInject) {\n return injectAttributeImpl(getCurrentTNode(), attrNameToInject);\n}\n\n/**\n * Attribute decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Attribute = makeParamDecorator('Attribute', (attributeName) => ({\n attributeName,\n __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName),\n}));\n\nlet _reflect = null;\nfunction getReflect() {\n return (_reflect = _reflect || new ReflectionCapabilities());\n}\nfunction reflectDependencies(type) {\n return convertDependencies(getReflect().parameters(type));\n}\nfunction convertDependencies(deps) {\n return deps.map((dep) => reflectDependency(dep));\n}\nfunction reflectDependency(dep) {\n const meta = {\n token: null,\n attribute: null,\n host: false,\n optional: false,\n self: false,\n skipSelf: false,\n };\n if (Array.isArray(dep) && dep.length > 0) {\n for (let j = 0; j < dep.length; j++) {\n const param = dep[j];\n if (param === undefined) {\n // param may be undefined if type of dep is not set by ngtsc\n continue;\n }\n const proto = Object.getPrototypeOf(param);\n if (param instanceof Optional || proto.ngMetadataName === 'Optional') {\n meta.optional = true;\n }\n else if (param instanceof SkipSelf || proto.ngMetadataName === 'SkipSelf') {\n meta.skipSelf = true;\n }\n else if (param instanceof Self || proto.ngMetadataName === 'Self') {\n meta.self = true;\n }\n else if (param instanceof Host || proto.ngMetadataName === 'Host') {\n meta.host = true;\n }\n else if (param instanceof Inject) {\n meta.token = param.token;\n }\n else if (param instanceof Attribute) {\n if (param.attributeName === undefined) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode && `Attribute name must be defined.`);\n }\n meta.attribute = param.attributeName;\n }\n else {\n meta.token = param;\n }\n }\n }\n else if (dep === undefined || (Array.isArray(dep) && dep.length === 0)) {\n meta.token = null;\n }\n else {\n meta.token = dep;\n }\n return meta;\n}\n\n/**\n * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting\n * injectable def (`ɵprov`) onto the injectable type.\n */\nfunction compileInjectable(type, meta) {\n let ngInjectableDef = null;\n let ngFactoryDef = null;\n // if NG_PROV_DEF is already defined on this class then don't overwrite it\n if (!type.hasOwnProperty(NG_PROV_DEF)) {\n Object.defineProperty(type, NG_PROV_DEF, {\n get: () => {\n if (ngInjectableDef === null) {\n const compiler = getCompilerFacade({\n usage: 0 /* JitCompilerUsage.Decorator */,\n kind: 'injectable',\n type,\n });\n ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getInjectableMetadata(type, meta));\n }\n return ngInjectableDef;\n },\n });\n }\n // if NG_FACTORY_DEF is already defined on this class then don't overwrite it\n if (!type.hasOwnProperty(NG_FACTORY_DEF)) {\n Object.defineProperty(type, NG_FACTORY_DEF, {\n get: () => {\n if (ngFactoryDef === null) {\n const compiler = getCompilerFacade({\n usage: 0 /* JitCompilerUsage.Decorator */,\n kind: 'injectable',\n type,\n });\n ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, {\n name: type.name,\n type,\n typeArgumentCount: 0, // In JIT mode types are not available nor used.\n deps: reflectDependencies(type),\n target: compiler.FactoryTarget.Injectable,\n });\n }\n return ngFactoryDef;\n },\n // Leave this configurable so that the factories from directives or pipes can take precedence.\n configurable: true,\n });\n }\n}\nconst USE_VALUE = getClosureSafeProperty({\n provide: String,\n useValue: getClosureSafeProperty,\n});\nfunction isUseClassProvider(meta) {\n return meta.useClass !== undefined;\n}\nfunction isUseValueProvider(meta) {\n return USE_VALUE in meta;\n}\nfunction isUseFactoryProvider(meta) {\n return meta.useFactory !== undefined;\n}\nfunction isUseExistingProvider(meta) {\n return meta.useExisting !== undefined;\n}\nfunction getInjectableMetadata(type, srcMeta) {\n // Allow the compilation of a class with a `@Injectable()` decorator without parameters\n const meta = srcMeta || { providedIn: null };\n const compilerMeta = {\n name: type.name,\n type: type,\n typeArgumentCount: 0,\n providedIn: meta.providedIn,\n };\n if ((isUseClassProvider(meta) || isUseFactoryProvider(meta)) && meta.deps !== undefined) {\n compilerMeta.deps = convertDependencies(meta.deps);\n }\n // Check to see if the user explicitly provided a `useXxxx` property.\n if (isUseClassProvider(meta)) {\n compilerMeta.useClass = meta.useClass;\n }\n else if (isUseValueProvider(meta)) {\n compilerMeta.useValue = meta.useValue;\n }\n else if (isUseFactoryProvider(meta)) {\n compilerMeta.useFactory = meta.useFactory;\n }\n else if (isUseExistingProvider(meta)) {\n compilerMeta.useExisting = meta.useExisting;\n }\n return compilerMeta;\n}\n\n/**\n * Injectable decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nconst Injectable = makeDecorator('Injectable', undefined, undefined, undefined, (type, meta) => compileInjectable(type, meta));\n\n/**\n * Create a new `Injector` which is configured using a `defType` of `InjectorType`s.\n */\nfunction createInjector(defType, parent = null, additionalProviders = null, name) {\n const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name);\n injector.resolveInjectorInitializers();\n return injector;\n}\n/**\n * Creates a new injector without eagerly resolving its injector types. Can be used in places\n * where resolving the injector types immediately can lead to an infinite loop. The injector types\n * should be resolved at a later point by calling `_resolveInjectorDefTypes`.\n */\nfunction createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = new Set()) {\n const providers = [additionalProviders || EMPTY_ARRAY, importProvidersFrom(defType)];\n name = name || (typeof defType === 'object' ? undefined : stringify(defType));\n return new R3Injector(providers, parent || getNullInjector(), name || null, scopes);\n}\n\n/**\n * Concrete injectors implement this interface. Injectors are configured\n * with [providers](guide/di/dependency-injection-providers) that associate\n * dependencies of various types with [injection tokens](guide/di/dependency-injection-providers).\n *\n * @see [DI Providers](guide/di/dependency-injection-providers).\n * @see {@link StaticProvider}\n *\n * @usageNotes\n *\n * The following example creates a service injector instance.\n *\n * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}\n *\n * ### Usage example\n *\n * {@example core/di/ts/injector_spec.ts region='Injector'}\n *\n * `Injector` returns itself when given `Injector` as a token:\n *\n * {@example core/di/ts/injector_spec.ts region='injectInjector'}\n *\n * @publicApi\n */\nclass Injector {\n static { this.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; }\n static { this.NULL = new NullInjector(); }\n static create(options, parent) {\n if (Array.isArray(options)) {\n return createInjector({ name: '' }, parent, options, '');\n }\n else {\n const name = options.name ?? '';\n return createInjector({ name }, options.parent, options.providers, name);\n }\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: Injector,\n providedIn: 'any',\n factory: () => ɵɵinject(INJECTOR$1),\n }); }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */; }\n}\n\n/*!\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n/**\n * Creates a token that can be used to inject static attributes of the host node.\n *\n * @usageNotes\n * ### Injecting an attribute that is known to exist\n * ```typescript\n * @Directive()\n * class MyDir {\n * attr: string = inject(new HostAttributeToken('some-attr'));\n * }\n * ```\n *\n * ### Optionally injecting an attribute\n * ```typescript\n * @Directive()\n * class MyDir {\n * attr: string | null = inject(new HostAttributeToken('some-attr'), {optional: true});\n * }\n * ```\n * @publicApi\n */\nclass HostAttributeToken {\n constructor(attributeName) {\n this.attributeName = attributeName;\n /** @internal */\n this.__NG_ELEMENT_ID__ = () => ɵɵinjectAttribute(this.attributeName);\n }\n toString() {\n return `HostAttributeToken ${this.attributeName}`;\n }\n}\n\n/**\n * A token that can be used to inject the tag name of the host node.\n *\n * @usageNotes\n * ### Injecting a tag name that is known to exist\n * ```typescript\n * @Directive()\n * class MyDir {\n * tagName: string = inject(HOST_TAG_NAME);\n * }\n * ```\n *\n * ### Optionally injecting a tag name\n * ```typescript\n * @Directive()\n * class MyDir {\n * tagName: string | null = inject(HOST_TAG_NAME, {optional: true});\n * }\n * ```\n * @publicApi\n */\nconst HOST_TAG_NAME = new InjectionToken(ngDevMode ? 'HOST_TAG_NAME' : '');\n// HOST_TAG_NAME should be resolved at the current node, similar to e.g. ElementRef,\n// so we manually specify __NG_ELEMENT_ID__ here, instead of using a factory.\n// tslint:disable-next-line:no-toplevel-property-access\nHOST_TAG_NAME.__NG_ELEMENT_ID__ = (flags) => {\n const tNode = getCurrentTNode();\n if (tNode === null) {\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&\n 'HOST_TAG_NAME can only be injected in directives and components ' +\n 'during construction time (in a class constructor or as a class field initializer)');\n }\n if (tNode.type & 2 /* TNodeType.Element */) {\n return tNode.value;\n }\n if (flags & InjectFlags.Optional) {\n return null;\n }\n throw new RuntimeError(204 /* RuntimeErrorCode.INVALID_INJECTION_TOKEN */, ngDevMode &&\n `HOST_TAG_NAME was used on ${getDevModeNodeName(tNode)} which doesn't have an underlying element in the DOM. ` +\n `This is invalid, and so the dependency should be marked as optional.`);\n};\nfunction getDevModeNodeName(tNode) {\n if (tNode.type & 8 /* TNodeType.ElementContainer */) {\n return 'an ';\n }\n else if (tNode.type & 4 /* TNodeType.Container */) {\n return 'an ';\n }\n else if (tNode.type & 128 /* TNodeType.LetDeclaration */) {\n return 'an @let declaration';\n }\n else {\n return 'a node';\n }\n}\n\n/**\n * @module\n * @description\n * The `di` module provides dependency injection container services.\n */\n\n/**\n * This file should not be necessary because node resolution should just default to `./di/index`!\n *\n * However it does not seem to work and it breaks:\n * - //packages/animations/browser/test:test_web_chromium-local\n * - //packages/compiler-cli/test:extract_i18n\n * - //packages/compiler-cli/test:ngc\n * - //packages/compiler-cli/test:perform_watch\n * - //packages/compiler-cli/test/diagnostics:check_types\n * - //packages/compiler-cli/test/transformers:test\n * - //packages/compiler/test:test\n * - //tools/public_api_guard:core_api\n *\n * Remove this file once the above is solved or wait until `ngc` is deleted and then it should be\n * safe to delete this file.\n */\n\nconst ERROR_ORIGINAL_ERROR = 'ngOriginalError';\nfunction wrappedError(message, originalError) {\n const msg = `${message} caused by: ${originalError instanceof Error ? originalError.message : originalError}`;\n const error = Error(msg);\n error[ERROR_ORIGINAL_ERROR] = originalError;\n return error;\n}\nfunction getOriginalError(error) {\n return error[ERROR_ORIGINAL_ERROR];\n}\n\nconst SCHEDULE_IN_ROOT_ZONE_DEFAULT = true;\n\n/**\n * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.\n * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`\n * is injected in a component or directive, the callbacks run when that component or\n * directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.\n *\n * @publicApi\n */\nclass DestroyRef {\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectDestroyRef; }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ENV_ID__ = (injector) => injector; }\n}\nclass NodeInjectorDestroyRef extends DestroyRef {\n constructor(_lView) {\n super();\n this._lView = _lView;\n }\n onDestroy(callback) {\n storeLViewOnDestroy(this._lView, callback);\n return () => removeLViewOnDestroy(this._lView, callback);\n }\n}\nfunction injectDestroyRef() {\n return new NodeInjectorDestroyRef(getLView());\n}\n\n/**\n * Internal implementation of the pending tasks service.\n */\nclass PendingTasks {\n constructor() {\n this.taskId = 0;\n this.pendingTasks = new Set();\n this.hasPendingTasks = new BehaviorSubject(false);\n }\n get _hasPendingTasks() {\n return this.hasPendingTasks.value;\n }\n add() {\n if (!this._hasPendingTasks) {\n this.hasPendingTasks.next(true);\n }\n const taskId = this.taskId++;\n this.pendingTasks.add(taskId);\n return taskId;\n }\n remove(taskId) {\n this.pendingTasks.delete(taskId);\n if (this.pendingTasks.size === 0 && this._hasPendingTasks) {\n this.hasPendingTasks.next(false);\n }\n }\n ngOnDestroy() {\n this.pendingTasks.clear();\n if (this._hasPendingTasks) {\n this.hasPendingTasks.next(false);\n }\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: PendingTasks,\n providedIn: 'root',\n factory: () => new PendingTasks(),\n }); }\n}\n/**\n * Experimental service that keeps track of pending tasks contributing to the stableness of Angular\n * application. While several existing Angular services (ex.: `HttpClient`) will internally manage\n * tasks influencing stability, this API gives control over stability to library and application\n * developers for specific cases not covered by Angular internals.\n *\n * The concept of stability comes into play in several important scenarios:\n * - SSR process needs to wait for the application stability before serializing and sending rendered\n * HTML;\n * - tests might want to delay assertions until the application becomes stable;\n *\n * @usageNotes\n * ```typescript\n * const pendingTasks = inject(ExperimentalPendingTasks);\n * const taskCleanup = pendingTasks.add();\n * // do work that should block application's stability and then:\n * taskCleanup();\n * ```\n *\n * This API is experimental. Neither the shape, nor the underlying behavior is stable and can change\n * in patch versions. We will iterate on the exact API based on the feedback and our understanding\n * of the problem and solution space.\n *\n * @publicApi\n * @experimental\n */\nclass ExperimentalPendingTasks {\n constructor() {\n this.internalPendingTasks = inject(PendingTasks);\n }\n /**\n * Adds a new task that should block application's stability.\n * @returns A cleanup function that removes a task when called.\n */\n add() {\n const taskId = this.internalPendingTasks.add();\n return () => this.internalPendingTasks.remove(taskId);\n }\n /** @nocollapse */\n static { this.ɵprov = ɵɵdefineInjectable({\n token: ExperimentalPendingTasks,\n providedIn: 'root',\n factory: () => new ExperimentalPendingTasks(),\n }); }\n}\n\nclass EventEmitter_ extends Subject {\n constructor(isAsync = false) {\n super();\n this.destroyRef = undefined;\n this.pendingTasks = undefined;\n this.__isAsync = isAsync;\n // Attempt to retrieve a `DestroyRef` and `PendingTasks` optionally.\n // For backwards compatibility reasons, this cannot be required.\n if (isInInjectionContext()) {\n // `DestroyRef` is optional because it is not available in all contexts.\n // But it is useful to properly complete the `EventEmitter` if used with `outputToObservable`\n // when the component/directive is destroyed. (See `outputToObservable` for more details.)\n this.destroyRef = inject(DestroyRef, { optional: true }) ?? undefined;\n this.pendingTasks = inject(PendingTasks, { optional: true }) ?? undefined;\n }\n }\n emit(value) {\n const prevConsumer = setActiveConsumer$1(null);\n try {\n super.next(value);\n }\n finally {\n setActiveConsumer$1(prevConsumer);\n }\n }\n subscribe(observerOrNext, error, complete) {\n let nextFn = observerOrNext;\n let errorFn = error || (() => null);\n let completeFn = complete;\n if (observerOrNext && typeof observerOrNext === 'object') {\n const observer = observerOrNext;\n nextFn = observer.next?.bind(observer);\n errorFn = observer.error?.bind(observer);\n completeFn = observer.complete?.bind(observer);\n }\n if (this.__isAsync) {\n errorFn = this.wrapInTimeout(errorFn);\n if (nextFn) {\n nextFn = this.wrapInTimeout(nextFn);\n }\n if (completeFn) {\n completeFn = this.wrapInTimeout(completeFn);\n }\n }\n const sink = super.subscribe({ next: nextFn, error: errorFn, complete: completeFn });\n if (observerOrNext instanceof Subscription) {\n observerOrNext.add(sink);\n }\n return sink;\n }\n wrapInTimeout(fn) {\n return (value) => {\n const taskId = this.pendingTasks?.add();\n setTimeout(() => {\n fn(value);\n if (taskId !== undefined) {\n this.pendingTasks?.remove(taskId);\n }\n });\n };\n }\n}\n/**\n * @publicApi\n */\nconst EventEmitter = EventEmitter_;\n\nfunction noop(...args) {\n // Do nothing.\n}\n\n/**\n * Gets a scheduling function that runs the callback after the first of setTimeout and\n * requestAnimationFrame resolves.\n *\n * - `requestAnimationFrame` ensures that change detection runs ahead of a browser repaint.\n * This ensures that the create and update passes of a change detection always happen\n * in the same frame.\n * - When the browser is resource-starved, `rAF` can execute _before_ a `setTimeout` because\n * rendering is a very high priority process. This means that `setTimeout` cannot guarantee\n * same-frame create and update pass, when `setTimeout` is used to schedule the update phase.\n * - While `rAF` gives us the desirable same-frame updates, it has two limitations that\n * prevent it from being used alone. First, it does not run in background tabs, which would\n * prevent Angular from initializing an application when opened in a new tab (for example).\n * Second, repeated calls to requestAnimationFrame will execute at the refresh rate of the\n * hardware (~16ms for a 60Hz display). This would cause significant slowdown of tests that\n * are written with several updates and asserts in the form of \"update; await stable; assert;\".\n * - Both `setTimeout` and `rAF` are able to \"coalesce\" several events from a single user\n * interaction into a single change detection. Importantly, this reduces view tree traversals when\n * compared to an alternative timing mechanism like `queueMicrotask`, where change detection would\n * then be interleaves between each event.\n *\n * By running change detection after the first of `setTimeout` and `rAF` to execute, we get the\n * best of both worlds.\n *\n * @returns a function to cancel the scheduled callback\n */\nfunction scheduleCallbackWithRafRace(callback) {\n let timeoutId;\n let animationFrameId;\n function cleanup() {\n callback = noop;\n try {\n if (animationFrameId !== undefined && typeof cancelAnimationFrame === 'function') {\n cancelAnimationFrame(animationFrameId);\n }\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n catch {\n // Clearing/canceling can fail in tests due to the timing of functions being patched and unpatched\n // Just ignore the errors - we protect ourselves from this issue by also making the callback a no-op.\n }\n }\n timeoutId = setTimeout(() => {\n callback();\n cleanup();\n });\n if (typeof requestAnimationFrame === 'function') {\n animationFrameId = requestAnimationFrame(() => {\n callback();\n cleanup();\n });\n }\n return () => cleanup();\n}\nfunction scheduleCallbackWithMicrotask(callback) {\n queueMicrotask(() => callback());\n return () => {\n callback = noop;\n };\n}\n\nclass AsyncStackTaggingZoneSpec {\n constructor(namePrefix, consoleAsyncStackTaggingImpl = console) {\n this.name = 'asyncStackTagging for ' + namePrefix;\n this.createTask = consoleAsyncStackTaggingImpl?.createTask ?? (() => null);\n }\n onScheduleTask(delegate, _current, target, task) {\n task.consoleTask = this.createTask(`Zone - ${task.source || task.type}`);\n return delegate.scheduleTask(target, task);\n }\n onInvokeTask(delegate, _currentZone, targetZone, task, applyThis, applyArgs) {\n let ret;\n if (task.consoleTask) {\n ret = task.consoleTask.run(() => delegate.invokeTask(targetZone, task, applyThis, applyArgs));\n }\n else {\n ret = delegate.invokeTask(targetZone, task, applyThis, applyArgs);\n }\n return ret;\n }\n}\n\nconst isAngularZoneProperty = 'isAngularZone';\nconst angularZoneInstanceIdProperty = isAngularZoneProperty + '_ID';\nlet ngZoneInstanceId = 0;\n/**\n * An injectable service for executing work inside or outside of the Angular zone.\n *\n * The most common use of this service is to optimize performance when starting a work consisting of\n * one or more asynchronous tasks that don't require UI updates or error handling to be handled by\n * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks\n * can reenter the Angular zone via {@link #run}.\n *\n * \n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Component, NgZone} from '@angular/core';\n * import {NgIf} from '@angular/common';\n *\n * @Component({\n * selector: 'ng-zone-demo',\n * template: `\n *

Demo: NgZone

\n *\n *

Progress: {{progress}}%

\n *

= 100\">Done processing {{label}} of Angular zone!

\n *\n * \n * \n * `,\n * })\n * export class NgZoneDemo {\n * progress: number = 0;\n * label: string;\n *\n * constructor(private _ngZone: NgZone) {}\n *\n * // Loop inside the Angular zone\n * // so the UI DOES refresh after each setTimeout cycle\n * processWithinAngularZone() {\n * this.label = 'inside';\n * this.progress = 0;\n * this._increaseProgress(() => console.log('Inside Done!'));\n * }\n *\n * // Loop outside of the Angular zone\n * // so the UI DOES NOT refresh after each setTimeout cycle\n * processOutsideOfAngularZone() {\n * this.label = 'outside';\n * this.progress = 0;\n * this._ngZone.runOutsideAngular(() => {\n * this._increaseProgress(() => {\n * // reenter the Angular zone and display done\n * this._ngZone.run(() => { console.log('Outside Done!'); });\n * });\n * });\n * }\n *\n * _increaseProgress(doneCallback: () => void) {\n * this.progress += 1;\n * console.log(`Current progress: ${this.progress}%`);\n *\n * if (this.progress < 100) {\n * window.setTimeout(() => this._increaseProgress(doneCallback), 10);\n * } else {\n * doneCallback();\n * }\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass NgZone {\n constructor(options) {\n this.hasPendingMacrotasks = false;\n this.hasPendingMicrotasks = false;\n /**\n * Whether there are no outstanding microtasks or macrotasks.\n */\n this.isStable = true;\n /**\n * Notifies when code enters Angular Zone. This gets fired first on VM Turn.\n */\n this.onUnstable = new EventEmitter(false);\n /**\n * Notifies when there is no more microtasks enqueued in the current VM Turn.\n * This is a hint for Angular to do change detection, which may enqueue more microtasks.\n * For this reason this event can fire multiple times per VM Turn.\n */\n this.onMicrotaskEmpty = new EventEmitter(false);\n /**\n * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which\n * implies we are about to relinquish VM turn.\n * This event gets called just once.\n */\n this.onStable = new EventEmitter(false);\n /**\n * Notifies that an error has been delivered.\n */\n this.onError = new EventEmitter(false);\n const { enableLongStackTrace = false, shouldCoalesceEventChangeDetection = false, shouldCoalesceRunChangeDetection = false, scheduleInRootZone = SCHEDULE_IN_ROOT_ZONE_DEFAULT, } = options;\n if (typeof Zone == 'undefined') {\n throw new RuntimeError(908 /* RuntimeErrorCode.MISSING_ZONEJS */, ngDevMode && `In this configuration Angular requires Zone.js`);\n }\n Zone.assertZonePatched();\n const self = this;\n self._nesting = 0;\n self._outer = self._inner = Zone.current;\n // AsyncStackTaggingZoneSpec provides `linked stack traces` to show\n // where the async operation is scheduled. For more details, refer\n // to this article, https://developer.chrome.com/blog/devtools-better-angular-debugging/\n // And we only import this AsyncStackTaggingZoneSpec in development mode,\n // in the production mode, the AsyncStackTaggingZoneSpec will be tree shaken away.\n if (ngDevMode) {\n self._inner = self._inner.fork(new AsyncStackTaggingZoneSpec('Angular'));\n }\n if (Zone['TaskTrackingZoneSpec']) {\n self._inner = self._inner.fork(new Zone['TaskTrackingZoneSpec']());\n }\n if (enableLongStackTrace && Zone['longStackTraceZoneSpec']) {\n self._inner = self._inner.fork(Zone['longStackTraceZoneSpec']);\n }\n // if shouldCoalesceRunChangeDetection is true, all tasks including event tasks will be\n // coalesced, so shouldCoalesceEventChangeDetection option is not necessary and can be skipped.\n self.shouldCoalesceEventChangeDetection =\n !shouldCoalesceRunChangeDetection && shouldCoalesceEventChangeDetection;\n self.shouldCoalesceRunChangeDetection = shouldCoalesceRunChangeDetection;\n self.callbackScheduled = false;\n self.scheduleInRootZone = scheduleInRootZone;\n forkInnerZoneWithAngularBehavior(self);\n }\n /**\n This method checks whether the method call happens within an Angular Zone instance.\n */\n static isInAngularZone() {\n // Zone needs to be checked, because this method might be called even when NoopNgZone is used.\n return typeof Zone !== 'undefined' && Zone.current.get(isAngularZoneProperty) === true;\n }\n /**\n Assures that the method is called within the Angular Zone, otherwise throws an error.\n */\n static assertInAngularZone() {\n if (!NgZone.isInAngularZone()) {\n throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to be in Angular Zone, but it is not!');\n }\n }\n /**\n Assures that the method is called outside of the Angular Zone, otherwise throws an error.\n */\n static assertNotInAngularZone() {\n if (NgZone.isInAngularZone()) {\n throw new RuntimeError(909 /* RuntimeErrorCode.UNEXPECTED_ZONE_STATE */, ngDevMode && 'Expected to not be in Angular Zone, but it is!');\n }\n }\n /**\n * Executes the `fn` function synchronously within the Angular zone and returns value returned by\n * the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n run(fn, applyThis, applyArgs) {\n return this._inner.run(fn, applyThis, applyArgs);\n }\n /**\n * Executes the `fn` function synchronously within the Angular zone as a task and returns value\n * returned by the function.\n *\n * Running functions via `run` allows you to reenter Angular zone from a task that was executed\n * outside of the Angular zone (typically started via {@link #runOutsideAngular}).\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * within the Angular zone.\n *\n * If a synchronous error happens it will be rethrown and not reported via `onError`.\n */\n runTask(fn, applyThis, applyArgs, name) {\n const zone = this._inner;\n const task = zone.scheduleEventTask('NgZoneEvent: ' + name, fn, EMPTY_PAYLOAD, noop, noop);\n try {\n return zone.runTask(task, applyThis, applyArgs);\n }\n finally {\n zone.cancelTask(task);\n }\n }\n /**\n * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not\n * rethrown.\n */\n runGuarded(fn, applyThis, applyArgs) {\n return this._inner.runGuarded(fn, applyThis, applyArgs);\n }\n /**\n * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by\n * the function.\n *\n * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do\n * work that\n * doesn't trigger Angular change-detection or is subject to Angular's error handling.\n *\n * Any future tasks or microtasks scheduled from within this function will continue executing from\n * outside of the Angular zone.\n *\n * Use {@link #run} to reenter the Angular zone and do work that updates the application model.\n */\n runOutsideAngular(fn) {\n return this._outer.run(fn);\n }\n}\nconst EMPTY_PAYLOAD = {};\nfunction checkStable(zone) {\n // TODO: @JiaLiPassion, should check zone.isCheckStableRunning to prevent\n // re-entry. The case is:\n //\n // @Component({...})\n // export class AppComponent {\n // constructor(private ngZone: NgZone) {\n // this.ngZone.onStable.subscribe(() => {\n // this.ngZone.run(() => console.log('stable'););\n // });\n // }\n //\n // The onStable subscriber run another function inside ngZone\n // which causes `checkStable()` re-entry.\n // But this fix causes some issues in g3, so this fix will be\n // launched in another PR.\n if (zone._nesting == 0 && !zone.hasPendingMicrotasks && !zone.isStable) {\n try {\n zone._nesting++;\n zone.onMicrotaskEmpty.emit(null);\n }\n finally {\n zone._nesting--;\n if (!zone.hasPendingMicrotasks) {\n try {\n zone.runOutsideAngular(() => zone.onStable.emit(null));\n }\n finally {\n zone.isStable = true;\n }\n }\n }\n }\n}\nfunction delayChangeDetectionForEvents(zone) {\n /**\n * We also need to check _nesting here\n * Consider the following case with shouldCoalesceRunChangeDetection = true\n *\n * ngZone.run(() => {});\n * ngZone.run(() => {});\n *\n * We want the two `ngZone.run()` only trigger one change detection\n * when shouldCoalesceRunChangeDetection is true.\n * And because in this case, change detection run in async way(requestAnimationFrame),\n * so we also need to check the _nesting here to prevent multiple\n * change detections.\n */\n if (zone.isCheckStableRunning || zone.callbackScheduled) {\n return;\n }\n zone.callbackScheduled = true;\n function scheduleCheckStable() {\n scheduleCallbackWithRafRace(() => {\n zone.callbackScheduled = false;\n updateMicroTaskStatus(zone);\n zone.isCheckStableRunning = true;\n checkStable(zone);\n zone.isCheckStableRunning = false;\n });\n }\n if (zone.scheduleInRootZone) {\n Zone.root.run(() => {\n scheduleCheckStable();\n });\n }\n else {\n zone._outer.run(() => {\n scheduleCheckStable();\n });\n }\n updateMicroTaskStatus(zone);\n}\nfunction forkInnerZoneWithAngularBehavior(zone) {\n const delayChangeDetectionForEventsDelegate = () => {\n delayChangeDetectionForEvents(zone);\n };\n const instanceId = ngZoneInstanceId++;\n zone._inner = zone._inner.fork({\n name: 'angular',\n properties: {\n [isAngularZoneProperty]: true,\n [angularZoneInstanceIdProperty]: instanceId,\n [angularZoneInstanceIdProperty + instanceId]: true,\n },\n onInvokeTask: (delegate, current, target, task, applyThis, applyArgs) => {\n // Prevent triggering change detection when the flag is detected.\n if (shouldBeIgnoredByZone(applyArgs)) {\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n try {\n onEnter(zone);\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n }\n finally {\n if ((zone.shouldCoalesceEventChangeDetection && task.type === 'eventTask') ||\n zone.shouldCoalesceRunChangeDetection) {\n delayChangeDetectionForEventsDelegate();\n }\n onLeave(zone);\n }\n },\n onInvoke: (delegate, current, target, callback, applyThis, applyArgs, source) => {\n try {\n onEnter(zone);\n return delegate.invoke(target, callback, applyThis, applyArgs, source);\n }\n finally {\n if (zone.shouldCoalesceRunChangeDetection &&\n // Do not delay change detection when the task is the scheduler's tick.\n // We need to synchronously trigger the stability logic so that the\n // zone-based scheduler can prevent a duplicate ApplicationRef.tick\n // by first checking if the scheduler tick is running. This does seem a bit roundabout,\n // but we _do_ still want to trigger all the correct events when we exit the zone.run\n // (`onMicrotaskEmpty` and `onStable` _should_ emit; developers can have code which\n // relies on these events happening after change detection runs).\n // Note: `zone.callbackScheduled` is already in delayChangeDetectionForEventsDelegate\n // but is added here as well to prevent reads of applyArgs when not necessary\n !zone.callbackScheduled &&\n !isSchedulerTick(applyArgs)) {\n delayChangeDetectionForEventsDelegate();\n }\n onLeave(zone);\n }\n },\n onHasTask: (delegate, current, target, hasTaskState) => {\n delegate.hasTask(target, hasTaskState);\n if (current === target) {\n // We are only interested in hasTask events which originate from our zone\n // (A child hasTask event is not interesting to us)\n if (hasTaskState.change == 'microTask') {\n zone._hasPendingMicrotasks = hasTaskState.microTask;\n updateMicroTaskStatus(zone);\n checkStable(zone);\n }\n else if (hasTaskState.change == 'macroTask') {\n zone.hasPendingMacrotasks = hasTaskState.macroTask;\n }\n }\n },\n onHandleError: (delegate, current, target, error) => {\n delegate.handleError(target, error);\n zone.runOutsideAngular(() => zone.onError.emit(error));\n return false;\n },\n });\n}\nfunction updateMicroTaskStatus(zone) {\n if (zone._hasPendingMicrotasks ||\n ((zone.shouldCoalesceEventChangeDetection || zone.shouldCoalesceRunChangeDetection) &&\n zone.callbackScheduled === true)) {\n zone.hasPendingMicrotasks = true;\n }\n else {\n zone.hasPendingMicrotasks = false;\n }\n}\nfunction onEnter(zone) {\n zone._nesting++;\n if (zone.isStable) {\n zone.isStable = false;\n zone.onUnstable.emit(null);\n }\n}\nfunction onLeave(zone) {\n zone._nesting--;\n checkStable(zone);\n}\n/**\n * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls\n * to framework to perform rendering.\n */\nclass NoopNgZone {\n constructor() {\n this.hasPendingMicrotasks = false;\n this.hasPendingMacrotasks = false;\n this.isStable = true;\n this.onUnstable = new EventEmitter();\n this.onMicrotaskEmpty = new EventEmitter();\n this.onStable = new EventEmitter();\n this.onError = new EventEmitter();\n }\n run(fn, applyThis, applyArgs) {\n return fn.apply(applyThis, applyArgs);\n }\n runGuarded(fn, applyThis, applyArgs) {\n return fn.apply(applyThis, applyArgs);\n }\n runOutsideAngular(fn) {\n return fn();\n }\n runTask(fn, applyThis, applyArgs, name) {\n return fn.apply(applyThis, applyArgs);\n }\n}\nfunction shouldBeIgnoredByZone(applyArgs) {\n return hasApplyArgsData(applyArgs, '__ignore_ng_zone__');\n}\nfunction isSchedulerTick(applyArgs) {\n return hasApplyArgsData(applyArgs, '__scheduler_tick__');\n}\nfunction hasApplyArgsData(applyArgs, key) {\n if (!Array.isArray(applyArgs)) {\n return false;\n }\n // We should only ever get 1 arg passed through to invokeTask.\n // Short circuit here incase that behavior changes.\n if (applyArgs.length !== 1) {\n return false;\n }\n return applyArgs[0]?.data?.[key] === true;\n}\nfunction getNgZone(ngZoneToUse = 'zone.js', options) {\n if (ngZoneToUse === 'noop') {\n return new NoopNgZone();\n }\n if (ngZoneToUse === 'zone.js') {\n return new NgZone(options);\n }\n return ngZoneToUse;\n}\n\n// Public API for Zone\n\n/**\n * Provides a hook for centralized exception handling.\n *\n * The default implementation of `ErrorHandler` prints error messages to the `console`. To\n * intercept error handling, write a custom exception handler that replaces this default as\n * appropriate for your app.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * class MyErrorHandler implements ErrorHandler {\n * handleError(error) {\n * // do something with the exception\n * }\n * }\n *\n * @NgModule({\n * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]\n * })\n * class MyModule {}\n * ```\n *\n * @publicApi\n */\nclass ErrorHandler {\n constructor() {\n /**\n * @internal\n */\n this._console = console;\n }\n handleError(error) {\n const originalError = this._findOriginalError(error);\n this._console.error('ERROR', error);\n if (originalError) {\n this._console.error('ORIGINAL ERROR', originalError);\n }\n }\n /** @internal */\n _findOriginalError(error) {\n let e = error && getOriginalError(error);\n while (e && getOriginalError(e)) {\n e = getOriginalError(e);\n }\n return e || null;\n }\n}\n/**\n * `InjectionToken` used to configure how to call the `ErrorHandler`.\n *\n * `NgZone` is provided by default today so the default (and only) implementation for this\n * is calling `ErrorHandler.handleError` outside of the Angular zone.\n */\nconst INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'internal error handler' : '', {\n providedIn: 'root',\n factory: () => {\n const zone = inject(NgZone);\n const userErrorHandler = inject(ErrorHandler);\n return (e) => zone.runOutsideAngular(() => userErrorHandler.handleError(e));\n },\n});\n\n/**\n * An `OutputEmitterRef` is created by the `output()` function and can be\n * used to emit values to consumers of your directive or component.\n *\n * Consumers of your directive/component can bind to the output and\n * subscribe to changes via the bound event syntax. For example:\n *\n * ```html\n * \n * ```\n *\n * @developerPreview\n */\nclass OutputEmitterRef {\n constructor() {\n this.destroyed = false;\n this.listeners = null;\n this.errorHandler = inject(ErrorHandler, { optional: true });\n /** @internal */\n this.destroyRef = inject(DestroyRef);\n // Clean-up all listeners and mark as destroyed upon destroy.\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.listeners = null;\n });\n }\n subscribe(callback) {\n if (this.destroyed) {\n throw new RuntimeError(953 /* RuntimeErrorCode.OUTPUT_REF_DESTROYED */, ngDevMode &&\n 'Unexpected subscription to destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.');\n }\n (this.listeners ??= []).push(callback);\n return {\n unsubscribe: () => {\n const idx = this.listeners?.indexOf(callback);\n if (idx !== undefined && idx !== -1) {\n this.listeners?.splice(idx, 1);\n }\n },\n };\n }\n /** Emits a new value to the output. */\n emit(value) {\n if (this.destroyed) {\n throw new RuntimeError(953 /* RuntimeErrorCode.OUTPUT_REF_DESTROYED */, ngDevMode &&\n 'Unexpected emit for destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.');\n }\n if (this.listeners === null) {\n return;\n }\n const previousConsumer = setActiveConsumer$1(null);\n try {\n for (const listenerFn of this.listeners) {\n try {\n listenerFn(value);\n }\n catch (err) {\n this.errorHandler?.handleError(err);\n }\n }\n }\n finally {\n setActiveConsumer$1(previousConsumer);\n }\n }\n}\n/** Gets the owning `DestroyRef` for the given output. */\nfunction getOutputDestroyRef(ref) {\n return ref.destroyRef;\n}\n\n/**\n * The `output` function allows declaration of Angular outputs in\n * directives and components.\n *\n * You can use outputs to emit values to parent directives and component.\n * Parents can subscribe to changes via:\n *\n * - template event bindings. For example, `(myOutput)=\"doSomething($event)\"`\n * - programmatic subscription by using `OutputRef#subscribe`.\n *\n * @usageNotes\n *\n * To use `output()`, import the function from `@angular/core`.\n *\n * ```ts\n * import {output} from '@angular/core';\n * ```\n *\n * Inside your component, introduce a new class member and initialize\n * it with a call to `output`.\n *\n * ```ts\n * @Directive({\n * ...\n * })\n * export class MyDir {\n * nameChange = output(); // OutputEmitterRef\n * onClick = output(); // OutputEmitterRef\n * }\n * ```\n *\n * You can emit values to consumers of your directive, by using\n * the `emit` method from `OutputEmitterRef`.\n *\n * ```ts\n * updateName(newName: string): void {\n * this.nameChange.emit(newName);\n * }\n * ```\n *\n * @developerPreview\n * @initializerApiFunction {\"showTypesInSignaturePreview\": true}\n */\nfunction output(opts) {\n ngDevMode && assertInInjectionContext(output);\n return new OutputEmitterRef();\n}\n\nfunction inputFunction(initialValue, opts) {\n ngDevMode && assertInInjectionContext(input);\n return createInputSignal(initialValue, opts);\n}\nfunction inputRequiredFunction(opts) {\n ngDevMode && assertInInjectionContext(input);\n return createInputSignal(REQUIRED_UNSET_VALUE, opts);\n}\n/**\n * The `input` function allows declaration of Angular inputs in directives\n * and components.\n *\n * There are two variants of inputs that can be declared:\n *\n * 1. **Optional inputs** with an initial value.\n * 2. **Required inputs** that consumers need to set.\n *\n * By default, the `input` function will declare optional inputs that\n * always have an initial value. Required inputs can be declared\n * using the `input.required()` function.\n *\n * Inputs are signals. The values of an input are exposed as a `Signal`.\n * The signal always holds the latest value of the input that is bound\n * from the parent.\n *\n * @usageNotes\n * To use signal-based inputs, import `input` from `@angular/core`.\n *\n * ```\n * import {input} from '@angular/core`;\n * ```\n *\n * Inside your component, introduce a new class member and initialize\n * it with a call to `input` or `input.required`.\n *\n * ```ts\n * @Component({\n * ...\n * })\n * export class UserProfileComponent {\n * firstName = input(); // Signal\n * lastName = input.required(); // Signal\n * age = input(0) // Signal\n * }\n * ```\n *\n * Inside your component template, you can display values of the inputs\n * by calling the signal.\n *\n * ```html\n * {{firstName()}}\n * ```\n *\n * @developerPreview\n * @initializerApiFunction\n */\nconst input = (() => {\n // Note: This may be considered a side-effect, but nothing will depend on\n // this assignment, unless this `input` constant export is accessed. It's a\n // self-contained side effect that is local to the user facing`input` export.\n inputFunction.required = inputRequiredFunction;\n return inputFunction;\n})();\n\n/**\n * Creates an ElementRef from the most recent node.\n *\n * @returns The ElementRef instance to use\n */\nfunction injectElementRef() {\n return createElementRef(getCurrentTNode(), getLView());\n}\n/**\n * Creates an ElementRef given a node.\n *\n * @param tNode The node for which you'd like an ElementRef\n * @param lView The view to which the node belongs\n * @returns The ElementRef instance to use\n */\nfunction createElementRef(tNode, lView) {\n return new ElementRef(getNativeByTNode(tNode, lView));\n}\n/**\n * A wrapper around a native element inside of a View.\n *\n * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM\n * element.\n *\n * @security Permitting direct access to the DOM can make your application more vulnerable to\n * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the\n * [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\n// Note: We don't expose things like `Injector`, `ViewContainer`, ... here,\n// i.e. users have to ask for what they need. With that, we can build better analysis tools\n// and could do better codegen in the future.\nclass ElementRef {\n constructor(nativeElement) {\n this.nativeElement = nativeElement;\n }\n /**\n * @internal\n * @nocollapse\n */\n static { this.__NG_ELEMENT_ID__ = injectElementRef; }\n}\n/**\n * Unwraps `ElementRef` and return the `nativeElement`.\n *\n * @param value value to unwrap\n * @returns `nativeElement` if `ElementRef` otherwise returns value as is.\n */\nfunction unwrapElementRef(value) {\n return value instanceof ElementRef ? value.nativeElement : value;\n}\n\nfunction symbolIterator() {\n // @ts-expect-error accessing a private member\n return this._results[Symbol.iterator]();\n}\n/**\n * An unmodifiable list of items that Angular keeps up to date when the state\n * of the application changes.\n *\n * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}\n * provide.\n *\n * Implements an iterable interface, therefore it can be used in both ES6\n * javascript `for (var i of items)` loops as well as in Angular templates with\n * `*ngFor=\"let i of myList\"`.\n *\n * Changes can be observed by subscribing to the changes `Observable`.\n *\n * NOTE: In the future this class will implement an `Observable` interface.\n *\n * @usageNotes\n * ### Example\n * ```typescript\n * @Component({...})\n * class Container {\n * @ViewChildren(Item) items:QueryList;\n * }\n * ```\n *\n * @publicApi\n */\nclass QueryList {\n static { Symbol.iterator; }\n /**\n * Returns `Observable` of `QueryList` notifying the subscriber of changes.\n */\n get changes() {\n return (this._changes ??= new EventEmitter());\n }\n /**\n * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change\n * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in\n * the same result)\n */\n constructor(_emitDistinctChangesOnly = false) {\n this._emitDistinctChangesOnly = _emitDistinctChangesOnly;\n this.dirty = true;\n this._onDirty = undefined;\n this._results = [];\n this._changesDetected = false;\n this._changes = undefined;\n this.length = 0;\n this.first = undefined;\n this.last = undefined;\n // This function should be declared on the prototype, but doing so there will cause the class\n // declaration to have side-effects and become not tree-shakable. For this reason we do it in\n // the constructor.\n // [Symbol.iterator](): Iterator { ... }\n const proto = QueryList.prototype;\n if (!proto[Symbol.iterator])\n proto[Symbol.iterator] = symbolIterator;\n }\n /**\n * Returns the QueryList entry at `index`.\n */\n get(index) {\n return this._results[index];\n }\n /**\n * See\n * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)\n */\n map(fn) {\n return this._results.map(fn);\n }\n filter(fn) {\n return this._results.filter(fn);\n }\n /**\n * See\n * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)\n */\n find(fn) {\n return this._results.find(fn);\n }\n /**\n * See\n * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)\n */\n reduce(fn, init) {\n return this._results.reduce(fn, init);\n }\n /**\n * See\n * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)\n */\n forEach(fn) {\n this._results.forEach(fn);\n }\n /**\n * See\n * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)\n */\n some(fn) {\n return this._results.some(fn);\n }\n /**\n * Returns a copy of the internal results list as an Array.\n */\n toArray() {\n return this._results.slice();\n }\n toString() {\n return this._results.toString();\n }\n /**\n * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that\n * on change detection, it will not notify of changes to the queries, unless a new change\n * occurs.\n *\n * @param resultsTree The query results to store\n * @param identityAccessor Optional function for extracting stable object identity from a value\n * in the array. This function is executed for each element of the query result list while\n * comparing current query list with the new one (provided as a first argument of the `reset`\n * function) to detect if the lists are different. If the function is not provided, elements\n * are compared as is (without any pre-processing).\n */\n reset(resultsTree, identityAccessor) {\n this.dirty = false;\n const newResultFlat = flatten(resultsTree);\n if ((this._changesDetected = !arrayEquals(this._results, newResultFlat, identityAccessor))) {\n this._results = newResultFlat;\n this.length = newResultFlat.length;\n this.last = newResultFlat[this.length - 1];\n this.first = newResultFlat[0];\n }\n }\n /**\n * Triggers a change event by emitting on the `changes` {@link EventEmitter}.\n */\n notifyOnChanges() {\n if (this._changes !== undefined && (this._changesDetected || !this._emitDistinctChangesOnly))\n this._changes.emit(this);\n }\n /** @internal */\n onDirty(cb) {\n this._onDirty = cb;\n }\n /** internal */\n setDirty() {\n this.dirty = true;\n this._onDirty?.();\n }\n /** internal */\n destroy() {\n if (this._changes !== undefined) {\n this._changes.complete();\n this._changes.unsubscribe();\n }\n }\n}\n\n/**\n * The name of an attribute that can be added to the hydration boundary node\n * (component host node) to disable hydration for the content within that boundary.\n */\nconst SKIP_HYDRATION_ATTR_NAME = 'ngSkipHydration';\n/** Lowercase name of the `ngSkipHydration` attribute used for case-insensitive comparisons. */\nconst SKIP_HYDRATION_ATTR_NAME_LOWER_CASE = 'ngskiphydration';\n/**\n * Helper function to check if a given TNode has the 'ngSkipHydration' attribute.\n */\nfunction hasSkipHydrationAttrOnTNode(tNode) {\n const attrs = tNode.mergedAttrs;\n if (attrs === null)\n return false;\n // only ever look at the attribute name and skip the values\n for (let i = 0; i < attrs.length; i += 2) {\n const value = attrs[i];\n // This is a marker, which means that the static attributes section is over,\n // so we can exit early.\n if (typeof value === 'number')\n return false;\n if (typeof value === 'string' && value.toLowerCase() === SKIP_HYDRATION_ATTR_NAME_LOWER_CASE) {\n return true;\n }\n }\n return false;\n}\n/**\n * Helper function to check if a given RElement has the 'ngSkipHydration' attribute.\n */\nfunction hasSkipHydrationAttrOnRElement(rNode) {\n return rNode.hasAttribute(SKIP_HYDRATION_ATTR_NAME);\n}\n/**\n * Checks whether a TNode has a flag to indicate that it's a part of\n * a skip hydration block.\n */\nfunction hasInSkipHydrationBlockFlag(tNode) {\n return (tNode.flags & 128 /* TNodeFlags.inSkipHydrationBlock */) === 128 /* TNodeFlags.inSkipHydrationBlock */;\n}\n/**\n * Helper function that determines if a given node is within a skip hydration block\n * by navigating up the TNode tree to see if any parent nodes have skip hydration\n * attribute.\n */\nfunction isInSkipHydrationBlock(tNode) {\n if (hasInSkipHydrationBlockFlag(tNode)) {\n return true;\n }\n let currentTNode = tNode.parent;\n while (currentTNode) {\n if (hasInSkipHydrationBlockFlag(tNode) || hasSkipHydrationAttrOnTNode(currentTNode)) {\n return true;\n }\n currentTNode = currentTNode.parent;\n }\n return false;\n}\n/**\n * Check if an i18n block is in a skip hydration section by looking at a parent TNode\n * to determine if this TNode is in a skip hydration section or the TNode has\n * the `ngSkipHydration` attribute.\n */\nfunction isI18nInSkipHydrationBlock(parentTNode) {\n return (hasInSkipHydrationBlockFlag(parentTNode) ||\n hasSkipHydrationAttrOnTNode(parentTNode) ||\n isInSkipHydrationBlock(parentTNode));\n}\n\n// Keeps track of the currently-active LViews.\nconst TRACKED_LVIEWS = new Map();\n// Used for generating unique IDs for LViews.\nlet uniqueIdCounter = 0;\n/** Gets a unique ID that can be assigned to an LView. */\nfunction getUniqueLViewId() {\n return uniqueIdCounter++;\n}\n/** Starts tracking an LView. */\nfunction registerLView(lView) {\n ngDevMode && assertNumber(lView[ID], 'LView must have an ID in order to be registered');\n TRACKED_LVIEWS.set(lView[ID], lView);\n}\n/** Gets an LView by its unique ID. */\nfunction getLViewById(id) {\n ngDevMode && assertNumber(id, 'ID used for LView lookup must be a number');\n return TRACKED_LVIEWS.get(id) || null;\n}\n/** Stops tracking an LView. */\nfunction unregisterLView(lView) {\n ngDevMode && assertNumber(lView[ID], 'Cannot stop tracking an LView that does not have an ID');\n TRACKED_LVIEWS.delete(lView[ID]);\n}\n\n/**\n * The internal view context which is specific to a given DOM element, directive or\n * component instance. Each value in here (besides the LView and element node details)\n * can be present, null or undefined. If undefined then it implies the value has not been\n * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.\n *\n * Each value will get filled when the respective value is examined within the getContext\n * function. The component, element and each directive instance will share the same instance\n * of the context.\n */\nclass LContext {\n /** Component's parent view data. */\n get lView() {\n return getLViewById(this.lViewId);\n }\n constructor(\n /**\n * ID of the component's parent view data.\n */\n lViewId, \n /**\n * The index instance of the node.\n */\n nodeIndex, \n /**\n * The instance of the DOM node that is attached to the lNode.\n */\n native) {\n this.lViewId = lViewId;\n this.nodeIndex = nodeIndex;\n this.native = native;\n }\n}\n\n/**\n * Returns the matching `LContext` data for a given DOM node, directive or component instance.\n *\n * This function will examine the provided DOM element, component, or directive instance\\'s\n * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched\n * value will be that of the newly created `LContext`.\n *\n * If the monkey-patched value is the `LView` instance then the context value for that\n * target will be created and the monkey-patch reference will be updated. Therefore when this\n * function is called it may mutate the provided element\\'s, component\\'s or any of the associated\n * directive\\'s monkey-patch values.\n *\n * If the monkey-patch value is not detected then the code will walk up the DOM until an element\n * is found which contains a monkey-patch reference. When that occurs then the provided element\n * will be updated with a new context (which is then returned). If the monkey-patch value is not\n * detected for a component/directive instance then it will throw an error (all components and\n * directives should be automatically monkey-patched by ivy).\n *\n * @param target Component, Directive or DOM Node.\n */\nfunction getLContext(target) {\n let mpValue = readPatchedData(target);\n if (mpValue) {\n // only when it's an array is it considered an LView instance\n // ... otherwise it's an already constructed LContext instance\n if (isLView(mpValue)) {\n const lView = mpValue;\n let nodeIndex;\n let component = undefined;\n let directives = undefined;\n if (isComponentInstance(target)) {\n nodeIndex = findViaComponent(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided component was not found in the application');\n }\n component = target;\n }\n else if (isDirectiveInstance(target)) {\n nodeIndex = findViaDirective(lView, target);\n if (nodeIndex == -1) {\n throw new Error('The provided directive was not found in the application');\n }\n directives = getDirectivesAtNodeIndex(nodeIndex, lView);\n }\n else {\n nodeIndex = findViaNativeElement(lView, target);\n if (nodeIndex == -1) {\n return null;\n }\n }\n // the goal is not to fill the entire context full of data because the lookups\n // are expensive. Instead, only the target data (the element, component, container, ICU\n // expression or directive details) are filled into the context. If called multiple times\n // with different target values then the missing target data will be filled in.\n const native = unwrapRNode(lView[nodeIndex]);\n const existingCtx = readPatchedData(native);\n const context = existingCtx && !Array.isArray(existingCtx)\n ? existingCtx\n : createLContext(lView, nodeIndex, native);\n // only when the component has been discovered then update the monkey-patch\n if (component && context.component === undefined) {\n context.component = component;\n attachPatchData(context.component, context);\n }\n // only when the directives have been discovered then update the monkey-patch\n if (directives && context.directives === undefined) {\n context.directives = directives;\n for (let i = 0; i < directives.length; i++) {\n attachPatchData(directives[i], context);\n }\n }\n attachPatchData(context.native, context);\n mpValue = context;\n }\n }\n else {\n const rElement = target;\n ngDevMode && assertDomNode(rElement);\n // if the context is not found then we need to traverse upwards up the DOM\n // to find the nearest element that has already been monkey patched with data\n let parent = rElement;\n while ((parent = parent.parentNode)) {\n const parentContext = readPatchedData(parent);\n if (parentContext) {\n const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView;\n // the edge of the app was also reached here through another means\n // (maybe because the DOM was changed manually).\n if (!lView) {\n return null;\n }\n const index = findViaNativeElement(lView, rElement);\n if (index >= 0) {\n const native = unwrapRNode(lView[index]);\n const context = createLContext(lView, index, native);\n attachPatchData(native, context);\n mpValue = context;\n break;\n }\n }\n }\n }\n return mpValue || null;\n}\n/**\n * Creates an empty instance of a `LContext` context\n */\nfunction createLContext(lView, nodeIndex, native) {\n return new LContext(lView[ID], nodeIndex, native);\n}\n/**\n * Takes a component instance and returns the view for that component.\n *\n * @param componentInstance\n * @returns The component's view\n */\nfunction getComponentViewByInstance(componentInstance) {\n let patchedData = readPatchedData(componentInstance);\n let lView;\n if (isLView(patchedData)) {\n const contextLView = patchedData;\n const nodeIndex = findViaComponent(contextLView, componentInstance);\n lView = getComponentLViewByIndex(nodeIndex, contextLView);\n const context = createLContext(contextLView, nodeIndex, lView[HOST]);\n context.component = componentInstance;\n attachPatchData(componentInstance, context);\n attachPatchData(context.native, context);\n }\n else {\n const context = patchedData;\n const contextLView = context.lView;\n ngDevMode && assertLView(contextLView);\n lView = getComponentLViewByIndex(context.nodeIndex, contextLView);\n }\n return lView;\n}\n/**\n * This property will be monkey-patched on elements, components and directives.\n */\nconst MONKEY_PATCH_KEY_NAME = '__ngContext__';\nfunction attachLViewId(target, data) {\n target[MONKEY_PATCH_KEY_NAME] = data[ID];\n}\n/**\n * Returns the monkey-patch value data present on the target (which could be\n * a component, directive or a DOM node).\n */\nfunction readLView(target) {\n const data = readPatchedData(target);\n if (isLView(data)) {\n return data;\n }\n return data ? data.lView : null;\n}\n/**\n * Assigns the given data to the given target (which could be a component,\n * directive or DOM node instance) using monkey-patching.\n */\nfunction attachPatchData(target, data) {\n ngDevMode && assertDefined(target, 'Target expected');\n // Only attach the ID of the view in order to avoid memory leaks (see #41047). We only do this\n // for `LView`, because we have control over when an `LView` is created and destroyed, whereas\n // we can't know when to remove an `LContext`.\n if (isLView(data)) {\n target[MONKEY_PATCH_KEY_NAME] = data[ID];\n registerLView(data);\n }\n else {\n target[MONKEY_PATCH_KEY_NAME] = data;\n }\n}\n/**\n * Returns the monkey-patch value data present on the target (which could be\n * a component, directive or a DOM node).\n */\nfunction readPatchedData(target) {\n ngDevMode && assertDefined(target, 'Target expected');\n const data = target[MONKEY_PATCH_KEY_NAME];\n return typeof data === 'number' ? getLViewById(data) : data || null;\n}\nfunction readPatchedLView(target) {\n const value = readPatchedData(target);\n if (value) {\n return (isLView(value) ? value : value.lView);\n }\n return null;\n}\nfunction isComponentInstance(instance) {\n return instance && instance.constructor && instance.constructor.ɵcmp;\n}\nfunction isDirectiveInstance(instance) {\n return instance && instance.constructor && instance.constructor.ɵdir;\n}\n/**\n * Locates the element within the given LView and returns the matching index\n */\nfunction findViaNativeElement(lView, target) {\n const tView = lView[TVIEW];\n for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) {\n if (unwrapRNode(lView[i]) === target) {\n return i;\n }\n }\n return -1;\n}\n/**\n * Locates the next tNode (child, sibling or parent).\n */\nfunction traverseNextElement(tNode) {\n if (tNode.child) {\n return tNode.child;\n }\n else if (tNode.next) {\n return tNode.next;\n }\n else {\n // Let's take the following template:
text
\n // After checking the text node, we need to find the next parent that has a \"next\" TNode,\n // in this case the parent `div`, so that we can find the component.\n while (tNode.parent && !tNode.parent.next) {\n tNode = tNode.parent;\n }\n return tNode.parent && tNode.parent.next;\n }\n}\n/**\n * Locates the component within the given LView and returns the matching index\n */\nfunction findViaComponent(lView, componentInstance) {\n const componentIndices = lView[TVIEW].components;\n if (componentIndices) {\n for (let i = 0; i < componentIndices.length; i++) {\n const elementComponentIndex = componentIndices[i];\n const componentView = getComponentLViewByIndex(elementComponentIndex, lView);\n if (componentView[CONTEXT] === componentInstance) {\n return elementComponentIndex;\n }\n }\n }\n else {\n const rootComponentView = getComponentLViewByIndex(HEADER_OFFSET, lView);\n const rootComponent = rootComponentView[CONTEXT];\n if (rootComponent === componentInstance) {\n // we are dealing with the root element here therefore we know that the\n // element is the very first element after the HEADER data in the lView\n return HEADER_OFFSET;\n }\n }\n return -1;\n}\n/**\n * Locates the directive within the given LView and returns the matching index\n */\nfunction findViaDirective(lView, directiveInstance) {\n // if a directive is monkey patched then it will (by default)\n // have a reference to the LView of the current view. The\n // element bound to the directive being search lives somewhere\n // in the view data. We loop through the nodes and check their\n // list of directives for the instance.\n let tNode = lView[TVIEW].firstChild;\n while (tNode) {\n const directiveIndexStart = tNode.directiveStart;\n const directiveIndexEnd = tNode.directiveEnd;\n for (let i = directiveIndexStart; i < directiveIndexEnd; i++) {\n if (lView[i] === directiveInstance) {\n return tNode.index;\n }\n }\n tNode = traverseNextElement(tNode);\n }\n return -1;\n}\n/**\n * Returns a list of directives applied to a node at a specific index. The list includes\n * directives matched by selector and any host directives, but it excludes components.\n * Use `getComponentAtNodeIndex` to find the component applied to a node.\n *\n * @param nodeIndex The node index\n * @param lView The target view data\n */\nfunction getDirectivesAtNodeIndex(nodeIndex, lView) {\n const tNode = lView[TVIEW].data[nodeIndex];\n if (tNode.directiveStart === 0)\n return EMPTY_ARRAY;\n const results = [];\n for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) {\n const directiveInstance = lView[i];\n if (!isComponentInstance(directiveInstance)) {\n results.push(directiveInstance);\n }\n }\n return results;\n}\nfunction getComponentAtNodeIndex(nodeIndex, lView) {\n const tNode = lView[TVIEW].data[nodeIndex];\n const { directiveStart, componentOffset } = tNode;\n return componentOffset > -1 ? lView[directiveStart + componentOffset] : null;\n}\n/**\n * Returns a map of local references (local reference name => element or directive instance) that\n * exist on a given element.\n */\nfunction discoverLocalRefs(lView, nodeIndex) {\n const tNode = lView[TVIEW].data[nodeIndex];\n if (tNode && tNode.localNames) {\n const result = {};\n let localIndex = tNode.index + 1;\n for (let i = 0; i < tNode.localNames.length; i += 2) {\n result[tNode.localNames[i]] = lView[localIndex];\n localIndex++;\n }\n return result;\n }\n return null;\n}\n\n/**\n * Retrieve the root view from any component or `LView` by walking the parent `LView` until\n * reaching the root `LView`.\n *\n * @param componentOrLView any component or `LView`\n */\nfunction getRootView(componentOrLView) {\n ngDevMode && assertDefined(componentOrLView, 'component');\n let lView = isLView(componentOrLView) ? componentOrLView : readPatchedLView(componentOrLView);\n while (lView && !(lView[FLAGS] & 512 /* LViewFlags.IsRoot */)) {\n lView = getLViewParent(lView);\n }\n ngDevMode && assertLView(lView);\n return lView;\n}\n/**\n * Returns the context information associated with the application where the target is situated. It\n * does this by walking the parent views until it gets to the root view, then getting the context\n * off of that.\n *\n * @param viewOrComponent the `LView` or component to get the root context for.\n */\nfunction getRootContext(viewOrComponent) {\n const rootView = getRootView(viewOrComponent);\n ngDevMode &&\n assertDefined(rootView[CONTEXT], 'Root view has no context. Perhaps it is disconnected?');\n return rootView[CONTEXT];\n}\n/**\n * Gets the first `LContainer` in the LView or `null` if none exists.\n */\nfunction getFirstLContainer(lView) {\n return getNearestLContainer(lView[CHILD_HEAD]);\n}\n/**\n * Gets the next `LContainer` that is a sibling of the given container.\n */\nfunction getNextLContainer(container) {\n return getNearestLContainer(container[NEXT]);\n}\nfunction getNearestLContainer(viewOrContainer) {\n while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {\n viewOrContainer = viewOrContainer[NEXT];\n }\n return viewOrContainer;\n}\n\n/**\n * Retrieves the component instance associated with a given DOM element.\n *\n * @usageNotes\n * Given the following DOM structure:\n *\n * ```html\n * \n *
\n * \n *
\n *
\n * ```\n *\n * Calling `getComponent` on `` will return the instance of `ChildComponent`\n * associated with this DOM element.\n *\n * Calling the function on `` will return the `MyApp` instance.\n *\n *\n * @param element DOM element from which the component should be retrieved.\n * @returns Component instance associated with the element or `null` if there\n * is no component associated with it.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getComponent$1(element) {\n ngDevMode && assertDomElement(element);\n const context = getLContext(element);\n if (context === null)\n return null;\n if (context.component === undefined) {\n const lView = context.lView;\n if (lView === null) {\n return null;\n }\n context.component = getComponentAtNodeIndex(context.nodeIndex, lView);\n }\n return context.component;\n}\n/**\n * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded\n * view that the element is part of. Otherwise retrieves the instance of the component whose view\n * owns the element (in this case, the result is the same as calling `getOwningComponent`).\n *\n * @param element Element for which to get the surrounding component instance.\n * @returns Instance of the component that is around the element or null if the element isn't\n * inside any component.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getContext(element) {\n assertDomElement(element);\n const context = getLContext(element);\n const lView = context ? context.lView : null;\n return lView === null ? null : lView[CONTEXT];\n}\n/**\n * Retrieves the component instance whose view contains the DOM element.\n *\n * For example, if `` is used in the template of ``\n * (i.e. a `ViewChild` of ``), calling `getOwningComponent` on ``\n * would return ``.\n *\n * @param elementOrDir DOM element, component or directive instance\n * for which to retrieve the root components.\n * @returns Component instance whose view owns the DOM element or null if the element is not\n * part of a component view.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getOwningComponent(elementOrDir) {\n const context = getLContext(elementOrDir);\n let lView = context ? context.lView : null;\n if (lView === null)\n return null;\n let parent;\n while (lView[TVIEW].type === 2 /* TViewType.Embedded */ && (parent = getLViewParent(lView))) {\n lView = parent;\n }\n return lView[FLAGS] & 512 /* LViewFlags.IsRoot */ ? null : lView[CONTEXT];\n}\n/**\n * Retrieves all root components associated with a DOM element, directive or component instance.\n * Root components are those which have been bootstrapped by Angular.\n *\n * @param elementOrDir DOM element, component or directive instance\n * for which to retrieve the root components.\n * @returns Root components associated with the target object.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getRootComponents(elementOrDir) {\n const lView = readPatchedLView(elementOrDir);\n return lView !== null ? [getRootContext(lView)] : [];\n}\n/**\n * Retrieves an `Injector` associated with an element, component or directive instance.\n *\n * @param elementOrDir DOM element, component or directive instance for which to\n * retrieve the injector.\n * @returns Injector associated with the element, component or directive instance.\n *\n * @publicApi\n * @globalApi ng\n */\nfunction getInjector(elementOrDir) {\n const context = getLContext(elementOrDir);\n const lView = context ? context.lView : null;\n if (lView === null)\n return Injector.NULL;\n const tNode = lView[TVIEW].data[context.nodeIndex];\n return new NodeInjector(tNode, lView);\n}\n/**\n * Retrieve a set of injection tokens at a given DOM node.\n *\n * @param element Element for which the injection tokens should be retrieved.\n */\nfunction getInjectionTokens(element) {\n const context = getLContext(element);\n const lView = context ? context.lView : null;\n if (lView === null)\n return [];\n const tView = lView[TVIEW];\n const tNode = tView.data[context.nodeIndex];\n const providerTokens = [];\n const startIndex = tNode.providerIndexes & 1048575 /* TNodeProviderIndexes.ProvidersStartIndexMask */;\n const endIndex = tNode.directiveEnd;\n for (let i = startIndex; i < endIndex; i++) {\n let value = tView.data[i];\n if (isDirectiveDefHack(value)) {\n // The fact that we sometimes store Type and sometimes DirectiveDef in this location is a\n // design flaw. We should always store same type so that we can be monomorphic. The issue\n // is that for Components/Directives we store the def instead the type. The correct behavior\n // is that we should always be storing injectable type in this location.\n value = value.type;\n }\n providerTokens.push(value);\n }\n return providerTokens;\n}\n/**\n * Retrieves directive instances associated with a given DOM node. Does not include\n * component instances.\n *\n * @usageNotes\n * Given the following DOM structure:\n *\n * ```html\n * \n * \n * \n * \n * ```\n *\n * Calling `getDirectives` on `\n
\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderComponent {}\n","
\n
\n
\n

Ngx Gallery

\n
\n Performant, mobile first, easy to use Angular 8+ Gallery\n
\n\n
\n \n \"github\n \n \n \"npm\n \n
\n
\n
\n
\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-showcase',\n templateUrl: './showcase.component.html',\n styleUrls: ['./showcase.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShowcaseComponent {\n @Input() heading: string;\n @Input() subheading: string;\n @Input() stackblitz: string;\n}\n","
\n

{{ heading }}

\n
\n {{ subheading }}\n \n
\n \n Edit on StackBlitz\n
\n\n\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\nimport { VerticalOrientation } from '../../core';\n\n@Component({\n selector: 'counter',\n template: `\n \n {{ selectedIndex + 1 }}/{{ itemQuantity || 0 }}\n \n `,\n styleUrls: ['./counter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CounterComponent {\n @Input()\n itemQuantity!: number;\n\n @Input()\n selectedIndex!: number;\n\n @HostBinding('class')\n @Input()\n orientation!: VerticalOrientation;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n Aria,\n ContentTemplateContext,\n GalleryItem,\n GalleryItemEvent,\n ItemTemplateContext,\n Loading,\n ObjectFit,\n Orientation,\n OrientationFlag,\n ThumbTemplateContext,\n VerticalOrientation,\n} from '../../core';\nimport { defaultAria } from '../../core/aria';\nimport { StrictSimpleChanges } from '../../core/ng';\nimport { ThumbsComponent } from '../thumbs/thumbs.component';\nimport { ViewerComponent } from '../viewer/viewer.component';\n\n@Component({\n selector: 'gallery',\n templateUrl: './gallery.component.html',\n styleUrls: ['./gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, ThumbsComponent, ViewerComponent],\n})\nexport class GalleryComponent implements OnChanges {\n /**\n * Gallery items to display\n */\n @Input() items: GalleryItem[] = [];\n /**\n * Initially selected item, 0-based\n */\n @Input() selectedIndex = 0;\n /**\n * Aria labels\n */\n @Input() aria: Aria = defaultAria;\n /**\n * Show left and right icons to navigate between images in the viewer\n */\n @Input() arrows = true;\n /**\n * Displayes item descriptions if any are present in `GalleryItem`\n */\n @Input() descriptions = false;\n /**\n * Text to be shown when media loading failed\n */\n @Input() errorText?: string;\n /**\n * Display an error when the media contained in gallery item failed to load.\n */\n @Input() showErrors = false;\n /**\n * Allow mouse swipes\n */\n @Input() mouseGestures = true;\n /**\n * Allow touch swipes\n */\n @Input() touchGestures = true;\n /**\n * Controls whether items outside gallery's scrollport should overflow it. When clip == false,\n * items overflowing the gallery will be visible on both sides. Otherwise they will be hidden\n * with `overflow: hidden`.\n */\n @Input() clip = true;\n /**\n * Show item counter in the slider area\n */\n @Input() counter = true;\n @Input() counterOrientation: VerticalOrientation = 'bottom';\n /**\n * Either makes images load eagerly or lazily. The lazy loading is managed by the browser itself.\n */\n @Input() loading: Loading = 'lazy';\n /**\n * Turns on infinite looping for swiping and arrows navigation.\n */\n @Input() loop = false;\n /**\n * The way an image or video should fill its container.\n */\n @Input() objectFit: ObjectFit = 'cover';\n /**\n * Right to left mode\n */\n @HostBinding('class.rtl')\n @Input()\n isRtl = false;\n /**\n * How many items are visible in the scrollport.\n */\n @Input() visibleItems = 1;\n /**\n * By how many items the slider shifts when user navigates with arrows.\n */\n @Input() moveByItems = this.visibleItems;\n /**\n * Custom template for gallery items.\n */\n @Input() itemTemplate?: TemplateRef;\n /**\n * Custom item template for media that failed to load\n */\n @Input() errorTemplate?: TemplateRef;\n /**\n * Custom template for navigation arrows for the slider.\n */\n @Input() arrowTemplate?: TemplateRef;\n /**\n * Custom template whose content appears in the gallery viewer.\n */\n @Input() contentTemplate?: TemplateRef;\n /**\n * Show thumbnail list.\n */\n @Input() thumbs = true;\n /**\n * Scroll thumbnails automatically as you navigate in image viewer.\n */\n @Input() thumbsAutoScroll = true;\n /**\n * Where thumbnails will be placed in relation to slider.\n */\n @Input() thumbsOrientation: Orientation = 'bottom';\n /**\n * Show arrows to navigate thumbnails.\n */\n @Input() thumbsArrows = true;\n /**\n * By how far in pixels the thumbnails are scrolled when using arrows.\n */\n @Input() thumbsArrowSlideByLength?: number;\n /**\n * Smooth or instant navigation in thumbnails.\n */\n @Input() thumbsScrollBehavior: ScrollBehavior = 'smooth';\n /**\n * Custom template for thumbnail items.\n */\n @Input() thumbTemplate?: TemplateRef;\n /**\n * Custom template for navigation arrows in thumbnail list.\n */\n @Input() thumbsArrowTemplate?: TemplateRef;\n /**\n * Custom template for thumbnails that failed to load.\n */\n @Input() thumbErrorTemplate?: TemplateRef;\n\n @Output() itemClick = new EventEmitter();\n @Output() thumbClick = new EventEmitter();\n @Output() thumbHover = new EventEmitter();\n @Output() descriptionClick = new EventEmitter();\n /**\n * Triggers when item or group of items gets selected, ie. they get displayed in scrollport.\n */\n @Output() selection = new EventEmitter();\n\n @ViewChild(ViewerComponent) _viewerRef!: ViewerComponent;\n @ViewChild(ThumbsComponent) _thumbsRef?: ThumbsComponent;\n @ViewChild(ViewerComponent, { read: ElementRef })\n _viewerElRef!: ElementRef;\n\n @HostBinding('class.gallery--column')\n get _galleryColumn() {\n return (\n this.thumbsOrientation === 'top' || this.thumbsOrientation === 'bottom'\n );\n }\n\n get _thumbsOrientationFlag(): OrientationFlag {\n return this._galleryColumn\n ? OrientationFlag.HORIZONTAL\n : OrientationFlag.VERTICAL;\n }\n\n ngOnChanges({ items }: StrictSimpleChanges) {\n if (items && !items.currentValue) {\n this.items = [];\n }\n }\n\n focus() {\n this._viewerElRef.nativeElement.focus();\n }\n\n @HostListener('keydown.arrowright')\n next() {\n this._viewerRef.selectByDelta(1);\n }\n\n @HostListener('keydown.arrowleft')\n prev() {\n this._viewerRef.selectByDelta(-1);\n }\n\n select(index: number) {\n this._viewerRef.select(index);\n this._thumbsRef?.select(index);\n this._selectInternal(index);\n }\n\n slideThumbs(direction: number) {\n this._thumbsRef?.slide(direction);\n }\n\n _onThumbClick(event: GalleryItemEvent) {\n this._viewerRef.select(event.index);\n this.thumbClick.emit(event);\n this._selectInternal(event.index);\n }\n\n _selectInternal(index: number) {\n this.selectedIndex = index;\n this.selection.emit(this.items[index]);\n }\n}\n","\n {{ aria.galleryLabel }}\n\n\n\n\n\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'chevron-icon',\n templateUrl: './chevron-icon.component.html',\n styleUrls: ['./chevron-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ChevronIconComponent {}\n","\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n Orientation,\n SUPPORT,\n ThumbTemplateContext,\n isBrowser,\n} from '../../core';\nimport { Aria } from '../../core/aria';\nimport { GalleryItemEvent, GalleryItemInternal } from '../../core/gallery-item';\nimport { ChevronIconComponent } from '../icons/chevron/chevron-icon.component';\n\n@Component({\n selector: 'thumbs',\n templateUrl: './thumbs.component.html',\n styleUrls: ['./thumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, ChevronIconComponent],\n})\nexport class ThumbsComponent implements OnChanges, OnDestroy {\n @Input() items: GalleryItemInternal[] = [];\n @Input() selectedIndex!: number;\n @Input() aria?: Aria;\n @Input() orientation?: Orientation;\n @Input() arrows?: boolean;\n @Input() arrowSlideByLength?: number;\n @Input() autoScroll?: boolean;\n @Input() thumbTemplate?: TemplateRef;\n @Input() arrowTemplate?: TemplateRef;\n @Input() errorTemplate?: TemplateRef;\n @Input() scrollBehavior?: ScrollBehavior;\n @Input() isRtl?: boolean;\n\n @Output() thumbClick = new EventEmitter();\n @Output() thumbHover = new EventEmitter();\n\n @ViewChild('thumbs', { static: true }) thumbListRef!: ElementRef;\n @ViewChildren('thumb') thumbsRef!: QueryList>;\n\n showStartArrow = false;\n showEndArrow = false;\n\n private arrowObserver?: IntersectionObserver;\n private scrollId?: number;\n\n @HostBinding('class')\n get cssClass() {\n return `thumbs--${this.orientation}`;\n }\n\n private get hostOffsetAxis(): number {\n return this.vertical\n ? this.elRef.nativeElement.offsetHeight\n : this.elRef.nativeElement.offsetWidth;\n }\n\n private get scrollKey(): 'scrollTop' | 'scrollLeft' {\n return this.vertical ? 'scrollTop' : 'scrollLeft';\n }\n\n private get thumbsEmpty(): boolean {\n return !this.thumbsRef || !this.thumbsRef.length;\n }\n\n private get vertical(): boolean {\n return this.orientation === 'left' || this.orientation === 'right';\n }\n\n constructor(\n private cd: ChangeDetectorRef,\n private elRef: ElementRef\n ) {}\n\n ngOnChanges({ arrows, items }: SimpleChanges) {\n if (arrows) {\n if (arrows.currentValue) {\n this.observeArrows();\n } else if (!arrows.currentValue) {\n this.showStartArrow = this.showEndArrow = false;\n this.unobserveArrows();\n }\n }\n\n if (items) {\n setTimeout(() => {\n if (this.arrows) {\n this.observeArrows();\n }\n this.centerThumbIfNeeded(this.selectedIndex);\n });\n }\n }\n\n ngOnDestroy() {\n this.unobserveArrows();\n }\n\n slide(direction: number) {\n let delta: number;\n\n if (this.arrowSlideByLength) {\n delta = this.arrowSlideByLength;\n } else {\n // Note: Slide by the full height/width of the gallery\n // or by the overflow of the thumbs - to prevent unnecessary requestAnimationFrame calls while trying to scroll\n // outside of the min/max scroll of the thumbs\n const thumbList = this.thumbListRef.nativeElement as HTMLElement;\n const thumbListScrollAxis = this.vertical\n ? thumbList.scrollHeight\n : thumbList.scrollWidth;\n const thumbListOffsetAxis = this.vertical\n ? thumbList.offsetHeight\n : thumbList.offsetWidth;\n\n delta = Math.min(\n thumbListOffsetAxis,\n thumbListScrollAxis - thumbListOffsetAxis\n );\n }\n this.scroll(delta * direction);\n }\n\n centerThumbIfNeeded(index: number) {\n if (!this.items || this.items.length <= 1) {\n return;\n }\n\n const nextItemRef = this.thumbsRef.toArray()[index];\n\n if (!nextItemRef) {\n return;\n }\n\n const nextItemEl = nextItemRef.nativeElement;\n const { offsetLeft, offsetTop, offsetWidth, offsetHeight } = nextItemEl;\n\n const itemOffset = this.vertical ? offsetTop : offsetLeft;\n const itemOffsetAxis = this.vertical ? offsetHeight : offsetWidth;\n\n const hostScrollAxis = this.hostOffsetAxis;\n const thumbListScroll = this.thumbListRef.nativeElement[this.scrollKey];\n\n const nextScrollDelta =\n itemOffset + itemOffsetAxis / 2 - hostScrollAxis / 2 - thumbListScroll;\n\n if (\n thumbListScroll + hostScrollAxis < itemOffset + itemOffsetAxis ||\n thumbListScroll > itemOffset\n ) {\n this.scroll(nextScrollDelta);\n }\n }\n\n select(index: number) {\n this.selectedIndex = index;\n this.cd.detectChanges();\n\n if (this.autoScroll) {\n setTimeout(() => this.centerThumbIfNeeded(index));\n }\n }\n\n emitEvent(\n index: number,\n item: GalleryItemInternal,\n event: Event,\n emitter: EventEmitter\n ) {\n emitter.emit({\n index,\n item,\n event,\n });\n }\n\n onLoadChange(item: GalleryItemInternal, success: boolean) {\n item._thumbFailed = !success;\n }\n\n private scroll(totalScrollDelta: number) {\n if (!isBrowser) {\n return;\n }\n if (SUPPORT.scrollBehavior || this.scrollBehavior === 'auto') {\n this.shiftByDelta(totalScrollDelta);\n return;\n }\n if (this.scrollId != null) {\n cancelAnimationFrame(this.scrollId);\n }\n\n const totalDistance = Math.abs(totalScrollDelta);\n const startTime = Date.now();\n const baseArrowSlideTime = 200;\n let totalTime = (Math.log10(totalDistance) - 1.1) * baseArrowSlideTime;\n if (totalTime < 0) {\n totalTime = baseArrowSlideTime;\n }\n let currentScroll = 0;\n\n // Emulating native scroll-behavior: smooth\n // NOTE: This function is called on per frame basis recursively to create smooth animation.\n // The scroll value is updated proportionally to the time elapsed since the animation's start.\n // The period of requested frames should match the display's refresh rate as recommended in W3C spec.\n const animate = () => {\n const suggestedScroll = Math.ceil(\n ((Date.now() - startTime) / totalTime) * totalDistance\n );\n let frameScroll = Math.min(\n suggestedScroll - currentScroll,\n totalDistance - currentScroll\n );\n frameScroll *= Math.sign(totalScrollDelta);\n currentScroll = suggestedScroll;\n\n this.shiftByDelta(frameScroll);\n\n if (currentScroll <= totalDistance) {\n this.scrollId = requestAnimationFrame(animate);\n }\n };\n\n this.scrollId = requestAnimationFrame(animate);\n }\n\n private shiftByDelta(delta: number) {\n this.thumbListRef.nativeElement[this.scrollKey] += delta;\n }\n\n private onArrowsObserved: IntersectionObserverCallback = entries => {\n if (this.thumbsEmpty) return;\n\n const firstTarget = entries[0].target;\n const { first, last } = this.thumbsRef;\n\n const firstThumbEntry =\n firstTarget === first.nativeElement ? entries[0] : entries[1];\n const lastThumbEntry =\n firstTarget === last.nativeElement ? entries[0] : entries[1];\n\n this.setObservedArrows(firstThumbEntry, lastThumbEntry);\n\n this.cd.detectChanges();\n };\n\n private observeArrows() {\n if (this.thumbsEmpty) return;\n\n if (!this.arrowObserver) {\n this.arrowObserver = new IntersectionObserver(this.onArrowsObserved, {\n root: this.thumbListRef.nativeElement,\n threshold: 1.0,\n });\n } else {\n this.unobserveArrows();\n }\n this.arrowObserver.observe(this.thumbsRef.first.nativeElement);\n this.arrowObserver.observe(this.thumbsRef.last.nativeElement);\n }\n\n private setObservedArrows(\n firstThumb: IntersectionObserverEntry,\n lastThumb: IntersectionObserverEntry\n ) {\n const inverse = this.isRtl && !this.vertical;\n\n if (inverse) {\n if (lastThumb) this.showStartArrow = lastThumb.intersectionRatio < 1;\n if (firstThumb) this.showEndArrow = firstThumb.intersectionRatio < 1;\n } else {\n if (firstThumb) this.showStartArrow = firstThumb.intersectionRatio < 1;\n if (lastThumb) this.showEndArrow = lastThumb.intersectionRatio < 1;\n }\n }\n\n private unobserveArrows() {\n this.arrowObserver && this.arrowObserver.disconnect();\n }\n}\n","\n
\n \n
\n\n\n
    \n
  • \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n
\n\n\n
\n \n
\n\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n Aria,\n ContentTemplateContext,\n GalleryItemEvent,\n ItemTemplateContext,\n Loading,\n ObjectFit,\n OrientationFlag,\n UA,\n VerticalOrientation,\n isBrowser,\n} from '../../core';\nimport { GalleryItemInternal } from '../../core/gallery-item';\nimport { MediaDirective } from '../../directives/media.directive';\nimport { SafePipe } from '../../pipes/safe.pipe';\nimport { CounterComponent } from '../counter/counter.component';\nimport { ChevronIconComponent } from '../icons/chevron/chevron-icon.component';\n\nexport const SLIDE_ANIMATION_DURATION = 400;\n\nconst passiveEventListenerOpts = {\n passive: true,\n};\n\n@Component({\n selector: 'viewer',\n templateUrl: './viewer.component.html',\n styleUrls: ['./viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('mediaAnimate', [\n transition(':leave', animate('0ms 100ms')),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(`${SLIDE_ANIMATION_DURATION}ms`, style({ opacity: 1 })),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n CommonModule,\n CounterComponent,\n ChevronIconComponent,\n MediaDirective,\n SafePipe,\n ],\n})\nexport class ViewerComponent implements OnChanges, OnInit, AfterViewInit {\n @Input() items!: GalleryItemInternal[];\n @Input() selectedIndex!: number;\n @Input() arrows?: boolean;\n @Input() descriptions?: boolean;\n @Input() errorText?: string;\n @Input() showErrors?: boolean;\n @Input() mouseGestures?: boolean;\n @Input() touchGestures?: boolean;\n @Input() counter?: boolean;\n @Input() counterOrientation!: VerticalOrientation;\n @Input() loading?: Loading;\n @Input() objectFit?: ObjectFit;\n @Input() itemTemplate?: TemplateRef;\n @Input() errorTemplate?: TemplateRef;\n @Input() arrowTemplate?: TemplateRef;\n @Input() contentTemplate?: TemplateRef;\n @Input() thumbsOrientation?: OrientationFlag;\n @Input() aria?: Aria;\n @Input() loop?: boolean;\n @Input() visibleItems!: number;\n @Input() moveByItems!: number;\n\n @HostBinding('class.clip')\n @Input()\n clip?: boolean;\n\n @HostBinding('class.rtl')\n @Input()\n isRtl?: boolean;\n\n @Output() itemClick = new EventEmitter();\n @Output() descriptionClick = new EventEmitter();\n @Output() selection = new EventEmitter();\n\n @ViewChild('itemList', { static: true })\n itemListRef!: ElementRef;\n @ViewChildren('itemsRef') itemsRef!: QueryList>;\n\n displayedItems?: GalleryItemInternal[];\n fringeCount = this.getFringeCount();\n reallyLoop?: boolean;\n private _itemWidth = 0;\n private fringeObserver?: IntersectionObserver;\n private pointerDeltaX = 0;\n private sliding = false;\n\n set noAnimation(value: boolean) {\n this.itemListRef.nativeElement.style.transitionDuration = value\n ? '0ms'\n : `${SLIDE_ANIMATION_DURATION}ms`;\n }\n\n get counterIndex() {\n return Math.floor(this.selectedIndex / this.moveByItems);\n }\n\n get showArrow() {\n return this.arrows && this.items && this.items.length > 1;\n }\n\n get showPrevArrow() {\n return this.showArrow && (this.selectedIndex > 0 || this.reallyLoop);\n }\n\n get showNextArrow() {\n return (\n this.showArrow &&\n (this.selectedIndex < this.items.length - 1 || this.reallyLoop)\n );\n }\n\n constructor(\n private _hostRef: ElementRef,\n private _cd: ChangeDetectorRef,\n private _destroyRef: DestroyRef,\n private _zone: NgZone\n ) {}\n\n ngOnChanges({ visibleItems, items, loop }: SimpleChanges) {\n if (visibleItems) {\n this.itemListRef.nativeElement.style.setProperty(\n '--item-width',\n `calc(100% / ${this.visibleItems})`\n );\n setTimeout(this.updateDimensions);\n }\n if (loop || items) {\n this.reallyLoop = this.items.length > 1 ? this.loop : false;\n\n if (this.reallyLoop) {\n setTimeout(() => this.observeFringes());\n }\n }\n if (items || visibleItems || loop) {\n this.fringeCount = this.getFringeCount();\n this.displayedItems = this.getItemsToBeDisplayed(this.fringeCount);\n\n if (this.reallyLoop) {\n this.noAnimation = true;\n this.center();\n }\n }\n }\n\n ngOnInit() {\n if (isBrowser) {\n this.handleResizes();\n\n if (this.mouseGestures) {\n this.handleMouseSlides();\n }\n\n if (this.touchGestures) {\n this.handleTouchSlides();\n }\n this._destroyRef.onDestroy(() => this.fringeObserver?.disconnect());\n }\n }\n\n ngAfterViewInit() {\n this.center();\n setTimeout(() => (this.noAnimation = false));\n }\n\n isYoutube(item: GalleryItemInternal) {\n return !!item.src.match(/youtube.*\\/embed\\//);\n }\n\n select(index: number, shortPath = true) {\n if (this.selectedIndex === index) {\n return this.center();\n }\n\n if (this.items[this.selectedIndex]?.video) {\n this.stopCurrentVideo();\n }\n\n // The purpose of the short path here is best understood by the following example: If going from index\n // 6 (last) to index 0, do not go back over all the middle items, but go 6 -> 0 the short route. This\n // makes navigating slider smoother. This of course applies in the other direction as well.\n if (this.visibleItems > 1 && shortPath) {\n const maxIndex = this.items.length - this.visibleItems;\n // When going back, in direction over the first item, stop at the slider's beginning at first.\n if (this.selectedIndex !== 0 && index < 0) {\n index = 0;\n } else if (this.selectedIndex < maxIndex) {\n // Set the desired index or choose the last if it is the slider's last \"page\".\n index = Math.min(maxIndex, index);\n } else if (index > maxIndex) {\n // Loop to the first item if going over the slider's end. This trick makes the loop cross the\n // boundary between the last and the first.\n index = this.items.length;\n }\n }\n\n const indexOutOfBounds = !this.items[index];\n const looping = this.reallyLoop && indexOutOfBounds;\n\n if (looping) {\n this.loopTo(index);\n return this.selection.emit(this.selectedIndex);\n }\n\n this.selectedIndex = indexOutOfBounds\n ? this.correctIndexOutOfBounds(index)\n : index;\n\n this.center(); // we center only for this branch since looping does a delayed centering\n this.selection.emit(this.selectedIndex);\n }\n\n selectByDelta(delta: number) {\n this.select(this.selectedIndex + delta);\n }\n\n onImageClick(item: GalleryItemInternal, event: Event) {\n this.itemClick.emit({\n event,\n item,\n index: this.items.indexOf(item),\n });\n }\n\n onTab(nextItemIndex: number) {\n nextItemIndex = nextItemIndex - this.fringeCount;\n // allow focus to escape viewer\n if (nextItemIndex >= 0 && nextItemIndex < this.items.length) {\n this.select(nextItemIndex);\n // focusing an item literally scrolls the item list, so I have to scroll it back\n requestAnimationFrame(() => (this._hostRef.nativeElement.scrollLeft = 0));\n }\n }\n\n onItemErrored(item: GalleryItemInternal) {\n if (!this.showErrors) {\n return;\n }\n item._failed = true;\n this._cd.detectChanges();\n }\n\n itemFailedToLoad(item: GalleryItemInternal) {\n return item._failed;\n }\n\n isItemFringe(index: number) {\n index = index - this.fringeCount;\n return index < 0 || index >= this.items.length;\n }\n\n private center() {\n this.shift();\n }\n\n private correctIndexOutOfBounds(index: number) {\n return index < 0 ? 0 : this.items.length - 1;\n }\n\n private getFringeCount() {\n return this.reallyLoop\n ? Math.min(Math.ceil(this.visibleItems), this.items.length)\n : 0;\n }\n\n private getItemsToBeDisplayed(fringeCount: number) {\n return this.reallyLoop\n ? [\n ...this.items.slice(-fringeCount),\n ...this.items,\n ...this.items.slice(0, fringeCount),\n ]\n : this.items;\n }\n\n private handleMouseSlides() {\n this._zone.runOutsideAngular(() => {\n const hostEl = this._hostRef.nativeElement;\n let mousedown: MouseEvent;\n let maxDeltaX = 0;\n let maxDeltaY = 0;\n\n const onmousedown = (e: MouseEvent) => {\n mousedown = e;\n this.noAnimation = this.sliding = true;\n\n document.addEventListener(\n 'mousemove',\n onmousemove,\n passiveEventListenerOpts\n );\n document.addEventListener(\n 'mouseup',\n onmouseup,\n passiveEventListenerOpts\n );\n };\n\n const onmousemove = (e: MouseEvent) => {\n maxDeltaX = Math.max(Math.abs(mousedown.clientX - e.clientX));\n maxDeltaY = Math.max(Math.abs(mousedown.clientY - e.clientY));\n this.shiftByDelta(e.movementX);\n };\n\n const onmouseup = () => {\n this.noAnimation = this.sliding = false;\n this._zone.run(() => this.selectBySwipeStats(this.pointerDeltaX));\n this.pointerDeltaX = 0;\n\n document.removeEventListener('mousemove', onmousemove);\n document.removeEventListener('mouseup', onmouseup);\n };\n\n const onclick = (e: MouseEvent) => {\n if (maxDeltaX > 10 || maxDeltaY > 10) {\n e.stopPropagation();\n // to prevent playing a video on swipe\n e.preventDefault();\n }\n maxDeltaY = maxDeltaX = 0;\n };\n\n const ondragstart = (e: DragEvent) => e.preventDefault();\n\n hostEl.addEventListener(\n 'mousedown',\n onmousedown,\n passiveEventListenerOpts\n );\n hostEl.addEventListener('click', onclick, { capture: true });\n hostEl.addEventListener('dragstart', ondragstart);\n\n this._destroyRef.onDestroy(() => {\n hostEl.removeEventListener('mousedown', onmousedown);\n hostEl.removeEventListener('click', onclick);\n hostEl.removeEventListener('dragstart', ondragstart);\n });\n });\n }\n\n private handleTouchSlides() {\n this._zone.runOutsideAngular(() => {\n const hostEl = this._hostRef.nativeElement;\n let horizontal: boolean | undefined;\n let touchstart: TouchEvent | undefined;\n let lastTouchmove: TouchEvent | undefined;\n\n const ontouchstart = (e: TouchEvent) => {\n touchstart = e;\n this.noAnimation = this.sliding = true;\n };\n\n const ontouchmove = (e: TouchEvent) => {\n if (!touchstart || e.touches.length !== 1) {\n return;\n }\n const startTouch = touchstart.touches[0];\n const moveTouch = e.touches[0];\n\n if (horizontal == null) {\n const deltaX = Math.abs(moveTouch.clientX - startTouch.clientX);\n const deltaY = Math.abs(moveTouch.clientY - startTouch.clientY);\n\n if (deltaX || deltaY) {\n horizontal = deltaX * 1.2 >= deltaY;\n }\n }\n\n if (horizontal) {\n this.shiftByDelta(\n moveTouch.clientX - (lastTouchmove ?? touchstart).touches[0].clientX\n );\n lastTouchmove = e;\n if (UA.ios) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n };\n\n const ontouchend = () => {\n this.noAnimation = this.sliding = false;\n this._zone.run(() => this.selectBySwipeStats(this.pointerDeltaX));\n this.pointerDeltaX = 0;\n\n horizontal = undefined;\n touchstart = undefined;\n lastTouchmove = undefined;\n };\n\n hostEl.addEventListener(\n 'touchstart',\n ontouchstart,\n passiveEventListenerOpts\n );\n document.addEventListener('touchmove', ontouchmove, {\n passive: !UA.ios,\n });\n document.addEventListener(\n 'touchend',\n ontouchend,\n passiveEventListenerOpts\n );\n this._destroyRef.onDestroy(() => {\n hostEl.removeEventListener('touchstart', ontouchstart);\n document.removeEventListener('touchmove', ontouchmove);\n document.removeEventListener('touchend', ontouchend);\n });\n });\n }\n\n private handleResizes() {\n window.addEventListener(\n 'resize',\n this.updateDimensions,\n passiveEventListenerOpts\n );\n\n this._destroyRef.onDestroy(() => {\n window.removeEventListener('resize', this.updateDimensions);\n });\n }\n\n private loopTo(desiredIndex: number) {\n this.noAnimation = true;\n\n const shift = Math.sign(desiredIndex) * this.items.length * this._itemWidth;\n\n this.shiftByDelta(shift);\n this.selectedIndex =\n desiredIndex < 0\n ? desiredIndex + this.items.length\n : desiredIndex - this.items.length;\n\n // NOTE: This is needed so that animation is reactivated really only after the loop shift\n // happened. Without the requestAnimationFrame, the setTimeout is often not enough, as it\n // can happen still before the next frame is painted, which would cause the loop shift\n // to be animated.\n // But, requestAnimationFrame is not enough as its callback is called BEFORE the next paint,\n // not after. Second requestAnimationFrame would also be possible, but setTimeout is better\n // as it's called right after the next paint happens.\n requestAnimationFrame(() =>\n setTimeout(() => {\n this.pointerDeltaX = 0;\n this.noAnimation = false;\n this.center();\n })\n );\n }\n\n private observeFringes() {\n if (!isBrowser) {\n return;\n }\n this.fringeObserver?.disconnect();\n\n const observer = new IntersectionObserver(this.repositionOnFringe, {\n root: this._hostRef.nativeElement,\n threshold: 1.0,\n });\n observer.observe(this.itemsRef.first.nativeElement);\n observer.observe(this.itemsRef.last.nativeElement);\n\n this.fringeObserver = observer;\n }\n\n private repositionOnFringe: IntersectionObserverCallback = entries => {\n if (!this.reallyLoop || !this.sliding) {\n return;\n }\n const { first } = this.itemsRef;\n const visibleEntries = entries.filter(e => e.isIntersecting);\n\n if (visibleEntries.length === 0) {\n return;\n }\n\n const beginningVisible = entries[0].target === first.nativeElement;\n\n this.pointerDeltaX +=\n (beginningVisible ? -1 : 1) * this.items.length * this._itemWidth;\n };\n\n private updateDimensions = () => {\n this._itemWidth =\n this._hostRef.nativeElement.querySelector('li')!.offsetWidth;\n };\n\n private selectBySwipeStats(distance: number) {\n // I use round instead of previous ceil here because the ceil was pretty one-sided in where the\n // index delta would move. This was apparent in looping mode, where items that were clearly to be\n // scrolled to were actually hidden in favor of items that were barely visible, but selected thanks\n // to Math.ceil.\n // Now I use magical constant 2.25 to make sure a tiny swipe slides to next items, but there is still\n // a tiny threshold to make sure the slide doesn't always happen.\n const indexDelta =\n Math.round(\n (Math.abs(distance) + this._itemWidth / 2.25) / this._itemWidth\n ) * -Math.sign(distance);\n const newIndex = this.selectedIndex + indexDelta;\n\n this.select(newIndex, false);\n }\n\n private shift(delta = 0) {\n const multiplier = this.isRtl ? 1 : -1;\n const index = (this.selectedIndex + this.fringeCount) * multiplier;\n delta *= -multiplier;\n const shift = `calc(${index} * var(--item-width) + ${delta}px)`;\n\n this.itemListRef.nativeElement.style.transform = `translate3d(${shift}, 0, 0)`;\n }\n\n private shiftByDelta = (delta: number) => {\n this.pointerDeltaX += delta;\n this.shift(this.pointerDeltaX);\n };\n\n private stopCurrentVideo() {\n const videoEl = this.itemsRef\n .get(this.selectedIndex)\n ?.nativeElement.querySelector('video');\n\n if (videoEl) {\n videoEl.pause();\n }\n }\n}\n","\n \n\n\n
    \n
  • \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n
    \n

    \n {{ errorText || 'Loading of this media failed' }}\n

    \n \n
    \n\n \n\n \n \n \n \n
\n\n\n \n\n\n\n\n
\n\n\n \n\n","export interface Aria {\n galleryLabel: string;\n viewerLabel: string;\n}\n\nexport const defaultAria: Aria = {\n galleryLabel: 'Image Gallery',\n viewerLabel: 'Displayed gallery images.',\n};\n","export * from './support';\nexport { GalleryItem, GalleryItemEvent } from './gallery-item';\nexport * from './object-fit';\nexport * from './loading';\nexport * from './orientation';\nexport * from './template-contexts';\nexport { Aria } from './aria';\n","export type Loading = 'auto' | 'lazy';\n","export type ObjectFit = 'contain' | 'cover';\n","export type Orientation = 'top' | 'bottom' | 'left' | 'right';\n\nexport type VerticalOrientation = 'top' | 'bottom';\n\nexport const enum OrientationFlag {\n LEFT = 2,\n RIGHT = 4,\n TOP = 8,\n BOTTOM = 16,\n HORIZONTAL = 6,\n VERTICAL = 24,\n}\n\nexport const orientations = {\n left: OrientationFlag.LEFT,\n right: OrientationFlag.RIGHT,\n top: OrientationFlag.TOP,\n bottom: OrientationFlag.BOTTOM,\n};\n","export const isBrowser = typeof window !== 'undefined';\n\nexport const SUPPORT = {\n scrollBehavior: isBrowser && 'scrollBehavior' in document.body.style,\n};\n\nexport const UA = {\n ios: isBrowser && !!window.navigator.userAgent.match(/iP(ad|hone|od)/),\n};\n","import { GalleryItem } from './gallery-item';\n\nexport interface ItemTemplateContext {\n index: number;\n selectedIndex: number;\n item: GalleryItem;\n video: boolean;\n}\n\nexport interface ThumbTemplateContext {\n index: number;\n selectedIndex: number;\n item: GalleryItem;\n}\n\nexport interface ContentTemplateContext {\n selectedIndex: number;\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[media]',\n standalone: true,\n})\nexport class MediaDirective implements OnInit, OnDestroy {\n @Output()\n mediaLoadError = new EventEmitter();\n\n private nativeEl: HTMLElement;\n\n constructor(hostRef: ElementRef) {\n this.nativeEl = hostRef.nativeElement;\n }\n\n ngOnInit() {\n this.nativeEl.addEventListener('error', this.onLoad, true);\n }\n\n ngOnDestroy() {\n this.nativeEl.removeEventListener('error', this.onLoad, true);\n }\n\n onLoad = (ev: Event) => {\n if (ev.type === 'error') {\n this.mediaLoadError.emit();\n }\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(url: string) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","/*\n * Public API Surface of the gallery\n */\nexport * from './lib/components/gallery/gallery.component';\nexport * from './lib/core';\n"],"names":["AppComponent","constructor","cd","installScript","componentCode","componentTemplateCode","images","src","thumbSrc","alt","description","extendedImages","erroredImages","video","slice","videos","ngOnInit","mobileMatcher","matchMedia","tabletMatcher","onchange","e","mobile","matches","detectChanges","tablet","i0","ɵɵdirectiveInject","ChangeDetectorRef","selectors","decls","vars","consts","template","AppComponent_Template","rf","ctx","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵproperty","BrowserModule","BrowserAnimationsModule","FormsModule","CommonModule","MatButtonModule","MatCheckboxModule","MAT_FORM_FIELD_DEFAULT_OPTIONS","MatFormFieldModule","MatIconModule","MatInputModule","MatToolbarModule","MatRadioModule","DemoWholeConfigComponent","HeaderComponent","ShowcaseComponent","DemoThumbsOrientationComponent","DemoMultipleItemsComponent","DemoCustomTemplatesComponent","GalleryComponent","materialModules","AppModule","bootstrap","provide","useValue","appearance","imports","declarations","item_r4","ɵɵsanitizeUrl","ɵɵlistener","DemoCustomTemplatesComponent_ng_template_1_Template_div_click_0_listener","restoredCtx","ɵɵrestoreView","_r11","item","ctx_r10","ɵɵnextContext","ɵɵresetView","selectedItem","ɵɵtemplate","DemoCustomTemplatesComponent_ng_template_1_img_2_Template","DemoCustomTemplatesComponent_ng_template_1_video_3_Template","ɵɵclassProp","ctx_r1","video_r5","inputs","DemoCustomTemplatesComponent_Template","DemoCustomTemplatesComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","DemoCustomTemplatesComponent_ng_template_3_Template","_r0","_r2","ctx_r0","items","showGallery","reloadGallery","DemoMultipleItemsComponent_Template","DemoMultipleItemsComponent_gallery_0_Template","ngOnChanges","firstChange","orientation","features","ɵɵNgOnChangesFeature","DemoThumbsOrientationComponent_Template","DemoThumbsOrientationComponent_Template_mat_radio_group_ngModelChange_0_listener","$event","defer","of","delay","switchMap","DemoWholeConfigComponent_gallery_105_Template_gallery_descriptionClick_0_listener","_r14","ctx_r13","galleryConfig","descriptions","ɵɵpipeBind1","arrows","mouseGestures","touchGestures","counter","counterOrientation","visibleItems","objectFit","loading","loop","rtl","selectedIndex","thumbs","thumbsAutoScroll","thumbsOrientation","thumbsArrows","thumbsArrowSlideByLength","thumbsScrollBehavior","ɵɵelementContainer","DemoWholeConfigComponent_ng_template_108_ng_template_1_div_2_Template","seen_r18","item_r17","_r24","naturalHeight","DemoWholeConfigComponent_ng_template_108_ng_container_0_Template","DemoWholeConfigComponent_ng_template_108_ng_template_1_Template","DemoWholeConfigComponent_ng_template_108_ng_template_3_Template","_r22","_r20","item_r31","displayGallery","imageLoadingLatency","storeGalleryConfig","sessionStorage","setItem","JSON","stringify","getGalleryConfig","pipe","window","addEventListener","onConfigChange","prop","value","getInputValue","event","target","parse","getItem","viewQuery","DemoWholeConfigComponent_Query","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_5_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_8_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_11_listener","DemoWholeConfigComponent_Template_mat_checkbox_change_11_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_14_listener","DemoWholeConfigComponent_Template_mat_checkbox_change_14_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_17_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_20_listener","DemoWholeConfigComponent_Template_mat_checkbox_change_20_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_23_listener","DemoWholeConfigComponent_Template_mat_checkbox_change_23_listener","DemoWholeConfigComponent_Template_mat_radio_group_ngModelChange_28_listener","DemoWholeConfigComponent_Template_mat_radio_group_ngModelChange_36_listener","DemoWholeConfigComponent_Template_mat_radio_group_ngModelChange_44_listener","DemoWholeConfigComponent_Template_mat_radio_group_change_44_listener","DemoWholeConfigComponent_Template_input_ngModelChange_53_listener","DemoWholeConfigComponent_Template_input_change_53_listener","DemoWholeConfigComponent_Template_input_input_58_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_63_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_66_listener","DemoWholeConfigComponent_Template_mat_checkbox_ngModelChange_69_listener","DemoWholeConfigComponent_Template_mat_radio_group_ngModelChange_74_listener","DemoWholeConfigComponent_Template_mat_radio_group_ngModelChange_86_listener","DemoWholeConfigComponent_Template_input_ngModelChange_95_listener","DemoWholeConfigComponent_Template_input_ngModelChange_103_listener","DemoWholeConfigComponent_Template_input_change_103_listener","DemoWholeConfigComponent_gallery_105_Template","DemoWholeConfigComponent_ng_template_106_Template","DemoWholeConfigComponent_ng_template_108_Template","DemoWholeConfigComponent_ng_template_110_Template","DemoWholeConfigComponent_ng_template_112_Template","DemoWholeConfigComponent_ng_template_114_Template","DemoWholeConfigComponent_ng_template_116_Template","HeaderComponent_Template","stackblitz","heading","subheading","ngContentSelectors","_c1","ShowcaseComponent_Template","ɵɵprojection","ShowcaseComponent_a_6_Template","ɵɵtextInterpolate1","environment","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","catch","err","console","error","CounterComponent","hostVars","hostBindings","CounterComponent_HostBindings","ɵɵtextInterpolate2","itemQuantity","ElementRef","EventEmitter","OrientationFlag","defaultAria","ThumbsComponent","ViewerComponent","aria","galleryLabel","GalleryComponent_thumbs_1_Template_thumbs_thumbClick_0_listener","_r3","ctx_r2","_onThumbClick","GalleryComponent_thumbs_1_Template_thumbs_thumbHover_0_listener","ctx_r4","thumbHover","emit","thumbTemplate","thumbsArrowTemplate","thumbErrorTemplate","isRtl","showErrors","clip","moveByItems","itemClick","thumbClick","descriptionClick","selection","_galleryColumn","_thumbsOrientationFlag","currentValue","focus","_viewerElRef","nativeElement","next","_viewerRef","selectByDelta","prev","select","index","_thumbsRef","_selectInternal","slideThumbs","direction","slide","GalleryComponent_Query","GalleryComponent_keydown_arrowleft_HostBindingHandler","GalleryComponent_span_0_Template","GalleryComponent_thumbs_1_Template","GalleryComponent_Template_viewer_itemClick_2_listener","GalleryComponent_Template_viewer_descriptionClick_2_listener","GalleryComponent_Template_viewer_selection_2_listener","errorText","itemTemplate","errorTemplate","contentTemplate","arrowTemplate","i1","NgIf","styles","changeDetection","ChevronIconComponent","standalone","ɵɵStandaloneFeature","ChevronIconComponent_Template","ɵɵnamespaceSVG","SUPPORT","isBrowser","ThumbsComponent_button_0_Template_button_click_0_listener","_r7","ctx_r6","ThumbsComponent_button_0_div_1_Template","item_r8","ɵɵelementContainerStart","ThumbsComponent_li_4_ng_container_2_ng_container_2_div_1_Template","ɵɵelementContainerEnd","ctx_r14","ThumbsComponent_li_4_ng_container_2_Template_img_load_1_listener","_r19","$implicit","ctx_r17","onLoadChange","ThumbsComponent_li_4_ng_container_2_Template_img_error_1_listener","ctx_r20","ThumbsComponent_li_4_ng_container_2_ng_container_2_Template","_thumbFailed","ThumbsComponent_li_4_ng_template_3_ng_container_0_Template","ɵɵpureFunction3","_c2","i_r9","ThumbsComponent_li_4_Template_li_click_0_listener","_r26","ctx_r25","emitEvent","ThumbsComponent_li_4_Template_li_mouseenter_0_listener","ctx_r27","ThumbsComponent_li_4_ng_container_2_Template","ThumbsComponent_li_4_ng_template_3_Template","ctx_r3","_r12","ThumbsComponent_button_5_Template_button_click_0_listener","_r30","ctx_r29","ThumbsComponent_button_5_div_1_Template","cssClass","hostOffsetAxis","vertical","elRef","offsetHeight","offsetWidth","scrollKey","thumbsEmpty","thumbsRef","length","showStartArrow","showEndArrow","onArrowsObserved","entries","firstTarget","first","last","firstThumbEntry","lastThumbEntry","setObservedArrows","observeArrows","unobserveArrows","setTimeout","centerThumbIfNeeded","ngOnDestroy","delta","arrowSlideByLength","thumbList","thumbListRef","thumbListScrollAxis","scrollHeight","scrollWidth","thumbListOffsetAxis","Math","min","scroll","nextItemRef","toArray","nextItemEl","offsetLeft","offsetTop","itemOffset","itemOffsetAxis","hostScrollAxis","thumbListScroll","nextScrollDelta","autoScroll","emitter","success","totalScrollDelta","scrollBehavior","shiftByDelta","scrollId","cancelAnimationFrame","totalDistance","abs","startTime","Date","now","baseArrowSlideTime","totalTime","log10","currentScroll","animate","suggestedScroll","ceil","frameScroll","sign","requestAnimationFrame","arrowObserver","IntersectionObserver","root","threshold","observe","firstThumb","lastThumb","inverse","intersectionRatio","disconnect","ThumbsComponent_Query","ThumbsComponent_button_0_Template","ThumbsComponent_li_3_Template","ThumbsComponent_li_4_Template","ThumbsComponent_button_5_Template","ɵɵstyleProp","NgForOf","NgTemplateOutlet","style","transition","trigger","UA","MediaDirective","SafePipe","ViewerComponent_button_0_Template_button_mousedown_0_listener","stopPropagation","ViewerComponent_button_0_Template_button_click_0_listener","ViewerComponent_button_0_chevron_icon_1_Template","source_r23","srcset","ɵɵattribute","media","sizes","type","ViewerComponent_li_4_ng_container_2_picture_1_source_1_Template","undefined","item_r12","pictureSources","ctx_r19","ɵɵsanitizeResourceUrl","ctx_r21","ViewerComponent_li_4_ng_container_2_picture_1_Template","ViewerComponent_li_4_ng_container_2_video_2_Template","ViewerComponent_li_4_ng_container_2_iframe_3_Template","ctx_r15","isYoutube","ctx_r28","ViewerComponent_li_4_ng_container_3_div_1_Template","ctx_r16","ViewerComponent_li_4_ng_template_5_ng_container_0_Template","ctx_r18","ɵɵpureFunction4","indexOf","ViewerComponent_li_4_Template_li_click_0_listener","_r32","ctx_r31","onImageClick","ViewerComponent_li_4_Template_li_mediaLoadError_0_listener","ctx_r33","onItemErrored","ViewerComponent_li_4_Template_li_keydown_Tab_0_listener","i_r13","ctx_r34","onTab","ViewerComponent_li_4_Template_li_keydown_shift_Tab_0_listener","ctx_r35","ViewerComponent_li_4_ng_container_2_Template","ViewerComponent_li_4_ng_container_3_Template","ViewerComponent_li_4_ng_template_5_Template","isItemFringe","_r17","itemFailedToLoad","ɵɵsanitizeHtml","ViewerComponent_button_5_Template_button_mousedown_0_listener","ViewerComponent_button_5_Template_button_click_0_listener","_r39","ctx_r38","ViewerComponent_button_5_chevron_icon_1_Template","ctx_r5","counterIndex","ViewerComponent_div_8_div_1_Template_div_click_0_listener","_r43","ctx_r42","description_r41","ViewerComponent_div_8_div_1_Template","ctx_r7","SLIDE_ANIMATION_DURATION","passiveEventListenerOpts","passive","noAnimation","itemListRef","transitionDuration","floor","showArrow","showPrevArrow","reallyLoop","showNextArrow","_hostRef","_cd","_destroyRef","_zone","fringeCount","getFringeCount","_itemWidth","pointerDeltaX","sliding","repositionOnFringe","itemsRef","visibleEntries","filter","isIntersecting","beginningVisible","updateDimensions","querySelector","shift","setProperty","observeFringes","displayedItems","getItemsToBeDisplayed","center","handleResizes","handleMouseSlides","handleTouchSlides","onDestroy","fringeObserver","ngAfterViewInit","match","shortPath","stopCurrentVideo","maxIndex","indexOutOfBounds","looping","loopTo","correctIndexOutOfBounds","nextItemIndex","scrollLeft","_failed","runOutsideAngular","hostEl","mousedown","maxDeltaX","maxDeltaY","onmousedown","document","onmousemove","onmouseup","max","clientX","clientY","movementX","run","selectBySwipeStats","removeEventListener","onclick","preventDefault","ondragstart","capture","horizontal","touchstart","lastTouchmove","ontouchstart","ontouchmove","touches","startTouch","moveTouch","deltaX","deltaY","ios","ontouchend","desiredIndex","observer","distance","indexDelta","round","newIndex","multiplier","transform","videoEl","get","pause","DestroyRef","NgZone","ViewerComponent_Query","ViewerComponent_button_0_Template","ViewerComponent_li_3_Template","ViewerComponent_li_4_Template","ViewerComponent_button_5_Template","ViewerComponent_counter_6_Template","ViewerComponent_ng_container_7_Template","ViewerComponent_div_8_Template","viewerLabel","ɵɵpureFunction1","_c3","data","animation","opacity","orientations","left","right","top","bottom","body","navigator","userAgent","hostRef","mediaLoadError","onLoad","ev","nativeEl","outputs","sanitizer","url","bypassSecurityTrustResourceUrl","DomSanitizer","pure"],"sourceRoot":"webpack:///","x_google_ignoreList":[]} \ No newline at end of file diff --git a/polyfills.js b/polyfills.js deleted file mode 100644 index f343648f..00000000 --- a/polyfills.js +++ /dev/null @@ -1,2742 +0,0 @@ -"use strict"; -(self["webpackChunkdemo"] = self["webpackChunkdemo"] || []).push([["polyfills"],{ - -/***/ 765: -/*!************************************!*\ - !*** ./apps/demo/src/polyfills.ts ***! - \************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var zone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zone.js */ 6657); -/* harmony import */ var zone_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(zone_js__WEBPACK_IMPORTED_MODULE_0__); -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ -/*************************************************************************************************** - * BROWSER POLYFILLS - */ -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags.ts'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ - // Included with Angular CLI. -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - -/***/ }), - -/***/ 6657: -/*!***********************************************!*\ - !*** ./node_modules/zone.js/fesm2015/zone.js ***! - \***********************************************/ -/***/ (() => { - - - -/** - * @license Angular v - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ -(function (global) { - const performance = global['performance']; - function mark(name) { - performance && performance['mark'] && performance['mark'](name); - } - function performanceMeasure(name, label) { - performance && performance['measure'] && performance['measure'](name, label); - } - mark('Zone'); - // Initialize before it's accessed below. - // __Zone_symbol_prefix global can be used to override the default zone - // symbol prefix with a custom one if needed. - const symbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__'; - function __symbol__(name) { - return symbolPrefix + name; - } - const checkDuplicate = global[__symbol__('forceDuplicateZoneCheck')] === true; - if (global['Zone']) { - // if global['Zone'] already exists (maybe zone.js was already loaded or - // some other lib also registered a global object named Zone), we may need - // to throw an error, but sometimes user may not want this error. - // For example, - // we have two web pages, page1 includes zone.js, page2 doesn't. - // and the 1st time user load page1 and page2, everything work fine, - // but when user load page2 again, error occurs because global['Zone'] already exists. - // so we add a flag to let user choose whether to throw this error or not. - // By default, if existing Zone is from zone.js, we will not throw the error. - if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { - throw new Error('Zone already loaded.'); - } else { - return global['Zone']; - } - } - class Zone { - static assertZonePatched() { - if (global['Promise'] !== patches['ZoneAwarePromise']) { - throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)'); - } - } - static get root() { - let zone = Zone.current; - while (zone.parent) { - zone = zone.parent; - } - return zone; - } - static get current() { - return _currentZoneFrame.zone; - } - static get currentTask() { - return _currentTask; - } - // tslint:disable-next-line:require-internal-with-underscore - static __load_patch(name, fn, ignoreDuplicate = false) { - if (patches.hasOwnProperty(name)) { - // `checkDuplicate` option is defined from global variable - // so it works for all modules. - // `ignoreDuplicate` can work for the specified module - if (!ignoreDuplicate && checkDuplicate) { - throw Error('Already loaded patch: ' + name); - } - } else if (!global['__Zone_disable_' + name]) { - const perfName = 'Zone:' + name; - mark(perfName); - patches[name] = fn(global, Zone, _api); - performanceMeasure(perfName, perfName); - } - } - get parent() { - return this._parent; - } - get name() { - return this._name; - } - constructor(parent, zoneSpec) { - this._parent = parent; - this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; - this._properties = zoneSpec && zoneSpec.properties || {}; - this._zoneDelegate = new _ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); - } - get(key) { - const zone = this.getZoneWith(key); - if (zone) return zone._properties[key]; - } - getZoneWith(key) { - let current = this; - while (current) { - if (current._properties.hasOwnProperty(key)) { - return current; - } - current = current._parent; - } - return null; - } - fork(zoneSpec) { - if (!zoneSpec) throw new Error('ZoneSpec required!'); - return this._zoneDelegate.fork(this, zoneSpec); - } - wrap(callback, source) { - if (typeof callback !== 'function') { - throw new Error('Expecting function got: ' + callback); - } - const _callback = this._zoneDelegate.intercept(this, callback, source); - const zone = this; - return function () { - return zone.runGuarded(_callback, this, arguments, source); - }; - } - run(callback, applyThis, applyArgs, source) { - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runGuarded(callback, applyThis = null, applyArgs, source) { - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - try { - try { - return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - _currentZoneFrame = _currentZoneFrame.parent; - } - } - runTask(task, applyThis, applyArgs) { - if (task.zone != this) { - throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - } - // https://github.com/angular/zone.js/issues/778, sometimes eventTask - // will run in notScheduled(canceled) state, we should not try to - // run such kind of task but just return - if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { - return; - } - const reEntryGuard = task.state != running; - reEntryGuard && task._transitionTo(running, scheduled); - task.runCount++; - const previousTask = _currentTask; - _currentTask = task; - _currentZoneFrame = { - parent: _currentZoneFrame, - zone: this - }; - try { - if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = undefined; - } - try { - return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); - } catch (error) { - if (this._zoneDelegate.handleError(this, error)) { - throw error; - } - } - } finally { - // if the task's state is notScheduled or unknown, then it has already been cancelled - // we should not reset the state to scheduled - if (task.state !== notScheduled && task.state !== unknown) { - if (task.type == eventTask || task.data && task.data.isPeriodic) { - reEntryGuard && task._transitionTo(scheduled, running); - } else { - task.runCount = 0; - this._updateTaskCount(task, -1); - reEntryGuard && task._transitionTo(notScheduled, running, notScheduled); - } - } - _currentZoneFrame = _currentZoneFrame.parent; - _currentTask = previousTask; - } - } - scheduleTask(task) { - if (task.zone && task.zone !== this) { - // check if the task was rescheduled, the newZone - // should not be the children of the original zone - let newZone = this; - while (newZone) { - if (newZone === task.zone) { - throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`); - } - newZone = newZone.parent; - } - } - task._transitionTo(scheduling, notScheduled); - const zoneDelegates = []; - task._zoneDelegates = zoneDelegates; - task._zone = this; - try { - task = this._zoneDelegate.scheduleTask(this, task); - } catch (err) { - // should set task's state to unknown when scheduleTask throw error - // because the err may from reschedule, so the fromState maybe notScheduled - task._transitionTo(unknown, scheduling, notScheduled); - // TODO: @JiaLiPassion, should we check the result from handleError? - this._zoneDelegate.handleError(this, err); - throw err; - } - if (task._zoneDelegates === zoneDelegates) { - // we have to check because internally the delegate can reschedule the task. - this._updateTaskCount(task, 1); - } - if (task.state == scheduling) { - task._transitionTo(scheduled, scheduling); - } - return task; - } - scheduleMicroTask(source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); - } - scheduleMacroTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); - } - scheduleEventTask(source, callback, data, customSchedule, customCancel) { - return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); - } - cancelTask(task) { - if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); - if (task.state !== scheduled && task.state !== running) { - return; - } - task._transitionTo(canceling, scheduled, running); - try { - this._zoneDelegate.cancelTask(this, task); - } catch (err) { - // if error occurs when cancelTask, transit the state to unknown - task._transitionTo(unknown, canceling); - this._zoneDelegate.handleError(this, err); - throw err; - } - this._updateTaskCount(task, -1); - task._transitionTo(notScheduled, canceling); - task.runCount = 0; - return task; - } - _updateTaskCount(task, count) { - const zoneDelegates = task._zoneDelegates; - if (count == -1) { - task._zoneDelegates = null; - } - for (let i = 0; i < zoneDelegates.length; i++) { - zoneDelegates[i]._updateTaskCount(task.type, count); - } - } - } - // tslint:disable-next-line:require-internal-with-underscore - Zone.__symbol__ = __symbol__; - const DELEGATE_ZS = { - name: '', - onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState), - onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task), - onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs), - onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task) - }; - class _ZoneDelegate { - constructor(zone, parentDelegate, zoneSpec) { - this._taskCounts = { - 'microTask': 0, - 'macroTask': 0, - 'eventTask': 0 - }; - this.zone = zone; - this._parentDelegate = parentDelegate; - this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); - this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); - this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate._forkCurrZone); - this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); - this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); - this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate._interceptCurrZone); - this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); - this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); - this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate._invokeCurrZone); - this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); - this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); - this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate._handleErrorCurrZone); - this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); - this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate._scheduleTaskCurrZone); - this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); - this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); - this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate._invokeTaskCurrZone); - this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); - this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); - this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate._cancelTaskCurrZone); - this._hasTaskZS = null; - this._hasTaskDlgt = null; - this._hasTaskDlgtOwner = null; - this._hasTaskCurrZone = null; - const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; - const parentHasTask = parentDelegate && parentDelegate._hasTaskZS; - if (zoneSpecHasTask || parentHasTask) { - // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such - // a case all task related interceptors must go through this ZD. We can't short circuit it. - this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; - this._hasTaskDlgt = parentDelegate; - this._hasTaskDlgtOwner = this; - this._hasTaskCurrZone = zone; - if (!zoneSpec.onScheduleTask) { - this._scheduleTaskZS = DELEGATE_ZS; - this._scheduleTaskDlgt = parentDelegate; - this._scheduleTaskCurrZone = this.zone; - } - if (!zoneSpec.onInvokeTask) { - this._invokeTaskZS = DELEGATE_ZS; - this._invokeTaskDlgt = parentDelegate; - this._invokeTaskCurrZone = this.zone; - } - if (!zoneSpec.onCancelTask) { - this._cancelTaskZS = DELEGATE_ZS; - this._cancelTaskDlgt = parentDelegate; - this._cancelTaskCurrZone = this.zone; - } - } - } - fork(targetZone, zoneSpec) { - return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec); - } - intercept(targetZone, callback, source) { - return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback; - } - invoke(targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); - } - handleError(targetZone, error) { - return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true; - } - scheduleTask(targetZone, task) { - let returnTask = task; - if (this._scheduleTaskZS) { - if (this._hasTaskZS) { - returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); - } - // clang-format off - returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); - // clang-format on - if (!returnTask) returnTask = task; - } else { - if (task.scheduleFn) { - task.scheduleFn(task); - } else if (task.type == microTask) { - scheduleMicroTask(task); - } else { - throw new Error('Task is missing scheduleFn.'); - } - } - return returnTask; - } - invokeTask(targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); - } - cancelTask(targetZone, task) { - let value; - if (this._cancelTaskZS) { - value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); - } else { - if (!task.cancelFn) { - throw Error('Task is not cancelable'); - } - value = task.cancelFn(task); - } - return value; - } - hasTask(targetZone, isEmpty) { - // hasTask should not throw error so other ZoneDelegate - // can still trigger hasTask callback - try { - this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); - } catch (err) { - this.handleError(targetZone, err); - } - } - // tslint:disable-next-line:require-internal-with-underscore - _updateTaskCount(type, count) { - const counts = this._taskCounts; - const prev = counts[type]; - const next = counts[type] = prev + count; - if (next < 0) { - throw new Error('More tasks executed then were scheduled.'); - } - if (prev == 0 || next == 0) { - const isEmpty = { - microTask: counts['microTask'] > 0, - macroTask: counts['macroTask'] > 0, - eventTask: counts['eventTask'] > 0, - change: type - }; - this.hasTask(this.zone, isEmpty); - } - } - } - class ZoneTask { - constructor(type, source, callback, options, scheduleFn, cancelFn) { - // tslint:disable-next-line:require-internal-with-underscore - this._zone = null; - this.runCount = 0; - // tslint:disable-next-line:require-internal-with-underscore - this._zoneDelegates = null; - // tslint:disable-next-line:require-internal-with-underscore - this._state = 'notScheduled'; - this.type = type; - this.source = source; - this.data = options; - this.scheduleFn = scheduleFn; - this.cancelFn = cancelFn; - if (!callback) { - throw new Error('callback is not defined'); - } - this.callback = callback; - const self = this; - // TODO: @JiaLiPassion options should have interface - if (type === eventTask && options && options.useG) { - this.invoke = ZoneTask.invokeTask; - } else { - this.invoke = function () { - return ZoneTask.invokeTask.call(global, self, this, arguments); - }; - } - } - static invokeTask(task, target, args) { - if (!task) { - task = this; - } - _numberOfNestedTaskFrames++; - try { - task.runCount++; - return task.zone.runTask(task, target, args); - } finally { - if (_numberOfNestedTaskFrames == 1) { - drainMicroTaskQueue(); - } - _numberOfNestedTaskFrames--; - } - } - get zone() { - return this._zone; - } - get state() { - return this._state; - } - cancelScheduleRequest() { - this._transitionTo(notScheduled, scheduling); - } - // tslint:disable-next-line:require-internal-with-underscore - _transitionTo(toState, fromState1, fromState2) { - if (this._state === fromState1 || this._state === fromState2) { - this._state = toState; - if (toState == notScheduled) { - this._zoneDelegates = null; - } - } else { - throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`); - } - } - toString() { - if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId.toString(); - } else { - return Object.prototype.toString.call(this); - } - } - // add toJSON method to prevent cyclic error when - // call JSON.stringify(zoneTask) - toJSON() { - return { - type: this.type, - state: this.state, - source: this.source, - zone: this.zone.name, - runCount: this.runCount - }; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// MICROTASK QUEUE - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const symbolSetTimeout = __symbol__('setTimeout'); - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - let _microTaskQueue = []; - let _isDrainingMicrotaskQueue = false; - let nativeMicroTaskQueuePromise; - function nativeScheduleMicroTask(func) { - if (!nativeMicroTaskQueuePromise) { - if (global[symbolPromise]) { - nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); - } - } - if (nativeMicroTaskQueuePromise) { - let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; - if (!nativeThen) { - // native Promise is not patchable, we need to use `then` directly - // issue 1078 - nativeThen = nativeMicroTaskQueuePromise['then']; - } - nativeThen.call(nativeMicroTaskQueuePromise, func); - } else { - global[symbolSetTimeout](func, 0); - } - } - function scheduleMicroTask(task) { - // if we are not running in any task, and there has not been anything scheduled - // we must bootstrap the initial task creation by manually scheduling the drain - if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { - // We are not running in Task, so we need to kickstart the microtask queue. - nativeScheduleMicroTask(drainMicroTaskQueue); - } - task && _microTaskQueue.push(task); - } - function drainMicroTaskQueue() { - if (!_isDrainingMicrotaskQueue) { - _isDrainingMicrotaskQueue = true; - while (_microTaskQueue.length) { - const queue = _microTaskQueue; - _microTaskQueue = []; - for (let i = 0; i < queue.length; i++) { - const task = queue[i]; - try { - task.zone.runTask(task, null, null); - } catch (error) { - _api.onUnhandledError(error); - } - } - } - _api.microtaskDrainDone(); - _isDrainingMicrotaskQueue = false; - } - } - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - /// BOOTSTRAP - ////////////////////////////////////////////////////// - ////////////////////////////////////////////////////// - const NO_ZONE = { - name: 'NO ZONE' - }; - const notScheduled = 'notScheduled', - scheduling = 'scheduling', - scheduled = 'scheduled', - running = 'running', - canceling = 'canceling', - unknown = 'unknown'; - const microTask = 'microTask', - macroTask = 'macroTask', - eventTask = 'eventTask'; - const patches = {}; - const _api = { - symbol: __symbol__, - currentZoneFrame: () => _currentZoneFrame, - onUnhandledError: noop, - microtaskDrainDone: noop, - scheduleMicroTask: scheduleMicroTask, - showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')], - patchEventTarget: () => [], - patchOnProperties: noop, - patchMethod: () => noop, - bindArguments: () => [], - patchThen: () => noop, - patchMacroTask: () => noop, - patchEventPrototype: () => noop, - isIEOrEdge: () => false, - getGlobalObjects: () => undefined, - ObjectDefineProperty: () => noop, - ObjectGetOwnPropertyDescriptor: () => undefined, - ObjectCreate: () => undefined, - ArraySlice: () => [], - patchClass: () => noop, - wrapWithCurrentZone: () => noop, - filterProperties: () => [], - attachOriginToPatched: () => noop, - _redefineProperty: () => noop, - patchCallbacks: () => noop, - nativeScheduleMicroTask: nativeScheduleMicroTask - }; - let _currentZoneFrame = { - parent: null, - zone: new Zone(null, null) - }; - let _currentTask = null; - let _numberOfNestedTaskFrames = 0; - function noop() {} - performanceMeasure('Zone', 'Zone'); - return global['Zone'] = Zone; -})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); - -/** - * Suppress closure compiler errors about unknown 'Zone' variable - * @fileoverview - * @suppress {undefinedVars,globalThis,missingRequire} - */ -/// -// issue #989, to reduce bundle size, use short name -/** Object.getOwnPropertyDescriptor */ -const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; -/** Object.defineProperty */ -const ObjectDefineProperty = Object.defineProperty; -/** Object.getPrototypeOf */ -const ObjectGetPrototypeOf = Object.getPrototypeOf; -/** Object.create */ -const ObjectCreate = Object.create; -/** Array.prototype.slice */ -const ArraySlice = Array.prototype.slice; -/** addEventListener string const */ -const ADD_EVENT_LISTENER_STR = 'addEventListener'; -/** removeEventListener string const */ -const REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; -/** zoneSymbol addEventListener */ -const ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); -/** zoneSymbol removeEventListener */ -const ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); -/** true string const */ -const TRUE_STR = 'true'; -/** false string const */ -const FALSE_STR = 'false'; -/** Zone symbol prefix string const. */ -const ZONE_SYMBOL_PREFIX = Zone.__symbol__(''); -function wrapWithCurrentZone(callback, source) { - return Zone.current.wrap(callback, source); -} -function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { - return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); -} -const zoneSymbol = Zone.__symbol__; -const isWindowExists = typeof window !== 'undefined'; -const internalWindow = isWindowExists ? window : undefined; -const _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; -const REMOVE_ATTRIBUTE = 'removeAttribute'; -function bindArguments(args, source) { - for (let i = args.length - 1; i >= 0; i--) { - if (typeof args[i] === 'function') { - args[i] = wrapWithCurrentZone(args[i], source + '_' + i); - } - } - return args; -} -function patchPrototype(prototype, fnNames) { - const source = prototype.constructor['name']; - for (let i = 0; i < fnNames.length; i++) { - const name = fnNames[i]; - const delegate = prototype[name]; - if (delegate) { - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); - if (!isPropertyWritable(prototypeDesc)) { - continue; - } - prototype[name] = (delegate => { - const patched = function () { - return delegate.apply(this, bindArguments(arguments, source + '.' + name)); - }; - attachOriginToPatched(patched, delegate); - return patched; - })(delegate); - } - } -} -function isPropertyWritable(propertyDesc) { - if (!propertyDesc) { - return true; - } - if (propertyDesc.writable === false) { - return false; - } - return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); -} -const isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isNode = !('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]'; -const isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); -// we are in electron of nw, so we are both browser and nodejs -// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify -// this code. -const isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); -const zoneSymbolEventNames$1 = {}; -const wrapFn = function (event) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - let eventNameSymbol = zoneSymbolEventNames$1[event.type]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames$1[event.type] = zoneSymbol('ON_PROPERTY' + event.type); - } - const target = this || event.target || _global; - const listener = target[eventNameSymbol]; - let result; - if (isBrowser && target === internalWindow && event.type === 'error') { - // window.onerror have different signature - // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror - // and onerror callback will prevent default when callback return true - const errorEvent = event; - result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); - if (result === true) { - event.preventDefault(); - } - } else { - result = listener && listener.apply(this, arguments); - if (result != undefined && !result) { - event.preventDefault(); - } - } - return result; -}; -function patchProperty(obj, prop, prototype) { - let desc = ObjectGetOwnPropertyDescriptor(obj, prop); - if (!desc && prototype) { - // when patch window object, use prototype to check prop exist or not - const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); - if (prototypeDesc) { - desc = { - enumerable: true, - configurable: true - }; - } - } - // if the descriptor not exists or is not configurable - // just return - if (!desc || !desc.configurable) { - return; - } - const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); - if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { - return; - } - // A property descriptor cannot have getter/setter and be writable - // deleting the writable and value properties avoids this error: - // - // TypeError: property descriptors must not specify a value or be writable when a - // getter or setter has been specified - delete desc.writable; - delete desc.value; - const originalDescGet = desc.get; - const originalDescSet = desc.set; - // slice(2) cuz 'onclick' -> 'click', etc - const eventName = prop.slice(2); - let eventNameSymbol = zoneSymbolEventNames$1[eventName]; - if (!eventNameSymbol) { - eventNameSymbol = zoneSymbolEventNames$1[eventName] = zoneSymbol('ON_PROPERTY' + eventName); - } - desc.set = function (newValue) { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return; - } - const previousValue = target[eventNameSymbol]; - if (typeof previousValue === 'function') { - target.removeEventListener(eventName, wrapFn); - } - // issue #978, when onload handler was added before loading zone.js - // we should remove it with originalDescSet - originalDescSet && originalDescSet.call(target, null); - target[eventNameSymbol] = newValue; - if (typeof newValue === 'function') { - target.addEventListener(eventName, wrapFn, false); - } - }; - // The getter would return undefined for unassigned properties but the default value of an - // unassigned property is null - desc.get = function () { - // in some of windows's onproperty callback, this is undefined - // so we need to check it - let target = this; - if (!target && obj === _global) { - target = _global; - } - if (!target) { - return null; - } - const listener = target[eventNameSymbol]; - if (listener) { - return listener; - } else if (originalDescGet) { - // result will be null when use inline event attribute, - // such as - // because the onclick function is internal raw uncompiled handler - // the onclick will be evaluated when first time event was triggered or - // the property is accessed, https://github.com/angular/zone.js/issues/525 - // so we should use original native get to retrieve the handler - let value = originalDescGet.call(this); - if (value) { - desc.set.call(this, value); - if (typeof target[REMOVE_ATTRIBUTE] === 'function') { - target.removeAttribute(prop); - } - return value; - } - } - return null; - }; - ObjectDefineProperty(obj, prop, desc); - obj[onPropPatchedSymbol] = true; -} -function patchOnProperties(obj, properties, prototype) { - if (properties) { - for (let i = 0; i < properties.length; i++) { - patchProperty(obj, 'on' + properties[i], prototype); - } - } else { - const onProperties = []; - for (const prop in obj) { - if (prop.slice(0, 2) == 'on') { - onProperties.push(prop); - } - } - for (let j = 0; j < onProperties.length; j++) { - patchProperty(obj, onProperties[j], prototype); - } - } -} -const originalInstanceKey = zoneSymbol('originalInstance'); -// wrap some native API on `window` -function patchClass(className) { - const OriginalClass = _global[className]; - if (!OriginalClass) return; - // keep original class in global - _global[zoneSymbol(className)] = OriginalClass; - _global[className] = function () { - const a = bindArguments(arguments, className); - switch (a.length) { - case 0: - this[originalInstanceKey] = new OriginalClass(); - break; - case 1: - this[originalInstanceKey] = new OriginalClass(a[0]); - break; - case 2: - this[originalInstanceKey] = new OriginalClass(a[0], a[1]); - break; - case 3: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); - break; - case 4: - this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); - break; - default: - throw new Error('Arg list too long.'); - } - }; - // attach original delegate to patched function - attachOriginToPatched(_global[className], OriginalClass); - const instance = new OriginalClass(function () {}); - let prop; - for (prop in instance) { - // https://bugs.webkit.org/show_bug.cgi?id=44721 - if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; - (function (prop) { - if (typeof instance[prop] === 'function') { - _global[className].prototype[prop] = function () { - return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); - }; - } else { - ObjectDefineProperty(_global[className].prototype, prop, { - set: function (fn) { - if (typeof fn === 'function') { - this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); - // keep callback in wrapped function so we can - // use it in Function.prototype.toString to return - // the native one. - attachOriginToPatched(this[originalInstanceKey][prop], fn); - } else { - this[originalInstanceKey][prop] = fn; - } - }, - get: function () { - return this[originalInstanceKey][prop]; - } - }); - } - })(prop); - } - for (prop in OriginalClass) { - if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { - _global[className][prop] = OriginalClass[prop]; - } - } -} -function patchMethod(target, name, patchFn) { - let proto = target; - while (proto && !proto.hasOwnProperty(name)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && target[name]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = target; - } - const delegateName = zoneSymbol(name); - let delegate = null; - if (proto && (!(delegate = proto[delegateName]) || !proto.hasOwnProperty(delegateName))) { - delegate = proto[delegateName] = proto[name]; - // check whether proto[name] is writable - // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob - const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); - if (isPropertyWritable(desc)) { - const patchDelegate = patchFn(delegate, delegateName, name); - proto[name] = function () { - return patchDelegate(this, arguments); - }; - attachOriginToPatched(proto[name], delegate); - } - } - return delegate; -} -// TODO: @JiaLiPassion, support cancel task later if necessary -function patchMacroTask(obj, funcName, metaCreator) { - let setNative = null; - function scheduleTask(task) { - const data = task.data; - data.args[data.cbIdx] = function () { - task.invoke.apply(this, arguments); - }; - setNative.apply(data.target, data.args); - return task; - } - setNative = patchMethod(obj, funcName, delegate => function (self, args) { - const meta = metaCreator(self, args); - if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); - } else { - // cause an error by calling it directly. - return delegate.apply(self, args); - } - }); -} -function attachOriginToPatched(patched, original) { - patched[zoneSymbol('OriginalDelegate')] = original; -} -let isDetectedIEOrEdge = false; -let ieOrEdge = false; -function isIE() { - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { - return true; - } - } catch (error) {} - return false; -} -function isIEOrEdge() { - if (isDetectedIEOrEdge) { - return ieOrEdge; - } - isDetectedIEOrEdge = true; - try { - const ua = internalWindow.navigator.userAgent; - if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { - ieOrEdge = true; - } - } catch (error) {} - return ieOrEdge; -} -Zone.__load_patch('ZoneAwarePromise', (global, Zone, api) => { - const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - const ObjectDefineProperty = Object.defineProperty; - function readableObjectToString(obj) { - if (obj && obj.toString === Object.prototype.toString) { - const className = obj.constructor && obj.constructor.name; - return (className ? className : '') + ': ' + JSON.stringify(obj); - } - return obj ? obj.toString() : Object.prototype.toString.call(obj); - } - const __symbol__ = api.symbol; - const _uncaughtPromiseErrors = []; - const isDisableWrappingUncaughtPromiseRejection = global[__symbol__('DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION')] === true; - const symbolPromise = __symbol__('Promise'); - const symbolThen = __symbol__('then'); - const creationTrace = '__creationTrace__'; - api.onUnhandledError = e => { - if (api.showUncaughtError()) { - const rejection = e && e.rejection; - if (rejection) { - console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); - } else { - console.error(e); - } - } - }; - api.microtaskDrainDone = () => { - while (_uncaughtPromiseErrors.length) { - const uncaughtPromiseError = _uncaughtPromiseErrors.shift(); - try { - uncaughtPromiseError.zone.runGuarded(() => { - if (uncaughtPromiseError.throwOriginal) { - throw uncaughtPromiseError.rejection; - } - throw uncaughtPromiseError; - }); - } catch (error) { - handleUnhandledRejection(error); - } - } - }; - const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); - function handleUnhandledRejection(e) { - api.onUnhandledError(e); - try { - const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; - if (typeof handler === 'function') { - handler.call(this, e); - } - } catch (err) {} - } - function isThenable(value) { - return value && value.then; - } - function forwardResolution(value) { - return value; - } - function forwardRejection(rejection) { - return ZoneAwarePromise.reject(rejection); - } - const symbolState = __symbol__('state'); - const symbolValue = __symbol__('value'); - const symbolFinally = __symbol__('finally'); - const symbolParentPromiseValue = __symbol__('parentPromiseValue'); - const symbolParentPromiseState = __symbol__('parentPromiseState'); - const source = 'Promise.then'; - const UNRESOLVED = null; - const RESOLVED = true; - const REJECTED = false; - const REJECTED_NO_CATCH = 0; - function makeResolver(promise, state) { - return v => { - try { - resolvePromise(promise, state, v); - } catch (err) { - resolvePromise(promise, false, err); - } - // Do not return value or you will break the Promise spec. - }; - } - - const once = function () { - let wasCalled = false; - return function wrapper(wrappedFunction) { - return function () { - if (wasCalled) { - return; - } - wasCalled = true; - wrappedFunction.apply(null, arguments); - }; - }; - }; - const TYPE_ERROR = 'Promise resolved with itself'; - const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); - // Promise Resolution - function resolvePromise(promise, state, value) { - const onceWrapper = once(); - if (promise === value) { - throw new TypeError(TYPE_ERROR); - } - if (promise[symbolState] === UNRESOLVED) { - // should only get value.then once based on promise spec. - let then = null; - try { - if (typeof value === 'object' || typeof value === 'function') { - then = value && value.then; - } - } catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - return promise; - } - // if (value instanceof ZoneAwarePromise) { - if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { - clearRejectedNoCatch(value); - resolvePromise(promise, value[symbolState], value[symbolValue]); - } else if (state !== REJECTED && typeof then === 'function') { - try { - then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); - } catch (err) { - onceWrapper(() => { - resolvePromise(promise, false, err); - })(); - } - } else { - promise[symbolState] = state; - const queue = promise[symbolValue]; - promise[symbolValue] = value; - if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally - if (state === RESOLVED) { - // the state is resolved, should ignore the value - // and use parent promise value - promise[symbolState] = promise[symbolParentPromiseState]; - promise[symbolValue] = promise[symbolParentPromiseValue]; - } - } - // record task information in value when error occurs, so we can - // do some additional work such as render longStackTrace - if (state === REJECTED && value instanceof Error) { - // check if longStackTraceZone is here - const trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace]; - if (trace) { - // only keep the long stack trace into error when in longStackTraceZone - ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { - configurable: true, - enumerable: false, - writable: true, - value: trace - }); - } - } - for (let i = 0; i < queue.length;) { - scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); - } - if (queue.length == 0 && state == REJECTED) { - promise[symbolState] = REJECTED_NO_CATCH; - let uncaughtPromiseError = value; - try { - // Here we throws a new Error to print more readable error log - // and if the value is not an error, zone.js builds an `Error` - // Object here to attach the stack information. - throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\n' + value.stack : '')); - } catch (err) { - uncaughtPromiseError = err; - } - if (isDisableWrappingUncaughtPromiseRejection) { - // If disable wrapping uncaught promise reject - // use the value instead of wrapping it. - uncaughtPromiseError.throwOriginal = true; - } - uncaughtPromiseError.rejection = value; - uncaughtPromiseError.promise = promise; - uncaughtPromiseError.zone = Zone.current; - uncaughtPromiseError.task = Zone.currentTask; - _uncaughtPromiseErrors.push(uncaughtPromiseError); - api.scheduleMicroTask(); // to make sure that it is running - } - } - } - // Resolving an already resolved promise is a noop. - return promise; - } - const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); - function clearRejectedNoCatch(promise) { - if (promise[symbolState] === REJECTED_NO_CATCH) { - // if the promise is rejected no catch status - // and queue.length > 0, means there is a error handler - // here to handle the rejected promise, we should trigger - // windows.rejectionhandled eventHandler or nodejs rejectionHandled - // eventHandler - try { - const handler = Zone[REJECTION_HANDLED_HANDLER]; - if (handler && typeof handler === 'function') { - handler.call(this, { - rejection: promise[symbolValue], - promise: promise - }); - } - } catch (err) {} - promise[symbolState] = REJECTED; - for (let i = 0; i < _uncaughtPromiseErrors.length; i++) { - if (promise === _uncaughtPromiseErrors[i].promise) { - _uncaughtPromiseErrors.splice(i, 1); - } - } - } - } - function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { - clearRejectedNoCatch(promise); - const promiseState = promise[symbolState]; - const delegate = promiseState ? typeof onFulfilled === 'function' ? onFulfilled : forwardResolution : typeof onRejected === 'function' ? onRejected : forwardRejection; - zone.scheduleMicroTask(source, () => { - try { - const parentPromiseValue = promise[symbolValue]; - const isFinallyPromise = !!chainPromise && symbolFinally === chainPromise[symbolFinally]; - if (isFinallyPromise) { - // if the promise is generated from finally call, keep parent promise's state and value - chainPromise[symbolParentPromiseValue] = parentPromiseValue; - chainPromise[symbolParentPromiseState] = promiseState; - } - // should not pass value to finally callback - const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); - resolvePromise(chainPromise, true, value); - } catch (error) { - // if error occurs, should always return this error - resolvePromise(chainPromise, false, error); - } - }, chainPromise); - } - const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; - const noop = function () {}; - const AggregateError = global.AggregateError; - class ZoneAwarePromise { - static toString() { - return ZONE_AWARE_PROMISE_TO_STRING; - } - static resolve(value) { - return resolvePromise(new this(null), RESOLVED, value); - } - static reject(error) { - return resolvePromise(new this(null), REJECTED, error); - } - static any(values) { - if (!values || typeof values[Symbol.iterator] !== 'function') { - return Promise.reject(new AggregateError([], 'All promises were rejected')); - } - const promises = []; - let count = 0; - try { - for (let v of values) { - count++; - promises.push(ZoneAwarePromise.resolve(v)); - } - } catch (err) { - return Promise.reject(new AggregateError([], 'All promises were rejected')); - } - if (count === 0) { - return Promise.reject(new AggregateError([], 'All promises were rejected')); - } - let finished = false; - const errors = []; - return new ZoneAwarePromise((resolve, reject) => { - for (let i = 0; i < promises.length; i++) { - promises[i].then(v => { - if (finished) { - return; - } - finished = true; - resolve(v); - }, err => { - errors.push(err); - count--; - if (count === 0) { - finished = true; - reject(new AggregateError(errors, 'All promises were rejected')); - } - }); - } - }); - } - static race(values) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - function onResolve(value) { - resolve(value); - } - function onReject(error) { - reject(error); - } - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - value.then(onResolve, onReject); - } - return promise; - } - static all(values) { - return ZoneAwarePromise.allWithCallback(values); - } - static allSettled(values) { - const P = this && this.prototype instanceof ZoneAwarePromise ? this : ZoneAwarePromise; - return P.allWithCallback(values, { - thenCallback: value => ({ - status: 'fulfilled', - value - }), - errorCallback: err => ({ - status: 'rejected', - reason: err - }) - }); - } - static allWithCallback(values, callback) { - let resolve; - let reject; - let promise = new this((res, rej) => { - resolve = res; - reject = rej; - }); - // Start at 2 to prevent prematurely resolving if .then is called immediately. - let unresolvedCount = 2; - let valueIndex = 0; - const resolvedValues = []; - for (let value of values) { - if (!isThenable(value)) { - value = this.resolve(value); - } - const curValueIndex = valueIndex; - try { - value.then(value => { - resolvedValues[curValueIndex] = callback ? callback.thenCallback(value) : value; - unresolvedCount--; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - }, err => { - if (!callback) { - reject(err); - } else { - resolvedValues[curValueIndex] = callback.errorCallback(err); - unresolvedCount--; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - } - }); - } catch (thenErr) { - reject(thenErr); - } - unresolvedCount++; - valueIndex++; - } - // Make the unresolvedCount zero-based again. - unresolvedCount -= 2; - if (unresolvedCount === 0) { - resolve(resolvedValues); - } - return promise; - } - constructor(executor) { - const promise = this; - if (!(promise instanceof ZoneAwarePromise)) { - throw new Error('Must be an instanceof Promise.'); - } - promise[symbolState] = UNRESOLVED; - promise[symbolValue] = []; // queue; - try { - const onceWrapper = once(); - executor && executor(onceWrapper(makeResolver(promise, RESOLVED)), onceWrapper(makeResolver(promise, REJECTED))); - } catch (error) { - resolvePromise(promise, false, error); - } - } - get [Symbol.toStringTag]() { - return 'Promise'; - } - get [Symbol.species]() { - return ZoneAwarePromise; - } - then(onFulfilled, onRejected) { - // We must read `Symbol.species` safely because `this` may be anything. For instance, `this` - // may be an object without a prototype (created through `Object.create(null)`); thus - // `this.constructor` will be undefined. One of the use cases is SystemJS creating - // prototype-less objects (modules) via `Object.create(null)`. The SystemJS creates an empty - // object and copies promise properties into that object (within the `getOrCreateLoad` - // function). The zone.js then checks if the resolved value has the `then` method and invokes - // it with the `value` context. Otherwise, this will throw an error: `TypeError: Cannot read - // properties of undefined (reading 'Symbol(Symbol.species)')`. - let C = this.constructor?.[Symbol.species]; - if (!C || typeof C !== 'function') { - C = this.constructor || ZoneAwarePromise; - } - const chainPromise = new C(noop); - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); - } - return chainPromise; - } - catch(onRejected) { - return this.then(null, onRejected); - } - finally(onFinally) { - // See comment on the call to `then` about why thee `Symbol.species` is safely accessed. - let C = this.constructor?.[Symbol.species]; - if (!C || typeof C !== 'function') { - C = ZoneAwarePromise; - } - const chainPromise = new C(noop); - chainPromise[symbolFinally] = symbolFinally; - const zone = Zone.current; - if (this[symbolState] == UNRESOLVED) { - this[symbolValue].push(zone, chainPromise, onFinally, onFinally); - } else { - scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); - } - return chainPromise; - } - } - // Protect against aggressive optimizers dropping seemingly unused properties. - // E.g. Closure Compiler in advanced mode. - ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; - ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; - ZoneAwarePromise['race'] = ZoneAwarePromise.race; - ZoneAwarePromise['all'] = ZoneAwarePromise.all; - const NativePromise = global[symbolPromise] = global['Promise']; - global['Promise'] = ZoneAwarePromise; - const symbolThenPatched = __symbol__('thenPatched'); - function patchThen(Ctor) { - const proto = Ctor.prototype; - const prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); - if (prop && (prop.writable === false || !prop.configurable)) { - // check Ctor.prototype.then propertyDescriptor is writable or not - // in meteor env, writable is false, we should ignore such case - return; - } - const originalThen = proto.then; - // Keep a reference to the original method. - proto[symbolThen] = originalThen; - Ctor.prototype.then = function (onResolve, onReject) { - const wrapped = new ZoneAwarePromise((resolve, reject) => { - originalThen.call(this, resolve, reject); - }); - return wrapped.then(onResolve, onReject); - }; - Ctor[symbolThenPatched] = true; - } - api.patchThen = patchThen; - function zoneify(fn) { - return function (self, args) { - let resultPromise = fn.apply(self, args); - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - let ctor = resultPromise.constructor; - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - return resultPromise; - }; - } - if (NativePromise) { - patchThen(NativePromise); - patchMethod(global, 'fetch', delegate => zoneify(delegate)); - } - // This is not part of public API, but it is useful for tests, so we expose it. - Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; - return ZoneAwarePromise; -}); - -// override Function.prototype.toString to make zone.js patched function -// look like native function -Zone.__load_patch('toString', global => { - // patch Func.prototype.toString to let them look like native - const originalFunctionToString = Function.prototype.toString; - const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); - const PROMISE_SYMBOL = zoneSymbol('Promise'); - const ERROR_SYMBOL = zoneSymbol('Error'); - const newFunctionToString = function toString() { - if (typeof this === 'function') { - const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; - if (originalDelegate) { - if (typeof originalDelegate === 'function') { - return originalFunctionToString.call(originalDelegate); - } else { - return Object.prototype.toString.call(originalDelegate); - } - } - if (this === Promise) { - const nativePromise = global[PROMISE_SYMBOL]; - if (nativePromise) { - return originalFunctionToString.call(nativePromise); - } - } - if (this === Error) { - const nativeError = global[ERROR_SYMBOL]; - if (nativeError) { - return originalFunctionToString.call(nativeError); - } - } - } - return originalFunctionToString.call(this); - }; - newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; - Function.prototype.toString = newFunctionToString; - // patch Object.prototype.toString to let them look like native - const originalObjectToString = Object.prototype.toString; - const PROMISE_OBJECT_TO_STRING = '[object Promise]'; - Object.prototype.toString = function () { - if (typeof Promise === 'function' && this instanceof Promise) { - return PROMISE_OBJECT_TO_STRING; - } - return originalObjectToString.call(this); - }; -}); - -/** - * @fileoverview - * @suppress {missingRequire} - */ -let passiveSupported = false; -if (typeof window !== 'undefined') { - try { - const options = Object.defineProperty({}, 'passive', { - get: function () { - passiveSupported = true; - } - }); - // Note: We pass the `options` object as the event handler too. This is not compatible with the - // signature of `addEventListener` or `removeEventListener` but enables us to remove the handler - // without an actual handler. - window.addEventListener('test', options, options); - window.removeEventListener('test', options, options); - } catch (err) { - passiveSupported = false; - } -} -// an identifier to tell ZoneTask do not create a new invoke closure -const OPTIMIZED_ZONE_EVENT_TASK_DATA = { - useG: true -}; -const zoneSymbolEventNames = {}; -const globalSources = {}; -const EVENT_NAME_SYMBOL_REGX = new RegExp('^' + ZONE_SYMBOL_PREFIX + '(\\w+)(true|false)$'); -const IMMEDIATE_PROPAGATION_SYMBOL = zoneSymbol('propagationStopped'); -function prepareEventNames(eventName, eventNameToString) { - const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; - const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; -} -function patchEventTarget(_global, api, apis, patchOptions) { - const ADD_EVENT_LISTENER = patchOptions && patchOptions.add || ADD_EVENT_LISTENER_STR; - const REMOVE_EVENT_LISTENER = patchOptions && patchOptions.rm || REMOVE_EVENT_LISTENER_STR; - const LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.listeners || 'eventListeners'; - const REMOVE_ALL_LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.rmAll || 'removeAllListeners'; - const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); - const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; - const PREPEND_EVENT_LISTENER = 'prependListener'; - const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; - const invokeTask = function (task, target, event) { - // for better performance, check isRemoved which is set - // by removeEventListener - if (task.isRemoved) { - return; - } - const delegate = task.callback; - if (typeof delegate === 'object' && delegate.handleEvent) { - // create the bind version of handleEvent when invoke - task.callback = event => delegate.handleEvent(event); - task.originalDelegate = delegate; - } - // invoke static task.invoke - // need to try/catch error here, otherwise, the error in one event listener - // will break the executions of the other event listeners. Also error will - // not remove the event listener when `once` options is true. - let error; - try { - task.invoke(task, target, [event]); - } catch (err) { - error = err; - } - const options = task.options; - if (options && typeof options === 'object' && options.once) { - // if options.once is true, after invoke once remove listener here - // only browser need to do this, nodejs eventEmitter will cal removeListener - // inside EventEmitter.once - const delegate = task.originalDelegate ? task.originalDelegate : task.callback; - target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options); - } - return error; - }; - function globalCallback(context, event, isCapture) { - // https://github.com/angular/zone.js/issues/911, in IE, sometimes - // event will be undefined, so we need to use window.event - event = event || _global.event; - if (!event) { - return; - } - // event.target is needed for Samsung TV and SourceBuffer - // || global is needed https://github.com/angular/zone.js/issues/190 - const target = context || event.target || _global; - const tasks = target[zoneSymbolEventNames[event.type][isCapture ? TRUE_STR : FALSE_STR]]; - if (tasks) { - const errors = []; - // invoke all tasks which attached to current target with given event.type and capture = false - // for performance concern, if task.length === 1, just invoke - if (tasks.length === 1) { - const err = invokeTask(tasks[0], target, event); - err && errors.push(err); - } else { - // https://github.com/angular/zone.js/issues/836 - // copy the tasks array before invoke, to avoid - // the callback will remove itself or other listener - const copyTasks = tasks.slice(); - for (let i = 0; i < copyTasks.length; i++) { - if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { - break; - } - const err = invokeTask(copyTasks[i], target, event); - err && errors.push(err); - } - } - // Since there is only one error, we don't need to schedule microTask - // to throw the error. - if (errors.length === 1) { - throw errors[0]; - } else { - for (let i = 0; i < errors.length; i++) { - const err = errors[i]; - api.nativeScheduleMicroTask(() => { - throw err; - }); - } - } - } - } - // global shared zoneAwareCallback to handle all event callback with capture = false - const globalZoneAwareCallback = function (event) { - return globalCallback(this, event, false); - }; - // global shared zoneAwareCallback to handle all event callback with capture = true - const globalZoneAwareCaptureCallback = function (event) { - return globalCallback(this, event, true); - }; - function patchEventTargetMethods(obj, patchOptions) { - if (!obj) { - return false; - } - let useGlobalCallback = true; - if (patchOptions && patchOptions.useG !== undefined) { - useGlobalCallback = patchOptions.useG; - } - const validateHandler = patchOptions && patchOptions.vh; - let checkDuplicate = true; - if (patchOptions && patchOptions.chkDup !== undefined) { - checkDuplicate = patchOptions.chkDup; - } - let returnTarget = false; - if (patchOptions && patchOptions.rt !== undefined) { - returnTarget = patchOptions.rt; - } - let proto = obj; - while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { - proto = ObjectGetPrototypeOf(proto); - } - if (!proto && obj[ADD_EVENT_LISTENER]) { - // somehow we did not find it, but we can see it. This happens on IE for Window properties. - proto = obj; - } - if (!proto) { - return false; - } - if (proto[zoneSymbolAddEventListener]) { - return false; - } - const eventNameToString = patchOptions && patchOptions.eventNameToString; - // a shared global taskData to pass data for scheduleEventTask - // so we do not need to create a new object just for pass some data - const taskData = {}; - const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; - const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER]; - const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER]; - const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; - let nativePrependEventListener; - if (patchOptions && patchOptions.prepend) { - nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; - } - /** - * This util function will build an option object with passive option - * to handle all possible input from the user. - */ - function buildEventListenerOptions(options, passive) { - if (!passiveSupported && typeof options === 'object' && options) { - // doesn't support passive but user want to pass an object as options. - // this will not work on some old browser, so we just pass a boolean - // as useCapture parameter - return !!options.capture; - } - if (!passiveSupported || !passive) { - return options; - } - if (typeof options === 'boolean') { - return { - capture: options, - passive: true - }; - } - if (!options) { - return { - passive: true - }; - } - if (typeof options === 'object' && options.passive !== false) { - return { - ...options, - passive: true - }; - } - return options; - } - const customScheduleGlobal = function (task) { - // if there is already a task for the eventName + capture, - // just return, because we use the shared globalZoneAwareCallback here. - if (taskData.isExisting) { - return; - } - return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); - }; - const customCancelGlobal = function (task) { - // if task is not marked as isRemoved, this call is directly - // from Zone.prototype.cancelTask, we should remove the task - // from tasksList of target first - if (!task.isRemoved) { - const symbolEventNames = zoneSymbolEventNames[task.eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && task.target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (existingTask === task) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - task.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - task.allRemoved = true; - task.target[symbolEventName] = null; - } - break; - } - } - } - } - // if all tasks for the eventName + capture have gone, - // we will really remove the global event callback, - // if not, return - if (!task.allRemoved) { - return; - } - return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); - }; - const customScheduleNonGlobal = function (task) { - return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customSchedulePrepend = function (task) { - return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); - }; - const customCancelNonGlobal = function (task) { - return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); - }; - const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; - const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; - const compareTaskCallbackVsDelegate = function (task, delegate) { - const typeOfDelegate = typeof delegate; - return typeOfDelegate === 'function' && task.callback === delegate || typeOfDelegate === 'object' && task.originalDelegate === delegate; - }; - const compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate; - const unpatchedEvents = Zone[zoneSymbol('UNPATCHED_EVENTS')]; - const passiveEvents = _global[zoneSymbol('PASSIVE_EVENTS')]; - const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) { - return function () { - const target = this || _global; - let eventName = arguments[0]; - if (patchOptions && patchOptions.transferEventName) { - eventName = patchOptions.transferEventName(eventName); - } - let delegate = arguments[1]; - if (!delegate) { - return nativeListener.apply(this, arguments); - } - if (isNode && eventName === 'uncaughtException') { - // don't patch uncaughtException of nodejs to prevent endless loop - return nativeListener.apply(this, arguments); - } - // don't create the bind delegate function for handleEvent - // case here to improve addEventListener performance - // we will create the bind delegate when invoke - let isHandleEvent = false; - if (typeof delegate !== 'function') { - if (!delegate.handleEvent) { - return nativeListener.apply(this, arguments); - } - isHandleEvent = true; - } - if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { - return; - } - const passive = passiveSupported && !!passiveEvents && passiveEvents.indexOf(eventName) !== -1; - const options = buildEventListenerOptions(arguments[2], passive); - if (unpatchedEvents) { - // check unpatched list - for (let i = 0; i < unpatchedEvents.length; i++) { - if (eventName === unpatchedEvents[i]) { - if (passive) { - return nativeListener.call(target, eventName, delegate, options); - } else { - return nativeListener.apply(this, arguments); - } - } - } - } - const capture = !options ? false : typeof options === 'boolean' ? true : options.capture; - const once = options && typeof options === 'object' ? options.once : false; - const zone = Zone.current; - let symbolEventNames = zoneSymbolEventNames[eventName]; - if (!symbolEventNames) { - prepareEventNames(eventName, eventNameToString); - symbolEventNames = zoneSymbolEventNames[eventName]; - } - const symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - let existingTasks = target[symbolEventName]; - let isExisting = false; - if (existingTasks) { - // already have task registered - isExisting = true; - if (checkDuplicate) { - for (let i = 0; i < existingTasks.length; i++) { - if (compare(existingTasks[i], delegate)) { - // same callback, same capture, same event name, just return - return; - } - } - } - } else { - existingTasks = target[symbolEventName] = []; - } - let source; - const constructorName = target.constructor['name']; - const targetSource = globalSources[constructorName]; - if (targetSource) { - source = targetSource[eventName]; - } - if (!source) { - source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName); - } - // do not create a new object as task.data to pass those things - // just use the global shared one - taskData.options = options; - if (once) { - // if addEventListener with once options, we don't pass it to - // native addEventListener, instead we keep the once setting - // and handle ourselves. - taskData.options.once = false; - } - taskData.target = target; - taskData.capture = capture; - taskData.eventName = eventName; - taskData.isExisting = isExisting; - const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; - // keep taskData into data to allow onScheduleEventTask to access the task information - if (data) { - data.taskData = taskData; - } - const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); - // should clear taskData.target to avoid memory leak - // issue, https://github.com/angular/angular/issues/20442 - taskData.target = null; - // need to clear up taskData because it is a global object - if (data) { - data.taskData = null; - } - // have to save those information to task in case - // application may call task.zone.cancelTask() directly - if (once) { - options.once = true; - } - if (!(!passiveSupported && typeof task.options === 'boolean')) { - // if not support passive, and we pass an option object - // to addEventListener, we should save the options to task - task.options = options; - } - task.target = target; - task.capture = capture; - task.eventName = eventName; - if (isHandleEvent) { - // save original delegate for compare to check duplicate - task.originalDelegate = delegate; - } - if (!prepend) { - existingTasks.push(task); - } else { - existingTasks.unshift(task); - } - if (returnTarget) { - return target; - } - }; - }; - proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); - if (nativePrependEventListener) { - proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); - } - proto[REMOVE_EVENT_LISTENER] = function () { - const target = this || _global; - let eventName = arguments[0]; - if (patchOptions && patchOptions.transferEventName) { - eventName = patchOptions.transferEventName(eventName); - } - const options = arguments[2]; - const capture = !options ? false : typeof options === 'boolean' ? true : options.capture; - const delegate = arguments[1]; - if (!delegate) { - return nativeRemoveEventListener.apply(this, arguments); - } - if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { - return; - } - const symbolEventNames = zoneSymbolEventNames[eventName]; - let symbolEventName; - if (symbolEventNames) { - symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; - } - const existingTasks = symbolEventName && target[symbolEventName]; - if (existingTasks) { - for (let i = 0; i < existingTasks.length; i++) { - const existingTask = existingTasks[i]; - if (compare(existingTask, delegate)) { - existingTasks.splice(i, 1); - // set isRemoved to data for faster invokeTask check - existingTask.isRemoved = true; - if (existingTasks.length === 0) { - // all tasks for the eventName + capture have gone, - // remove globalZoneAwareCallback and remove the task cache from target - existingTask.allRemoved = true; - target[symbolEventName] = null; - // in the target, we have an event listener which is added by on_property - // such as target.onclick = function() {}, so we need to clear this internal - // property too if all delegates all removed - if (typeof eventName === 'string') { - const onPropertySymbol = ZONE_SYMBOL_PREFIX + 'ON_PROPERTY' + eventName; - target[onPropertySymbol] = null; - } - } - existingTask.zone.cancelTask(existingTask); - if (returnTarget) { - return target; - } - return; - } - } - } - // issue 930, didn't find the event name or callback - // from zone kept existingTasks, the callback maybe - // added outside of zone, we need to call native removeEventListener - // to try to remove it. - return nativeRemoveEventListener.apply(this, arguments); - }; - proto[LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - let eventName = arguments[0]; - if (patchOptions && patchOptions.transferEventName) { - eventName = patchOptions.transferEventName(eventName); - } - const listeners = []; - const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); - for (let i = 0; i < tasks.length; i++) { - const task = tasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - listeners.push(delegate); - } - return listeners; - }; - proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { - const target = this || _global; - let eventName = arguments[0]; - if (!eventName) { - const keys = Object.keys(target); - for (let i = 0; i < keys.length; i++) { - const prop = keys[i]; - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - // in nodejs EventEmitter, removeListener event is - // used for monitoring the removeListener call, - // so just keep removeListener eventListener until - // all other eventListeners are removed - if (evtName && evtName !== 'removeListener') { - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); - } - } - // remove removeListener listener finally - this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); - } else { - if (patchOptions && patchOptions.transferEventName) { - eventName = patchOptions.transferEventName(eventName); - } - const symbolEventNames = zoneSymbolEventNames[eventName]; - if (symbolEventNames) { - const symbolEventName = symbolEventNames[FALSE_STR]; - const symbolCaptureEventName = symbolEventNames[TRUE_STR]; - const tasks = target[symbolEventName]; - const captureTasks = target[symbolCaptureEventName]; - if (tasks) { - const removeTasks = tasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - if (captureTasks) { - const removeTasks = captureTasks.slice(); - for (let i = 0; i < removeTasks.length; i++) { - const task = removeTasks[i]; - let delegate = task.originalDelegate ? task.originalDelegate : task.callback; - this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); - } - } - } - } - if (returnTarget) { - return this; - } - }; - // for native toString patch - attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); - attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); - if (nativeRemoveAllListeners) { - attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); - } - if (nativeListeners) { - attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); - } - return true; - } - let results = []; - for (let i = 0; i < apis.length; i++) { - results[i] = patchEventTargetMethods(apis[i], patchOptions); - } - return results; -} -function findEventTasks(target, eventName) { - if (!eventName) { - const foundTasks = []; - for (let prop in target) { - const match = EVENT_NAME_SYMBOL_REGX.exec(prop); - let evtName = match && match[1]; - if (evtName && (!eventName || evtName === eventName)) { - const tasks = target[prop]; - if (tasks) { - for (let i = 0; i < tasks.length; i++) { - foundTasks.push(tasks[i]); - } - } - } - } - return foundTasks; - } - let symbolEventName = zoneSymbolEventNames[eventName]; - if (!symbolEventName) { - prepareEventNames(eventName); - symbolEventName = zoneSymbolEventNames[eventName]; - } - const captureFalseTasks = target[symbolEventName[FALSE_STR]]; - const captureTrueTasks = target[symbolEventName[TRUE_STR]]; - if (!captureFalseTasks) { - return captureTrueTasks ? captureTrueTasks.slice() : []; - } else { - return captureTrueTasks ? captureFalseTasks.concat(captureTrueTasks) : captureFalseTasks.slice(); - } -} -function patchEventPrototype(global, api) { - const Event = global['Event']; - if (Event && Event.prototype) { - api.patchMethod(Event.prototype, 'stopImmediatePropagation', delegate => function (self, args) { - self[IMMEDIATE_PROPAGATION_SYMBOL] = true; - // we need to call the native stopImmediatePropagation - // in case in some hybrid application, some part of - // application will be controlled by zone, some are not - delegate && delegate.apply(self, args); - }); - } -} -function patchCallbacks(api, target, targetName, method, callbacks) { - const symbol = Zone.__symbol__(method); - if (target[symbol]) { - return; - } - const nativeDelegate = target[symbol] = target[method]; - target[method] = function (name, opts, options) { - if (opts && opts.prototype) { - callbacks.forEach(function (callback) { - const source = `${targetName}.${method}::` + callback; - const prototype = opts.prototype; - // Note: the `patchCallbacks` is used for patching the `document.registerElement` and - // `customElements.define`. We explicitly wrap the patching code into try-catch since - // callbacks may be already patched by other web components frameworks (e.g. LWC), and they - // make those properties non-writable. This means that patching callback will throw an error - // `cannot assign to read-only property`. See this code as an example: - // https://github.com/salesforce/lwc/blob/master/packages/@lwc/engine-core/src/framework/base-bridge-element.ts#L180-L186 - // We don't want to stop the application rendering if we couldn't patch some - // callback, e.g. `attributeChangedCallback`. - try { - if (prototype.hasOwnProperty(callback)) { - const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); - if (descriptor && descriptor.value) { - descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); - api._redefineProperty(opts.prototype, callback, descriptor); - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } else if (prototype[callback]) { - prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); - } - } catch { - // Note: we leave the catch block empty since there's no way to handle the error related - // to non-writable property. - } - }); - } - return nativeDelegate.call(target, name, opts, options); - }; - api.attachOriginToPatched(target[method], nativeDelegate); -} - -/** - * @fileoverview - * @suppress {globalThis} - */ -function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties || ignoreProperties.length === 0) { - return onProperties; - } - const tip = ignoreProperties.filter(ip => ip.target === target); - if (!tip || tip.length === 0) { - return onProperties; - } - const targetIgnoreProperties = tip[0].ignoreProperties; - return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1); -} -function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { - // check whether target is available, sometimes target will be undefined - // because different browser or some 3rd party plugin. - if (!target) { - return; - } - const filteredProperties = filterProperties(target, onProperties, ignoreProperties); - patchOnProperties(target, filteredProperties, prototype); -} -/** - * Get all event name properties which the event name startsWith `on` - * from the target object itself, inherited properties are not considered. - */ -function getOnEventNames(target) { - return Object.getOwnPropertyNames(target).filter(name => name.startsWith('on') && name.length > 2).map(name => name.substring(2)); -} -function propertyDescriptorPatch(api, _global) { - if (isNode && !isMix) { - return; - } - if (Zone[api.symbol('patchEvents')]) { - // events are already been patched by legacy patch. - return; - } - const ignoreProperties = _global['__Zone_ignore_on_properties']; - // for browsers that we can patch the descriptor: Chrome & Firefox - let patchTargets = []; - if (isBrowser) { - const internalWindow = window; - patchTargets = patchTargets.concat(['Document', 'SVGElement', 'Element', 'HTMLElement', 'HTMLBodyElement', 'HTMLMediaElement', 'HTMLFrameSetElement', 'HTMLFrameElement', 'HTMLIFrameElement', 'HTMLMarqueeElement', 'Worker']); - const ignoreErrorProperties = isIE() ? [{ - target: internalWindow, - ignoreProperties: ['error'] - }] : []; - // in IE/Edge, onProp not exist in window object, but in WindowPrototype - // so we need to pass WindowPrototype to check onProp exist or not - patchFilteredProperties(internalWindow, getOnEventNames(internalWindow), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow)); - } - patchTargets = patchTargets.concat(['XMLHttpRequest', 'XMLHttpRequestEventTarget', 'IDBIndex', 'IDBRequest', 'IDBOpenDBRequest', 'IDBDatabase', 'IDBTransaction', 'IDBCursor', 'WebSocket']); - for (let i = 0; i < patchTargets.length; i++) { - const target = _global[patchTargets[i]]; - target && target.prototype && patchFilteredProperties(target.prototype, getOnEventNames(target.prototype), ignoreProperties); - } -} -Zone.__load_patch('util', (global, Zone, api) => { - // Collect native event names by looking at properties - // on the global namespace, e.g. 'onclick'. - const eventNames = getOnEventNames(global); - api.patchOnProperties = patchOnProperties; - api.patchMethod = patchMethod; - api.bindArguments = bindArguments; - api.patchMacroTask = patchMacroTask; - // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to - // define which events will not be patched by `Zone.js`. - // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep - // the name consistent with angular repo. - // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for - // backwards compatibility. - const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); - const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); - if (global[SYMBOL_UNPATCHED_EVENTS]) { - global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; - } - if (global[SYMBOL_BLACK_LISTED_EVENTS]) { - Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS]; - } - api.patchEventPrototype = patchEventPrototype; - api.patchEventTarget = patchEventTarget; - api.isIEOrEdge = isIEOrEdge; - api.ObjectDefineProperty = ObjectDefineProperty; - api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; - api.ObjectCreate = ObjectCreate; - api.ArraySlice = ArraySlice; - api.patchClass = patchClass; - api.wrapWithCurrentZone = wrapWithCurrentZone; - api.filterProperties = filterProperties; - api.attachOriginToPatched = attachOriginToPatched; - api._redefineProperty = Object.defineProperty; - api.patchCallbacks = patchCallbacks; - api.getGlobalObjects = () => ({ - globalSources, - zoneSymbolEventNames, - eventNames, - isBrowser, - isMix, - isNode, - TRUE_STR, - FALSE_STR, - ZONE_SYMBOL_PREFIX, - ADD_EVENT_LISTENER_STR, - REMOVE_EVENT_LISTENER_STR - }); -}); - -/** - * @fileoverview - * @suppress {missingRequire} - */ -function patchQueueMicrotask(global, api) { - api.patchMethod(global, 'queueMicrotask', delegate => { - return function (self, args) { - Zone.current.scheduleMicroTask('queueMicrotask', args[0]); - }; - }); -} - -/** - * @fileoverview - * @suppress {missingRequire} - */ -const taskSymbol = zoneSymbol('zoneTask'); -function patchTimer(window, setName, cancelName, nameSuffix) { - let setNative = null; - let clearNative = null; - setName += nameSuffix; - cancelName += nameSuffix; - const tasksByHandleId = {}; - function scheduleTask(task) { - const data = task.data; - data.args[0] = function () { - return task.invoke.apply(this, arguments); - }; - data.handleId = setNative.apply(window, data.args); - return task; - } - function clearTask(task) { - return clearNative.call(window, task.data.handleId); - } - setNative = patchMethod(window, setName, delegate => function (self, args) { - if (typeof args[0] === 'function') { - const options = { - isPeriodic: nameSuffix === 'Interval', - delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined, - args: args - }; - const callback = args[0]; - args[0] = function timer() { - try { - return callback.apply(this, arguments); - } finally { - // issue-934, task will be cancelled - // even it is a periodic task such as - // setInterval - // https://github.com/angular/angular/issues/40387 - // Cleanup tasksByHandleId should be handled before scheduleTask - // Since some zoneSpec may intercept and doesn't trigger - // scheduleFn(scheduleTask) provided here. - if (!options.isPeriodic) { - if (typeof options.handleId === 'number') { - // in non-nodejs env, we remove timerId - // from local cache - delete tasksByHandleId[options.handleId]; - } else if (options.handleId) { - // Node returns complex objects as handleIds - // we remove task reference from timer object - options.handleId[taskSymbol] = null; - } - } - } - }; - const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask); - if (!task) { - return task; - } - // Node.js must additionally support the ref and unref functions. - const handle = task.data.handleId; - if (typeof handle === 'number') { - // for non nodejs env, we save handleId: task - // mapping in local cache for clearTimeout - tasksByHandleId[handle] = task; - } else if (handle) { - // for nodejs env, we save task - // reference in timerId Object for clearTimeout - handle[taskSymbol] = task; - } - // check whether handle is null, because some polyfill or browser - // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame - if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') { - task.ref = handle.ref.bind(handle); - task.unref = handle.unref.bind(handle); - } - if (typeof handle === 'number' || handle) { - return handle; - } - return task; - } else { - // cause an error by calling it directly. - return delegate.apply(window, args); - } - }); - clearNative = patchMethod(window, cancelName, delegate => function (self, args) { - const id = args[0]; - let task; - if (typeof id === 'number') { - // non nodejs env. - task = tasksByHandleId[id]; - } else { - // nodejs env. - task = id && id[taskSymbol]; - // other environments. - if (!task) { - task = id; - } - } - if (task && typeof task.type === 'string') { - if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { - if (typeof id === 'number') { - delete tasksByHandleId[id]; - } else if (id) { - id[taskSymbol] = null; - } - // Do not cancel already canceled functions - task.zone.cancelTask(task); - } - } else { - // cause an error by calling it directly. - delegate.apply(window, args); - } - }); -} -function patchCustomElements(_global, api) { - const { - isBrowser, - isMix - } = api.getGlobalObjects(); - if (!isBrowser && !isMix || !_global['customElements'] || !('customElements' in _global)) { - return; - } - const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; - api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); -} -function eventTargetPatch(_global, api) { - if (Zone[api.symbol('patchEventTarget')]) { - // EventTarget is already patched. - return; - } - const { - eventNames, - zoneSymbolEventNames, - TRUE_STR, - FALSE_STR, - ZONE_SYMBOL_PREFIX - } = api.getGlobalObjects(); - // predefine all __zone_symbol__ + eventName + true/false string - for (let i = 0; i < eventNames.length; i++) { - const eventName = eventNames[i]; - const falseEventName = eventName + FALSE_STR; - const trueEventName = eventName + TRUE_STR; - const symbol = ZONE_SYMBOL_PREFIX + falseEventName; - const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; - zoneSymbolEventNames[eventName] = {}; - zoneSymbolEventNames[eventName][FALSE_STR] = symbol; - zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; - } - const EVENT_TARGET = _global['EventTarget']; - if (!EVENT_TARGET || !EVENT_TARGET.prototype) { - return; - } - api.patchEventTarget(_global, api, [EVENT_TARGET && EVENT_TARGET.prototype]); - return true; -} -function patchEvent(global, api) { - api.patchEventPrototype(global, api); -} - -/** - * @fileoverview - * @suppress {missingRequire} - */ -Zone.__load_patch('legacy', global => { - const legacyPatch = global[Zone.__symbol__('legacyPatch')]; - if (legacyPatch) { - legacyPatch(); - } -}); -Zone.__load_patch('timers', global => { - const set = 'set'; - const clear = 'clear'; - patchTimer(global, set, clear, 'Timeout'); - patchTimer(global, set, clear, 'Interval'); - patchTimer(global, set, clear, 'Immediate'); -}); -Zone.__load_patch('requestAnimationFrame', global => { - patchTimer(global, 'request', 'cancel', 'AnimationFrame'); - patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); - patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); -}); -Zone.__load_patch('blocking', (global, Zone) => { - const blockingMethods = ['alert', 'prompt', 'confirm']; - for (let i = 0; i < blockingMethods.length; i++) { - const name = blockingMethods[i]; - patchMethod(global, name, (delegate, symbol, name) => { - return function (s, args) { - return Zone.current.run(delegate, global, args, name); - }; - }); - } -}); -Zone.__load_patch('EventTarget', (global, Zone, api) => { - patchEvent(global, api); - eventTargetPatch(global, api); - // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener - const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { - api.patchEventTarget(global, api, [XMLHttpRequestEventTarget.prototype]); - } -}); -Zone.__load_patch('MutationObserver', (global, Zone, api) => { - patchClass('MutationObserver'); - patchClass('WebKitMutationObserver'); -}); -Zone.__load_patch('IntersectionObserver', (global, Zone, api) => { - patchClass('IntersectionObserver'); -}); -Zone.__load_patch('FileReader', (global, Zone, api) => { - patchClass('FileReader'); -}); -Zone.__load_patch('on_property', (global, Zone, api) => { - propertyDescriptorPatch(api, global); -}); -Zone.__load_patch('customElements', (global, Zone, api) => { - patchCustomElements(global, api); -}); -Zone.__load_patch('XHR', (global, Zone) => { - // Treat XMLHttpRequest as a macrotask. - patchXHR(global); - const XHR_TASK = zoneSymbol('xhrTask'); - const XHR_SYNC = zoneSymbol('xhrSync'); - const XHR_LISTENER = zoneSymbol('xhrListener'); - const XHR_SCHEDULED = zoneSymbol('xhrScheduled'); - const XHR_URL = zoneSymbol('xhrURL'); - const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); - function patchXHR(window) { - const XMLHttpRequest = window['XMLHttpRequest']; - if (!XMLHttpRequest) { - // XMLHttpRequest is not available in service worker - return; - } - const XMLHttpRequestPrototype = XMLHttpRequest.prototype; - function findPendingTask(target) { - return target[XHR_TASK]; - } - let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - if (!oriAddListener) { - const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; - oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - } - const READY_STATE_CHANGE = 'readystatechange'; - const SCHEDULED = 'scheduled'; - function scheduleTask(task) { - const data = task.data; - const target = data.target; - target[XHR_SCHEDULED] = false; - target[XHR_ERROR_BEFORE_SCHEDULED] = false; - // remove existing event listener - const listener = target[XHR_LISTENER]; - if (!oriAddListener) { - oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; - oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; - } - if (listener) { - oriRemoveListener.call(target, READY_STATE_CHANGE, listener); - } - const newListener = target[XHR_LISTENER] = () => { - if (target.readyState === target.DONE) { - // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with - // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { - // check whether the xhr has registered onload listener - // if that is the case, the task should invoke after all - // onload listeners finish. - // Also if the request failed without response (status = 0), the load event handler - // will not be triggered, in that case, we should also invoke the placeholder callback - // to close the XMLHttpRequest::send macroTask. - // https://github.com/angular/angular/issues/38795 - const loadTasks = target[Zone.__symbol__('loadfalse')]; - if (target.status !== 0 && loadTasks && loadTasks.length > 0) { - const oriInvoke = task.invoke; - task.invoke = function () { - // need to load the tasks again, because in other - // load listener, they may remove themselves - const loadTasks = target[Zone.__symbol__('loadfalse')]; - for (let i = 0; i < loadTasks.length; i++) { - if (loadTasks[i] === task) { - loadTasks.splice(i, 1); - } - } - if (!data.aborted && task.state === SCHEDULED) { - oriInvoke.call(task); - } - }; - loadTasks.push(task); - } else { - task.invoke(); - } - } else if (!data.aborted && target[XHR_SCHEDULED] === false) { - // error occurs when xhr.send() - target[XHR_ERROR_BEFORE_SCHEDULED] = true; - } - } - }; - oriAddListener.call(target, READY_STATE_CHANGE, newListener); - const storedTask = target[XHR_TASK]; - if (!storedTask) { - target[XHR_TASK] = task; - } - sendNative.apply(target, data.args); - target[XHR_SCHEDULED] = true; - return task; - } - function placeholderCallback() {} - function clearTask(task) { - const data = task.data; - // Note - ideally, we would call data.target.removeEventListener here, but it's too late - // to prevent it from firing. So instead, we store info for the event listener. - data.aborted = true; - return abortNative.apply(data.target, data.args); - } - const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) { - self[XHR_SYNC] = args[2] == false; - self[XHR_URL] = args[1]; - return openNative.apply(self, args); - }); - const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; - const fetchTaskAborting = zoneSymbol('fetchTaskAborting'); - const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); - const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) { - if (Zone.current[fetchTaskScheduling] === true) { - // a fetch is scheduling, so we are using xhr to polyfill fetch - // and because we already schedule macroTask for fetch, we should - // not schedule a macroTask for xhr again - return sendNative.apply(self, args); - } - if (self[XHR_SYNC]) { - // if the XHR is sync there is no task to schedule, just execute the code. - return sendNative.apply(self, args); - } else { - const options = { - target: self, - url: self[XHR_URL], - isPeriodic: false, - args: args, - aborted: false - }; - const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); - if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && task.state === SCHEDULED) { - // xhr request throw error when send - // we should invoke task instead of leaving a scheduled - // pending macroTask - task.invoke(); - } - } - }); - const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) { - const task = findPendingTask(self); - if (task && typeof task.type == 'string') { - // If the XHR has already completed, do nothing. - // If the XHR has already been aborted, do nothing. - // Fix #569, call abort multiple times before done will cause - // macroTask task count be negative number - if (task.cancelFn == null || task.data && task.data.aborted) { - return; - } - task.zone.cancelTask(task); - } else if (Zone.current[fetchTaskAborting] === true) { - // the abort is called from fetch polyfill, we need to call native abort of XHR. - return abortNative.apply(self, args); - } - // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no - // task - // to cancel. Do nothing. - }); - } -}); - -Zone.__load_patch('geolocation', global => { - /// GEO_LOCATION - if (global['navigator'] && global['navigator'].geolocation) { - patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); - } -}); -Zone.__load_patch('PromiseRejectionEvent', (global, Zone) => { - // handle unhandled promise rejection - function findPromiseRejectionHandler(evtName) { - return function (e) { - const eventTasks = findEventTasks(global, evtName); - eventTasks.forEach(eventTask => { - // windows has added unhandledrejection event listener - // trigger the event listener - const PromiseRejectionEvent = global['PromiseRejectionEvent']; - if (PromiseRejectionEvent) { - const evt = new PromiseRejectionEvent(evtName, { - promise: e.promise, - reason: e.rejection - }); - eventTask.invoke(evt); - } - }); - }; - } - if (global['PromiseRejectionEvent']) { - Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection'); - Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled'); - } -}); -Zone.__load_patch('queueMicrotask', (global, Zone, api) => { - patchQueueMicrotask(global, api); -}); - -/***/ }) - -}, -/******/ __webpack_require__ => { // webpackRuntimeModules -/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ var __webpack_exports__ = (__webpack_exec__(765)); -/******/ } -]); -//# sourceMappingURL=polyfills.js.map \ No newline at end of file diff --git a/polyfills.js.map b/polyfills.js.map deleted file mode 100644 index 760f850b..00000000 --- a/polyfills.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"polyfills.js","mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;AAgBA;;;AAIA;AACA;AAEA;;;;;AAKA;AAEA;;;;;;;;;;;;;;;;;;;;;;;AAwBA;;;AAGiB,CAAC;AAElB;;;;;;;;;;;;AC3Da;;AACb;AACA;AACA;AACA;AACA;AACA,CAAE,UAAUA,MAAM,EAAE;EAChB,MAAMC,WAAW,GAAGD,MAAM,CAAC,aAAa,CAAC;EACzC,SAASE,IAAIA,CAACC,IAAI,EAAE;IAChBF,WAAW,IAAIA,WAAW,CAAC,MAAM,CAAC,IAAIA,WAAW,CAAC,MAAM,CAAC,CAACE,IAAI,CAAC;EACnE;EACA,SAASC,kBAAkBA,CAACD,IAAI,EAAEE,KAAK,EAAE;IACrCJ,WAAW,IAAIA,WAAW,CAAC,SAAS,CAAC,IAAIA,WAAW,CAAC,SAAS,CAAC,CAACE,IAAI,EAAEE,KAAK,CAAC;EAChF;EACAH,IAAI,CAAC,MAAM,CAAC;EACZ;EACA;EACA;EACA,MAAMI,YAAY,GAAGN,MAAM,CAAC,sBAAsB,CAAC,IAAI,iBAAiB;EACxE,SAASO,UAAUA,CAACJ,IAAI,EAAE;IACtB,OAAOG,YAAY,GAAGH,IAAI;EAC9B;EACA,MAAMK,cAAc,GAAGR,MAAM,CAACO,UAAU,CAAC,yBAAyB,CAAC,CAAC,KAAK,IAAI;EAC7E,IAAIP,MAAM,CAAC,MAAM,CAAC,EAAE;IAChB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIQ,cAAc,IAAI,OAAOR,MAAM,CAAC,MAAM,CAAC,CAACO,UAAU,KAAK,UAAU,EAAE;MACnE,MAAM,IAAIE,KAAK,CAAC,sBAAsB,CAAC;IAC3C,CAAC,MACI;MACD,OAAOT,MAAM,CAAC,MAAM,CAAC;IACzB;EACJ;EACA,MAAMU,IAAI,CAAC;IAGP,OAAOC,iBAAiBA,CAAA,EAAG;MACvB,IAAIX,MAAM,CAAC,SAAS,CAAC,KAAKY,OAAO,CAAC,kBAAkB,CAAC,EAAE;QACnD,MAAM,IAAIH,KAAK,CAAC,uEAAuE,GACnF,yBAAyB,GACzB,+DAA+D,GAC/D,kFAAkF,GAClF,sDAAsD,CAAC;MAC/D;IACJ;IACA,WAAWI,IAAIA,CAAA,EAAG;MACd,IAAIC,IAAI,GAAGJ,IAAI,CAACK,OAAO;MACvB,OAAOD,IAAI,CAACE,MAAM,EAAE;QAChBF,IAAI,GAAGA,IAAI,CAACE,MAAM;MACtB;MACA,OAAOF,IAAI;IACf;IACA,WAAWC,OAAOA,CAAA,EAAG;MACjB,OAAOE,iBAAiB,CAACH,IAAI;IACjC;IACA,WAAWI,WAAWA,CAAA,EAAG;MACrB,OAAOC,YAAY;IACvB;IACA;IACA,OAAOC,YAAYA,CAACjB,IAAI,EAAEkB,EAAE,EAAEC,eAAe,GAAG,KAAK,EAAE;MACnD,IAAIV,OAAO,CAACW,cAAc,CAACpB,IAAI,CAAC,EAAE;QAC9B;QACA;QACA;QACA,IAAI,CAACmB,eAAe,IAAId,cAAc,EAAE;UACpC,MAAMC,KAAK,CAAC,wBAAwB,GAAGN,IAAI,CAAC;QAChD;MACJ,CAAC,MACI,IAAI,CAACH,MAAM,CAAC,iBAAiB,GAAGG,IAAI,CAAC,EAAE;QACxC,MAAMqB,QAAQ,GAAG,OAAO,GAAGrB,IAAI;QAC/BD,IAAI,CAACsB,QAAQ,CAAC;QACdZ,OAAO,CAACT,IAAI,CAAC,GAAGkB,EAAE,CAACrB,MAAM,EAAEU,IAAI,EAAEe,IAAI,CAAC;QACtCrB,kBAAkB,CAACoB,QAAQ,EAAEA,QAAQ,CAAC;MAC1C;IACJ;IACA,IAAIR,MAAMA,CAAA,EAAG;MACT,OAAO,IAAI,CAACU,OAAO;IACvB;IACA,IAAIvB,IAAIA,CAAA,EAAG;MACP,OAAO,IAAI,CAACwB,KAAK;IACrB;IACAC,WAAWA,CAACZ,MAAM,EAAEa,QAAQ,EAAE;MAC1B,IAAI,CAACH,OAAO,GAAGV,MAAM;MACrB,IAAI,CAACW,KAAK,GAAGE,QAAQ,GAAGA,QAAQ,CAAC1B,IAAI,IAAI,SAAS,GAAG,QAAQ;MAC7D,IAAI,CAAC2B,WAAW,GAAGD,QAAQ,IAAIA,QAAQ,CAACE,UAAU,IAAI,CAAC,CAAC;MACxD,IAAI,CAACC,aAAa,GACd,IAAIC,aAAa,CAAC,IAAI,EAAE,IAAI,CAACP,OAAO,IAAI,IAAI,CAACA,OAAO,CAACM,aAAa,EAAEH,QAAQ,CAAC;IACrF;IACAK,GAAGA,CAACC,GAAG,EAAE;MACL,MAAMrB,IAAI,GAAG,IAAI,CAACsB,WAAW,CAACD,GAAG,CAAC;MAClC,IAAIrB,IAAI,EACJ,OAAOA,IAAI,CAACgB,WAAW,CAACK,GAAG,CAAC;IACpC;IACAC,WAAWA,CAACD,GAAG,EAAE;MACb,IAAIpB,OAAO,GAAG,IAAI;MAClB,OAAOA,OAAO,EAAE;QACZ,IAAIA,OAAO,CAACe,WAAW,CAACP,cAAc,CAACY,GAAG,CAAC,EAAE;UACzC,OAAOpB,OAAO;QAClB;QACAA,OAAO,GAAGA,OAAO,CAACW,OAAO;MAC7B;MACA,OAAO,IAAI;IACf;IACAW,IAAIA,CAACR,QAAQ,EAAE;MACX,IAAI,CAACA,QAAQ,EACT,MAAM,IAAIpB,KAAK,CAAC,oBAAoB,CAAC;MACzC,OAAO,IAAI,CAACuB,aAAa,CAACK,IAAI,CAAC,IAAI,EAAER,QAAQ,CAAC;IAClD;IACAS,IAAIA,CAACC,QAAQ,EAAEC,MAAM,EAAE;MACnB,IAAI,OAAOD,QAAQ,KAAK,UAAU,EAAE;QAChC,MAAM,IAAI9B,KAAK,CAAC,0BAA0B,GAAG8B,QAAQ,CAAC;MAC1D;MACA,MAAME,SAAS,GAAG,IAAI,CAACT,aAAa,CAACU,SAAS,CAAC,IAAI,EAAEH,QAAQ,EAAEC,MAAM,CAAC;MACtE,MAAM1B,IAAI,GAAG,IAAI;MACjB,OAAO,YAAY;QACf,OAAOA,IAAI,CAAC6B,UAAU,CAACF,SAAS,EAAE,IAAI,EAAEG,SAAS,EAAEJ,MAAM,CAAC;MAC9D,CAAC;IACL;IACAK,GAAGA,CAACN,QAAQ,EAAEO,SAAS,EAAEC,SAAS,EAAEP,MAAM,EAAE;MACxCvB,iBAAiB,GAAG;QAAED,MAAM,EAAEC,iBAAiB;QAAEH,IAAI,EAAE;MAAK,CAAC;MAC7D,IAAI;QACA,OAAO,IAAI,CAACkB,aAAa,CAACgB,MAAM,CAAC,IAAI,EAAET,QAAQ,EAAEO,SAAS,EAAEC,SAAS,EAAEP,MAAM,CAAC;MAClF,CAAC,SACO;QACJvB,iBAAiB,GAAGA,iBAAiB,CAACD,MAAM;MAChD;IACJ;IACA2B,UAAUA,CAACJ,QAAQ,EAAEO,SAAS,GAAG,IAAI,EAAEC,SAAS,EAAEP,MAAM,EAAE;MACtDvB,iBAAiB,GAAG;QAAED,MAAM,EAAEC,iBAAiB;QAAEH,IAAI,EAAE;MAAK,CAAC;MAC7D,IAAI;QACA,IAAI;UACA,OAAO,IAAI,CAACkB,aAAa,CAACgB,MAAM,CAAC,IAAI,EAAET,QAAQ,EAAEO,SAAS,EAAEC,SAAS,EAAEP,MAAM,CAAC;QAClF,CAAC,CACD,OAAOS,KAAK,EAAE;UACV,IAAI,IAAI,CAACjB,aAAa,CAACkB,WAAW,CAAC,IAAI,EAAED,KAAK,CAAC,EAAE;YAC7C,MAAMA,KAAK;UACf;QACJ;MACJ,CAAC,SACO;QACJhC,iBAAiB,GAAGA,iBAAiB,CAACD,MAAM;MAChD;IACJ;IACAmC,OAAOA,CAACC,IAAI,EAAEN,SAAS,EAAEC,SAAS,EAAE;MAChC,IAAIK,IAAI,CAACtC,IAAI,IAAI,IAAI,EAAE;QACnB,MAAM,IAAIL,KAAK,CAAC,6DAA6D,GACzE,CAAC2C,IAAI,CAACtC,IAAI,IAAIuC,OAAO,EAAElD,IAAI,GAAG,eAAe,GAAG,IAAI,CAACA,IAAI,GAAG,GAAG,CAAC;MACxE;MACA;MACA;MACA;MACA,IAAIiD,IAAI,CAACE,KAAK,KAAKC,YAAY,KAAKH,IAAI,CAACI,IAAI,KAAKC,SAAS,IAAIL,IAAI,CAACI,IAAI,KAAKE,SAAS,CAAC,EAAE;QACrF;MACJ;MACA,MAAMC,YAAY,GAAGP,IAAI,CAACE,KAAK,IAAIM,OAAO;MAC1CD,YAAY,IAAIP,IAAI,CAACS,aAAa,CAACD,OAAO,EAAEE,SAAS,CAAC;MACtDV,IAAI,CAACW,QAAQ,EAAE;MACf,MAAMC,YAAY,GAAG7C,YAAY;MACjCA,YAAY,GAAGiC,IAAI;MACnBnC,iBAAiB,GAAG;QAAED,MAAM,EAAEC,iBAAiB;QAAEH,IAAI,EAAE;MAAK,CAAC;MAC7D,IAAI;QACA,IAAIsC,IAAI,CAACI,IAAI,IAAIE,SAAS,IAAIN,IAAI,CAACa,IAAI,IAAI,CAACb,IAAI,CAACa,IAAI,CAACC,UAAU,EAAE;UAC9Dd,IAAI,CAACe,QAAQ,GAAGC,SAAS;QAC7B;QACA,IAAI;UACA,OAAO,IAAI,CAACpC,aAAa,CAACqC,UAAU,CAAC,IAAI,EAAEjB,IAAI,EAAEN,SAAS,EAAEC,SAAS,CAAC;QAC1E,CAAC,CACD,OAAOE,KAAK,EAAE;UACV,IAAI,IAAI,CAACjB,aAAa,CAACkB,WAAW,CAAC,IAAI,EAAED,KAAK,CAAC,EAAE;YAC7C,MAAMA,KAAK;UACf;QACJ;MACJ,CAAC,SACO;QACJ;QACA;QACA,IAAIG,IAAI,CAACE,KAAK,KAAKC,YAAY,IAAIH,IAAI,CAACE,KAAK,KAAKgB,OAAO,EAAE;UACvD,IAAIlB,IAAI,CAACI,IAAI,IAAIC,SAAS,IAAKL,IAAI,CAACa,IAAI,IAAIb,IAAI,CAACa,IAAI,CAACC,UAAW,EAAE;YAC/DP,YAAY,IAAIP,IAAI,CAACS,aAAa,CAACC,SAAS,EAAEF,OAAO,CAAC;UAC1D,CAAC,MACI;YACDR,IAAI,CAACW,QAAQ,GAAG,CAAC;YACjB,IAAI,CAACQ,gBAAgB,CAACnB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/BO,YAAY,IACRP,IAAI,CAACS,aAAa,CAACN,YAAY,EAAEK,OAAO,EAAEL,YAAY,CAAC;UAC/D;QACJ;QACAtC,iBAAiB,GAAGA,iBAAiB,CAACD,MAAM;QAC5CG,YAAY,GAAG6C,YAAY;MAC/B;IACJ;IACAQ,YAAYA,CAACpB,IAAI,EAAE;MACf,IAAIA,IAAI,CAACtC,IAAI,IAAIsC,IAAI,CAACtC,IAAI,KAAK,IAAI,EAAE;QACjC;QACA;QACA,IAAI2D,OAAO,GAAG,IAAI;QAClB,OAAOA,OAAO,EAAE;UACZ,IAAIA,OAAO,KAAKrB,IAAI,CAACtC,IAAI,EAAE;YACvB,MAAML,KAAK,CAAE,8BAA6B,IAAI,CAACN,IAAK,8CAA6CiD,IAAI,CAACtC,IAAI,CAACX,IAAK,EAAC,CAAC;UACtH;UACAsE,OAAO,GAAGA,OAAO,CAACzD,MAAM;QAC5B;MACJ;MACAoC,IAAI,CAACS,aAAa,CAACa,UAAU,EAAEnB,YAAY,CAAC;MAC5C,MAAMoB,aAAa,GAAG,EAAE;MACxBvB,IAAI,CAACwB,cAAc,GAAGD,aAAa;MACnCvB,IAAI,CAACyB,KAAK,GAAG,IAAI;MACjB,IAAI;QACAzB,IAAI,GAAG,IAAI,CAACpB,aAAa,CAACwC,YAAY,CAAC,IAAI,EAAEpB,IAAI,CAAC;MACtD,CAAC,CACD,OAAO0B,GAAG,EAAE;QACR;QACA;QACA1B,IAAI,CAACS,aAAa,CAACS,OAAO,EAAEI,UAAU,EAAEnB,YAAY,CAAC;QACrD;QACA,IAAI,CAACvB,aAAa,CAACkB,WAAW,CAAC,IAAI,EAAE4B,GAAG,CAAC;QACzC,MAAMA,GAAG;MACb;MACA,IAAI1B,IAAI,CAACwB,cAAc,KAAKD,aAAa,EAAE;QACvC;QACA,IAAI,CAACJ,gBAAgB,CAACnB,IAAI,EAAE,CAAC,CAAC;MAClC;MACA,IAAIA,IAAI,CAACE,KAAK,IAAIoB,UAAU,EAAE;QAC1BtB,IAAI,CAACS,aAAa,CAACC,SAAS,EAAEY,UAAU,CAAC;MAC7C;MACA,OAAOtB,IAAI;IACf;IACA2B,iBAAiBA,CAACvC,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAE;MACtD,OAAO,IAAI,CAACR,YAAY,CAAC,IAAIS,QAAQ,CAACC,SAAS,EAAE1C,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEZ,SAAS,CAAC,CAAC;IACxG;IACAe,iBAAiBA,CAAC3C,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,EAAE;MACpE,OAAO,IAAI,CAACZ,YAAY,CAAC,IAAIS,QAAQ,CAACvB,SAAS,EAAElB,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,CAAC,CAAC;IAC3G;IACAC,iBAAiBA,CAAC7C,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,EAAE;MACpE,OAAO,IAAI,CAACZ,YAAY,CAAC,IAAIS,QAAQ,CAACxB,SAAS,EAAEjB,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,CAAC,CAAC;IAC3G;IACAE,UAAUA,CAAClC,IAAI,EAAE;MACb,IAAIA,IAAI,CAACtC,IAAI,IAAI,IAAI,EACjB,MAAM,IAAIL,KAAK,CAAC,mEAAmE,GAC/E,CAAC2C,IAAI,CAACtC,IAAI,IAAIuC,OAAO,EAAElD,IAAI,GAAG,eAAe,GAAG,IAAI,CAACA,IAAI,GAAG,GAAG,CAAC;MACxE,IAAIiD,IAAI,CAACE,KAAK,KAAKQ,SAAS,IAAIV,IAAI,CAACE,KAAK,KAAKM,OAAO,EAAE;QACpD;MACJ;MACAR,IAAI,CAACS,aAAa,CAAC0B,SAAS,EAAEzB,SAAS,EAAEF,OAAO,CAAC;MACjD,IAAI;QACA,IAAI,CAAC5B,aAAa,CAACsD,UAAU,CAAC,IAAI,EAAElC,IAAI,CAAC;MAC7C,CAAC,CACD,OAAO0B,GAAG,EAAE;QACR;QACA1B,IAAI,CAACS,aAAa,CAACS,OAAO,EAAEiB,SAAS,CAAC;QACtC,IAAI,CAACvD,aAAa,CAACkB,WAAW,CAAC,IAAI,EAAE4B,GAAG,CAAC;QACzC,MAAMA,GAAG;MACb;MACA,IAAI,CAACP,gBAAgB,CAACnB,IAAI,EAAE,CAAC,CAAC,CAAC;MAC/BA,IAAI,CAACS,aAAa,CAACN,YAAY,EAAEgC,SAAS,CAAC;MAC3CnC,IAAI,CAACW,QAAQ,GAAG,CAAC;MACjB,OAAOX,IAAI;IACf;IACAmB,gBAAgBA,CAACnB,IAAI,EAAEoC,KAAK,EAAE;MAC1B,MAAMb,aAAa,GAAGvB,IAAI,CAACwB,cAAc;MACzC,IAAIY,KAAK,IAAI,CAAC,CAAC,EAAE;QACbpC,IAAI,CAACwB,cAAc,GAAG,IAAI;MAC9B;MACA,KAAK,IAAIa,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,aAAa,CAACe,MAAM,EAAED,CAAC,EAAE,EAAE;QAC3Cd,aAAa,CAACc,CAAC,CAAC,CAAClB,gBAAgB,CAACnB,IAAI,CAACI,IAAI,EAAEgC,KAAK,CAAC;MACvD;IACJ;EACJ;EAzOI;EADE9E,IAAI,CAEQH,UAAU,GAAGA,UAAU;EAyOzC,MAAMoF,WAAW,GAAG;IAChBxF,IAAI,EAAE,EAAE;IACRyF,SAAS,EAAEA,CAACC,QAAQ,EAAEC,CAAC,EAAEC,MAAM,EAAEC,YAAY,KAAKH,QAAQ,CAACI,OAAO,CAACF,MAAM,EAAEC,YAAY,CAAC;IACxFE,cAAc,EAAEA,CAACL,QAAQ,EAAEC,CAAC,EAAEC,MAAM,EAAE3C,IAAI,KAAKyC,QAAQ,CAACrB,YAAY,CAACuB,MAAM,EAAE3C,IAAI,CAAC;IAClF+C,YAAY,EAAEA,CAACN,QAAQ,EAAEC,CAAC,EAAEC,MAAM,EAAE3C,IAAI,EAAEN,SAAS,EAAEC,SAAS,KAAK8C,QAAQ,CAACxB,UAAU,CAAC0B,MAAM,EAAE3C,IAAI,EAAEN,SAAS,EAAEC,SAAS,CAAC;IAC1HqD,YAAY,EAAEA,CAACP,QAAQ,EAAEC,CAAC,EAAEC,MAAM,EAAE3C,IAAI,KAAKyC,QAAQ,CAACP,UAAU,CAACS,MAAM,EAAE3C,IAAI;EACjF,CAAC;EACD,MAAMnB,aAAa,CAAC;IAChBL,WAAWA,CAACd,IAAI,EAAEuF,cAAc,EAAExE,QAAQ,EAAE;MACxC,IAAI,CAACyE,WAAW,GAAG;QAAE,WAAW,EAAE,CAAC;QAAE,WAAW,EAAE,CAAC;QAAE,WAAW,EAAE;MAAE,CAAC;MACrE,IAAI,CAACxF,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACyF,eAAe,GAAGF,cAAc;MACrC,IAAI,CAACG,OAAO,GAAG3E,QAAQ,KAAKA,QAAQ,IAAIA,QAAQ,CAAC4E,MAAM,GAAG5E,QAAQ,GAAGwE,cAAc,CAACG,OAAO,CAAC;MAC5F,IAAI,CAACE,SAAS,GAAG7E,QAAQ,KAAKA,QAAQ,CAAC4E,MAAM,GAAGJ,cAAc,GAAGA,cAAc,CAACK,SAAS,CAAC;MAC1F,IAAI,CAACC,aAAa,GACd9E,QAAQ,KAAKA,QAAQ,CAAC4E,MAAM,GAAG,IAAI,CAAC3F,IAAI,GAAGuF,cAAc,CAACM,aAAa,CAAC;MAC5E,IAAI,CAACC,YAAY,GACb/E,QAAQ,KAAKA,QAAQ,CAACgF,WAAW,GAAGhF,QAAQ,GAAGwE,cAAc,CAACO,YAAY,CAAC;MAC/E,IAAI,CAACE,cAAc,GACfjF,QAAQ,KAAKA,QAAQ,CAACgF,WAAW,GAAGR,cAAc,GAAGA,cAAc,CAACS,cAAc,CAAC;MACvF,IAAI,CAACC,kBAAkB,GACnBlF,QAAQ,KAAKA,QAAQ,CAACgF,WAAW,GAAG,IAAI,CAAC/F,IAAI,GAAGuF,cAAc,CAACU,kBAAkB,CAAC;MACtF,IAAI,CAACC,SAAS,GAAGnF,QAAQ,KAAKA,QAAQ,CAACoF,QAAQ,GAAGpF,QAAQ,GAAGwE,cAAc,CAACW,SAAS,CAAC;MACtF,IAAI,CAACE,WAAW,GACZrF,QAAQ,KAAKA,QAAQ,CAACoF,QAAQ,GAAGZ,cAAc,GAAGA,cAAc,CAACa,WAAW,CAAC;MACjF,IAAI,CAACC,eAAe,GAChBtF,QAAQ,KAAKA,QAAQ,CAACoF,QAAQ,GAAG,IAAI,CAACnG,IAAI,GAAGuF,cAAc,CAACc,eAAe,CAAC;MAChF,IAAI,CAACC,cAAc,GACfvF,QAAQ,KAAKA,QAAQ,CAACwF,aAAa,GAAGxF,QAAQ,GAAGwE,cAAc,CAACe,cAAc,CAAC;MACnF,IAAI,CAACE,gBAAgB,GACjBzF,QAAQ,KAAKA,QAAQ,CAACwF,aAAa,GAAGhB,cAAc,GAAGA,cAAc,CAACiB,gBAAgB,CAAC;MAC3F,IAAI,CAACC,oBAAoB,GACrB1F,QAAQ,KAAKA,QAAQ,CAACwF,aAAa,GAAG,IAAI,CAACvG,IAAI,GAAGuF,cAAc,CAACkB,oBAAoB,CAAC;MAC1F,IAAI,CAACC,eAAe,GAChB3F,QAAQ,KAAKA,QAAQ,CAACqE,cAAc,GAAGrE,QAAQ,GAAGwE,cAAc,CAACmB,eAAe,CAAC;MACrF,IAAI,CAACC,iBAAiB,GAAG5F,QAAQ,KAC5BA,QAAQ,CAACqE,cAAc,GAAGG,cAAc,GAAGA,cAAc,CAACoB,iBAAiB,CAAC;MACjF,IAAI,CAACC,qBAAqB,GACtB7F,QAAQ,KAAKA,QAAQ,CAACqE,cAAc,GAAG,IAAI,CAACpF,IAAI,GAAGuF,cAAc,CAACqB,qBAAqB,CAAC;MAC5F,IAAI,CAACC,aAAa,GACd9F,QAAQ,KAAKA,QAAQ,CAACsE,YAAY,GAAGtE,QAAQ,GAAGwE,cAAc,CAACsB,aAAa,CAAC;MACjF,IAAI,CAACC,eAAe,GAChB/F,QAAQ,KAAKA,QAAQ,CAACsE,YAAY,GAAGE,cAAc,GAAGA,cAAc,CAACuB,eAAe,CAAC;MACzF,IAAI,CAACC,mBAAmB,GACpBhG,QAAQ,KAAKA,QAAQ,CAACsE,YAAY,GAAG,IAAI,CAACrF,IAAI,GAAGuF,cAAc,CAACwB,mBAAmB,CAAC;MACxF,IAAI,CAACC,aAAa,GACdjG,QAAQ,KAAKA,QAAQ,CAACuE,YAAY,GAAGvE,QAAQ,GAAGwE,cAAc,CAACyB,aAAa,CAAC;MACjF,IAAI,CAACC,eAAe,GAChBlG,QAAQ,KAAKA,QAAQ,CAACuE,YAAY,GAAGC,cAAc,GAAGA,cAAc,CAAC0B,eAAe,CAAC;MACzF,IAAI,CAACC,mBAAmB,GACpBnG,QAAQ,KAAKA,QAAQ,CAACuE,YAAY,GAAG,IAAI,CAACtF,IAAI,GAAGuF,cAAc,CAAC2B,mBAAmB,CAAC;MACxF,IAAI,CAACC,UAAU,GAAG,IAAI;MACtB,IAAI,CAACC,YAAY,GAAG,IAAI;MACxB,IAAI,CAACC,iBAAiB,GAAG,IAAI;MAC7B,IAAI,CAACC,gBAAgB,GAAG,IAAI;MAC5B,MAAMC,eAAe,GAAGxG,QAAQ,IAAIA,QAAQ,CAAC+D,SAAS;MACtD,MAAM0C,aAAa,GAAGjC,cAAc,IAAIA,cAAc,CAAC4B,UAAU;MACjE,IAAII,eAAe,IAAIC,aAAa,EAAE;QAClC;QACA;QACA,IAAI,CAACL,UAAU,GAAGI,eAAe,GAAGxG,QAAQ,GAAG8D,WAAW;QAC1D,IAAI,CAACuC,YAAY,GAAG7B,cAAc;QAClC,IAAI,CAAC8B,iBAAiB,GAAG,IAAI;QAC7B,IAAI,CAACC,gBAAgB,GAAGtH,IAAI;QAC5B,IAAI,CAACe,QAAQ,CAACqE,cAAc,EAAE;UAC1B,IAAI,CAACsB,eAAe,GAAG7B,WAAW;UAClC,IAAI,CAAC8B,iBAAiB,GAAGpB,cAAc;UACvC,IAAI,CAACqB,qBAAqB,GAAG,IAAI,CAAC5G,IAAI;QAC1C;QACA,IAAI,CAACe,QAAQ,CAACsE,YAAY,EAAE;UACxB,IAAI,CAACwB,aAAa,GAAGhC,WAAW;UAChC,IAAI,CAACiC,eAAe,GAAGvB,cAAc;UACrC,IAAI,CAACwB,mBAAmB,GAAG,IAAI,CAAC/G,IAAI;QACxC;QACA,IAAI,CAACe,QAAQ,CAACuE,YAAY,EAAE;UACxB,IAAI,CAAC0B,aAAa,GAAGnC,WAAW;UAChC,IAAI,CAACoC,eAAe,GAAG1B,cAAc;UACrC,IAAI,CAAC2B,mBAAmB,GAAG,IAAI,CAAClH,IAAI;QACxC;MACJ;IACJ;IACAuB,IAAIA,CAACkG,UAAU,EAAE1G,QAAQ,EAAE;MACvB,OAAO,IAAI,CAAC2E,OAAO,GAAG,IAAI,CAACA,OAAO,CAACC,MAAM,CAAC,IAAI,CAACC,SAAS,EAAE,IAAI,CAAC5F,IAAI,EAAEyH,UAAU,EAAE1G,QAAQ,CAAC,GACtF,IAAInB,IAAI,CAAC6H,UAAU,EAAE1G,QAAQ,CAAC;IACtC;IACAa,SAASA,CAAC6F,UAAU,EAAEhG,QAAQ,EAAEC,MAAM,EAAE;MACpC,OAAO,IAAI,CAACoE,YAAY,GACpB,IAAI,CAACA,YAAY,CAACC,WAAW,CAAC,IAAI,CAACC,cAAc,EAAE,IAAI,CAACC,kBAAkB,EAAEwB,UAAU,EAAEhG,QAAQ,EAAEC,MAAM,CAAC,GACzGD,QAAQ;IAChB;IACAS,MAAMA,CAACuF,UAAU,EAAEhG,QAAQ,EAAEO,SAAS,EAAEC,SAAS,EAAEP,MAAM,EAAE;MACvD,OAAO,IAAI,CAACwE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,QAAQ,CAAC,IAAI,CAACC,WAAW,EAAE,IAAI,CAACC,eAAe,EAAEoB,UAAU,EAAEhG,QAAQ,EAAEO,SAAS,EAAEC,SAAS,EAAEP,MAAM,CAAC,GACvID,QAAQ,CAACiG,KAAK,CAAC1F,SAAS,EAAEC,SAAS,CAAC;IAC5C;IACAG,WAAWA,CAACqF,UAAU,EAAEtF,KAAK,EAAE;MAC3B,OAAO,IAAI,CAACmE,cAAc,GACtB,IAAI,CAACA,cAAc,CAACC,aAAa,CAAC,IAAI,CAACC,gBAAgB,EAAE,IAAI,CAACC,oBAAoB,EAAEgB,UAAU,EAAEtF,KAAK,CAAC,GACtG,IAAI;IACZ;IACAuB,YAAYA,CAAC+D,UAAU,EAAEnF,IAAI,EAAE;MAC3B,IAAIqF,UAAU,GAAGrF,IAAI;MACrB,IAAI,IAAI,CAACoE,eAAe,EAAE;QACtB,IAAI,IAAI,CAACS,UAAU,EAAE;UACjBQ,UAAU,CAAC7D,cAAc,CAAC8D,IAAI,CAAC,IAAI,CAACP,iBAAiB,CAAC;QAC1D;QACA;QACAM,UAAU,GAAG,IAAI,CAACjB,eAAe,CAACtB,cAAc,CAAC,IAAI,CAACuB,iBAAiB,EAAE,IAAI,CAACC,qBAAqB,EAAEa,UAAU,EAAEnF,IAAI,CAAC;QACtH;QACA,IAAI,CAACqF,UAAU,EACXA,UAAU,GAAGrF,IAAI;MACzB,CAAC,MACI;QACD,IAAIA,IAAI,CAACuF,UAAU,EAAE;UACjBvF,IAAI,CAACuF,UAAU,CAACvF,IAAI,CAAC;QACzB,CAAC,MACI,IAAIA,IAAI,CAACI,IAAI,IAAI0B,SAAS,EAAE;UAC7BH,iBAAiB,CAAC3B,IAAI,CAAC;QAC3B,CAAC,MACI;UACD,MAAM,IAAI3C,KAAK,CAAC,6BAA6B,CAAC;QAClD;MACJ;MACA,OAAOgI,UAAU;IACrB;IACApE,UAAUA,CAACkE,UAAU,EAAEnF,IAAI,EAAEN,SAAS,EAAEC,SAAS,EAAE;MAC/C,OAAO,IAAI,CAAC4E,aAAa,GAAG,IAAI,CAACA,aAAa,CAACxB,YAAY,CAAC,IAAI,CAACyB,eAAe,EAAE,IAAI,CAACC,mBAAmB,EAAEU,UAAU,EAAEnF,IAAI,EAAEN,SAAS,EAAEC,SAAS,CAAC,GAC/IK,IAAI,CAACb,QAAQ,CAACiG,KAAK,CAAC1F,SAAS,EAAEC,SAAS,CAAC;IACjD;IACAuC,UAAUA,CAACiD,UAAU,EAAEnF,IAAI,EAAE;MACzB,IAAIwF,KAAK;MACT,IAAI,IAAI,CAACd,aAAa,EAAE;QACpBc,KAAK,GAAG,IAAI,CAACd,aAAa,CAAC1B,YAAY,CAAC,IAAI,CAAC2B,eAAe,EAAE,IAAI,CAACC,mBAAmB,EAAEO,UAAU,EAAEnF,IAAI,CAAC;MAC7G,CAAC,MACI;QACD,IAAI,CAACA,IAAI,CAACe,QAAQ,EAAE;UAChB,MAAM1D,KAAK,CAAC,wBAAwB,CAAC;QACzC;QACAmI,KAAK,GAAGxF,IAAI,CAACe,QAAQ,CAACf,IAAI,CAAC;MAC/B;MACA,OAAOwF,KAAK;IAChB;IACA3C,OAAOA,CAACsC,UAAU,EAAEM,OAAO,EAAE;MACzB;MACA;MACA,IAAI;QACA,IAAI,CAACZ,UAAU,IACX,IAAI,CAACA,UAAU,CAACrC,SAAS,CAAC,IAAI,CAACsC,YAAY,EAAE,IAAI,CAACE,gBAAgB,EAAEG,UAAU,EAAEM,OAAO,CAAC;MAChG,CAAC,CACD,OAAO/D,GAAG,EAAE;QACR,IAAI,CAAC5B,WAAW,CAACqF,UAAU,EAAEzD,GAAG,CAAC;MACrC;IACJ;IACA;IACAP,gBAAgBA,CAACf,IAAI,EAAEgC,KAAK,EAAE;MAC1B,MAAMsD,MAAM,GAAG,IAAI,CAACxC,WAAW;MAC/B,MAAMyC,IAAI,GAAGD,MAAM,CAACtF,IAAI,CAAC;MACzB,MAAMwF,IAAI,GAAGF,MAAM,CAACtF,IAAI,CAAC,GAAGuF,IAAI,GAAGvD,KAAK;MACxC,IAAIwD,IAAI,GAAG,CAAC,EAAE;QACV,MAAM,IAAIvI,KAAK,CAAC,0CAA0C,CAAC;MAC/D;MACA,IAAIsI,IAAI,IAAI,CAAC,IAAIC,IAAI,IAAI,CAAC,EAAE;QACxB,MAAMH,OAAO,GAAG;UACZ3D,SAAS,EAAE4D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;UAClCpF,SAAS,EAAEoF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;UAClCrF,SAAS,EAAEqF,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;UAClCG,MAAM,EAAEzF;QACZ,CAAC;QACD,IAAI,CAACyC,OAAO,CAAC,IAAI,CAACnF,IAAI,EAAE+H,OAAO,CAAC;MACpC;IACJ;EACJ;EACA,MAAM5D,QAAQ,CAAC;IACXrD,WAAWA,CAAC4B,IAAI,EAAEhB,MAAM,EAAED,QAAQ,EAAE2G,OAAO,EAAEP,UAAU,EAAExE,QAAQ,EAAE;MAC/D;MACA,IAAI,CAACU,KAAK,GAAG,IAAI;MACjB,IAAI,CAACd,QAAQ,GAAG,CAAC;MACjB;MACA,IAAI,CAACa,cAAc,GAAG,IAAI;MAC1B;MACA,IAAI,CAACuE,MAAM,GAAG,cAAc;MAC5B,IAAI,CAAC3F,IAAI,GAAGA,IAAI;MAChB,IAAI,CAAChB,MAAM,GAAGA,MAAM;MACpB,IAAI,CAACyB,IAAI,GAAGiF,OAAO;MACnB,IAAI,CAACP,UAAU,GAAGA,UAAU;MAC5B,IAAI,CAACxE,QAAQ,GAAGA,QAAQ;MACxB,IAAI,CAAC5B,QAAQ,EAAE;QACX,MAAM,IAAI9B,KAAK,CAAC,yBAAyB,CAAC;MAC9C;MACA,IAAI,CAAC8B,QAAQ,GAAGA,QAAQ;MACxB,MAAM6G,IAAI,GAAG,IAAI;MACjB;MACA,IAAI5F,IAAI,KAAKC,SAAS,IAAIyF,OAAO,IAAIA,OAAO,CAACG,IAAI,EAAE;QAC/C,IAAI,CAACrG,MAAM,GAAGiC,QAAQ,CAACZ,UAAU;MACrC,CAAC,MACI;QACD,IAAI,CAACrB,MAAM,GAAG,YAAY;UACtB,OAAOiC,QAAQ,CAACZ,UAAU,CAACiF,IAAI,CAACtJ,MAAM,EAAEoJ,IAAI,EAAE,IAAI,EAAExG,SAAS,CAAC;QAClE,CAAC;MACL;IACJ;IACA,OAAOyB,UAAUA,CAACjB,IAAI,EAAE2C,MAAM,EAAEwD,IAAI,EAAE;MAClC,IAAI,CAACnG,IAAI,EAAE;QACPA,IAAI,GAAG,IAAI;MACf;MACAoG,yBAAyB,EAAE;MAC3B,IAAI;QACApG,IAAI,CAACW,QAAQ,EAAE;QACf,OAAOX,IAAI,CAACtC,IAAI,CAACqC,OAAO,CAACC,IAAI,EAAE2C,MAAM,EAAEwD,IAAI,CAAC;MAChD,CAAC,SACO;QACJ,IAAIC,yBAAyB,IAAI,CAAC,EAAE;UAChCC,mBAAmB,CAAC,CAAC;QACzB;QACAD,yBAAyB,EAAE;MAC/B;IACJ;IACA,IAAI1I,IAAIA,CAAA,EAAG;MACP,OAAO,IAAI,CAAC+D,KAAK;IACrB;IACA,IAAIvB,KAAKA,CAAA,EAAG;MACR,OAAO,IAAI,CAAC6F,MAAM;IACtB;IACAO,qBAAqBA,CAAA,EAAG;MACpB,IAAI,CAAC7F,aAAa,CAACN,YAAY,EAAEmB,UAAU,CAAC;IAChD;IACA;IACAb,aAAaA,CAAC8F,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAE;MAC3C,IAAI,IAAI,CAACV,MAAM,KAAKS,UAAU,IAAI,IAAI,CAACT,MAAM,KAAKU,UAAU,EAAE;QAC1D,IAAI,CAACV,MAAM,GAAGQ,OAAO;QACrB,IAAIA,OAAO,IAAIpG,YAAY,EAAE;UACzB,IAAI,CAACqB,cAAc,GAAG,IAAI;QAC9B;MACJ,CAAC,MACI;QACD,MAAM,IAAInE,KAAK,CAAE,GAAE,IAAI,CAAC+C,IAAK,KAAI,IAAI,CAAChB,MAAO,6BAA4BmH,OAAQ,uBAAsBC,UAAW,IAAGC,UAAU,GAAG,QAAQ,GAAGA,UAAU,GAAG,IAAI,GAAG,EAAG,UAAS,IAAI,CAACV,MAAO,IAAG,CAAC;MACjM;IACJ;IACAW,QAAQA,CAAA,EAAG;MACP,IAAI,IAAI,CAAC7F,IAAI,IAAI,OAAO,IAAI,CAACA,IAAI,CAAC8F,QAAQ,KAAK,WAAW,EAAE;QACxD,OAAO,IAAI,CAAC9F,IAAI,CAAC8F,QAAQ,CAACD,QAAQ,CAAC,CAAC;MACxC,CAAC,MACI;QACD,OAAOE,MAAM,CAACC,SAAS,CAACH,QAAQ,CAACR,IAAI,CAAC,IAAI,CAAC;MAC/C;IACJ;IACA;IACA;IACAY,MAAMA,CAAA,EAAG;MACL,OAAO;QACH1G,IAAI,EAAE,IAAI,CAACA,IAAI;QACfF,KAAK,EAAE,IAAI,CAACA,KAAK;QACjBd,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB1B,IAAI,EAAE,IAAI,CAACA,IAAI,CAACX,IAAI;QACpB4D,QAAQ,EAAE,IAAI,CAACA;MACnB,CAAC;IACL;EACJ;EACA;EACA;EACA;EACA;EACA;EACA,MAAMoG,gBAAgB,GAAG5J,UAAU,CAAC,YAAY,CAAC;EACjD,MAAM6J,aAAa,GAAG7J,UAAU,CAAC,SAAS,CAAC;EAC3C,MAAM8J,UAAU,GAAG9J,UAAU,CAAC,MAAM,CAAC;EACrC,IAAI+J,eAAe,GAAG,EAAE;EACxB,IAAIC,yBAAyB,GAAG,KAAK;EACrC,IAAIC,2BAA2B;EAC/B,SAASC,uBAAuBA,CAACC,IAAI,EAAE;IACnC,IAAI,CAACF,2BAA2B,EAAE;MAC9B,IAAIxK,MAAM,CAACoK,aAAa,CAAC,EAAE;QACvBI,2BAA2B,GAAGxK,MAAM,CAACoK,aAAa,CAAC,CAACO,OAAO,CAAC,CAAC,CAAC;MAClE;IACJ;IACA,IAAIH,2BAA2B,EAAE;MAC7B,IAAII,UAAU,GAAGJ,2BAA2B,CAACH,UAAU,CAAC;MACxD,IAAI,CAACO,UAAU,EAAE;QACb;QACA;QACAA,UAAU,GAAGJ,2BAA2B,CAAC,MAAM,CAAC;MACpD;MACAI,UAAU,CAACtB,IAAI,CAACkB,2BAA2B,EAAEE,IAAI,CAAC;IACtD,CAAC,MACI;MACD1K,MAAM,CAACmK,gBAAgB,CAAC,CAACO,IAAI,EAAE,CAAC,CAAC;IACrC;EACJ;EACA,SAAS3F,iBAAiBA,CAAC3B,IAAI,EAAE;IAC7B;IACA;IACA,IAAIoG,yBAAyB,KAAK,CAAC,IAAIc,eAAe,CAAC5E,MAAM,KAAK,CAAC,EAAE;MACjE;MACA+E,uBAAuB,CAAChB,mBAAmB,CAAC;IAChD;IACArG,IAAI,IAAIkH,eAAe,CAAC5B,IAAI,CAACtF,IAAI,CAAC;EACtC;EACA,SAASqG,mBAAmBA,CAAA,EAAG;IAC3B,IAAI,CAACc,yBAAyB,EAAE;MAC5BA,yBAAyB,GAAG,IAAI;MAChC,OAAOD,eAAe,CAAC5E,MAAM,EAAE;QAC3B,MAAMmF,KAAK,GAAGP,eAAe;QAC7BA,eAAe,GAAG,EAAE;QACpB,KAAK,IAAI7E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoF,KAAK,CAACnF,MAAM,EAAED,CAAC,EAAE,EAAE;UACnC,MAAMrC,IAAI,GAAGyH,KAAK,CAACpF,CAAC,CAAC;UACrB,IAAI;YACArC,IAAI,CAACtC,IAAI,CAACqC,OAAO,CAACC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;UACvC,CAAC,CACD,OAAOH,KAAK,EAAE;YACVxB,IAAI,CAACqJ,gBAAgB,CAAC7H,KAAK,CAAC;UAChC;QACJ;MACJ;MACAxB,IAAI,CAACsJ,kBAAkB,CAAC,CAAC;MACzBR,yBAAyB,GAAG,KAAK;IACrC;EACJ;EACA;EACA;EACA;EACA;EACA;EACA,MAAMlH,OAAO,GAAG;IAAElD,IAAI,EAAE;EAAU,CAAC;EACnC,MAAMoD,YAAY,GAAG,cAAc;IAAEmB,UAAU,GAAG,YAAY;IAAEZ,SAAS,GAAG,WAAW;IAAEF,OAAO,GAAG,SAAS;IAAE2B,SAAS,GAAG,WAAW;IAAEjB,OAAO,GAAG,SAAS;EAC1J,MAAMY,SAAS,GAAG,WAAW;IAAExB,SAAS,GAAG,WAAW;IAAED,SAAS,GAAG,WAAW;EAC/E,MAAM7C,OAAO,GAAG,CAAC,CAAC;EAClB,MAAMa,IAAI,GAAG;IACTuJ,MAAM,EAAEzK,UAAU;IAClB0K,gBAAgB,EAAEA,CAAA,KAAMhK,iBAAiB;IACzC6J,gBAAgB,EAAEI,IAAI;IACtBH,kBAAkB,EAAEG,IAAI;IACxBnG,iBAAiB,EAAEA,iBAAiB;IACpCoG,iBAAiB,EAAEA,CAAA,KAAM,CAACzK,IAAI,CAACH,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAC7E6K,gBAAgB,EAAEA,CAAA,KAAM,EAAE;IAC1BC,iBAAiB,EAAEH,IAAI;IACvBI,WAAW,EAAEA,CAAA,KAAMJ,IAAI;IACvBK,aAAa,EAAEA,CAAA,KAAM,EAAE;IACvBC,SAAS,EAAEA,CAAA,KAAMN,IAAI;IACrBO,cAAc,EAAEA,CAAA,KAAMP,IAAI;IAC1BQ,mBAAmB,EAAEA,CAAA,KAAMR,IAAI;IAC/BS,UAAU,EAAEA,CAAA,KAAM,KAAK;IACvBC,gBAAgB,EAAEA,CAAA,KAAMxH,SAAS;IACjCyH,oBAAoB,EAAEA,CAAA,KAAMX,IAAI;IAChCY,8BAA8B,EAAEA,CAAA,KAAM1H,SAAS;IAC/C2H,YAAY,EAAEA,CAAA,KAAM3H,SAAS;IAC7B4H,UAAU,EAAEA,CAAA,KAAM,EAAE;IACpBC,UAAU,EAAEA,CAAA,KAAMf,IAAI;IACtBgB,mBAAmB,EAAEA,CAAA,KAAMhB,IAAI;IAC/BiB,gBAAgB,EAAEA,CAAA,KAAM,EAAE;IAC1BC,qBAAqB,EAAEA,CAAA,KAAMlB,IAAI;IACjCmB,iBAAiB,EAAEA,CAAA,KAAMnB,IAAI;IAC7BoB,cAAc,EAAEA,CAAA,KAAMpB,IAAI;IAC1BT,uBAAuB,EAAEA;EAC7B,CAAC;EACD,IAAIxJ,iBAAiB,GAAG;IAAED,MAAM,EAAE,IAAI;IAAEF,IAAI,EAAE,IAAIJ,IAAI,CAAC,IAAI,EAAE,IAAI;EAAE,CAAC;EACpE,IAAIS,YAAY,GAAG,IAAI;EACvB,IAAIqI,yBAAyB,GAAG,CAAC;EACjC,SAAS0B,IAAIA,CAAA,EAAG,CAAE;EAClB9K,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC;EAClC,OAAOJ,MAAM,CAAC,MAAM,CAAC,GAAGU,IAAI;AAChC,CAAC,EAAG,OAAO6L,MAAM,KAAK,WAAW,IAAIA,MAAM,IAAI,OAAOnD,IAAI,KAAK,WAAW,IAAIA,IAAI,IAAIpJ,MAAM,CAAC;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM8L,8BAA8B,GAAG9B,MAAM,CAACwC,wBAAwB;AACtE;AACA,MAAMX,oBAAoB,GAAG7B,MAAM,CAACyC,cAAc;AAClD;AACA,MAAMC,oBAAoB,GAAG1C,MAAM,CAAC2C,cAAc;AAClD;AACA,MAAMZ,YAAY,GAAG/B,MAAM,CAAC4C,MAAM;AAClC;AACA,MAAMZ,UAAU,GAAGa,KAAK,CAAC5C,SAAS,CAAC6C,KAAK;AACxC;AACA,MAAMC,sBAAsB,GAAG,kBAAkB;AACjD;AACA,MAAMC,yBAAyB,GAAG,qBAAqB;AACvD;AACA,MAAMC,8BAA8B,GAAGvM,IAAI,CAACH,UAAU,CAACwM,sBAAsB,CAAC;AAC9E;AACA,MAAMG,iCAAiC,GAAGxM,IAAI,CAACH,UAAU,CAACyM,yBAAyB,CAAC;AACpF;AACA,MAAMG,QAAQ,GAAG,MAAM;AACvB;AACA,MAAMC,SAAS,GAAG,OAAO;AACzB;AACA,MAAMC,kBAAkB,GAAG3M,IAAI,CAACH,UAAU,CAAC,EAAE,CAAC;AAC9C,SAAS2L,mBAAmBA,CAAC3J,QAAQ,EAAEC,MAAM,EAAE;EAC3C,OAAO9B,IAAI,CAACK,OAAO,CAACuB,IAAI,CAACC,QAAQ,EAAEC,MAAM,CAAC;AAC9C;AACA,SAAS8K,gCAAgCA,CAAC9K,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,EAAE;EAC5F,OAAO1E,IAAI,CAACK,OAAO,CAACoE,iBAAiB,CAAC3C,MAAM,EAAED,QAAQ,EAAE0B,IAAI,EAAEe,cAAc,EAAEI,YAAY,CAAC;AAC/F;AACA,MAAMmI,UAAU,GAAG7M,IAAI,CAACH,UAAU;AAClC,MAAMiN,cAAc,GAAG,OAAOjB,MAAM,KAAK,WAAW;AACpD,MAAMkB,cAAc,GAAGD,cAAc,GAAGjB,MAAM,GAAGnI,SAAS;AAC1D,MAAMsJ,OAAO,GAAGF,cAAc,IAAIC,cAAc,IAAI,OAAOrE,IAAI,KAAK,QAAQ,IAAIA,IAAI,IAAIpJ,MAAM;AAC9F,MAAM2N,gBAAgB,GAAG,iBAAiB;AAC1C,SAASpC,aAAaA,CAAChC,IAAI,EAAE/G,MAAM,EAAE;EACjC,KAAK,IAAIiD,CAAC,GAAG8D,IAAI,CAAC7D,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACvC,IAAI,OAAO8D,IAAI,CAAC9D,CAAC,CAAC,KAAK,UAAU,EAAE;MAC/B8D,IAAI,CAAC9D,CAAC,CAAC,GAAGyG,mBAAmB,CAAC3C,IAAI,CAAC9D,CAAC,CAAC,EAAEjD,MAAM,GAAG,GAAG,GAAGiD,CAAC,CAAC;IAC5D;EACJ;EACA,OAAO8D,IAAI;AACf;AACA,SAASqE,cAAcA,CAAC3D,SAAS,EAAE4D,OAAO,EAAE;EACxC,MAAMrL,MAAM,GAAGyH,SAAS,CAACrI,WAAW,CAAC,MAAM,CAAC;EAC5C,KAAK,IAAI6D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoI,OAAO,CAACnI,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,MAAMtF,IAAI,GAAG0N,OAAO,CAACpI,CAAC,CAAC;IACvB,MAAMI,QAAQ,GAAGoE,SAAS,CAAC9J,IAAI,CAAC;IAChC,IAAI0F,QAAQ,EAAE;MACV,MAAMiI,aAAa,GAAGhC,8BAA8B,CAAC7B,SAAS,EAAE9J,IAAI,CAAC;MACrE,IAAI,CAAC4N,kBAAkB,CAACD,aAAa,CAAC,EAAE;QACpC;MACJ;MACA7D,SAAS,CAAC9J,IAAI,CAAC,GAAG,CAAE0F,QAAQ,IAAK;QAC7B,MAAMmI,OAAO,GAAG,SAAAA,CAAA,EAAY;UACxB,OAAOnI,QAAQ,CAAC2C,KAAK,CAAC,IAAI,EAAE+C,aAAa,CAAC3I,SAAS,EAAEJ,MAAM,GAAG,GAAG,GAAGrC,IAAI,CAAC,CAAC;QAC9E,CAAC;QACDiM,qBAAqB,CAAC4B,OAAO,EAAEnI,QAAQ,CAAC;QACxC,OAAOmI,OAAO;MAClB,CAAC,EAAEnI,QAAQ,CAAC;IAChB;EACJ;AACJ;AACA,SAASkI,kBAAkBA,CAACE,YAAY,EAAE;EACtC,IAAI,CAACA,YAAY,EAAE;IACf,OAAO,IAAI;EACf;EACA,IAAIA,YAAY,CAACC,QAAQ,KAAK,KAAK,EAAE;IACjC,OAAO,KAAK;EAChB;EACA,OAAO,EAAE,OAAOD,YAAY,CAAC/L,GAAG,KAAK,UAAU,IAAI,OAAO+L,YAAY,CAACE,GAAG,KAAK,WAAW,CAAC;AAC/F;AACA,MAAMC,WAAW,GAAI,OAAOC,iBAAiB,KAAK,WAAW,IAAIjF,IAAI,YAAYiF,iBAAkB;AACnG;AACA;AACA,MAAMC,MAAM,GAAI,EAAE,IAAI,IAAIZ,OAAO,CAAC,IAAI,OAAOA,OAAO,CAACa,OAAO,KAAK,WAAW,IACxE,CAAC,CAAC,CAACzE,QAAQ,CAACR,IAAI,CAACoE,OAAO,CAACa,OAAO,CAAC,KAAK,kBAAmB;AAC7D,MAAMC,SAAS,GAAG,CAACF,MAAM,IAAI,CAACF,WAAW,IAAI,CAAC,EAAEZ,cAAc,IAAIC,cAAc,CAAC,aAAa,CAAC,CAAC;AAChG;AACA;AACA;AACA,MAAMgB,KAAK,GAAG,OAAOf,OAAO,CAACa,OAAO,KAAK,WAAW,IAChD,CAAC,CAAC,CAACzE,QAAQ,CAACR,IAAI,CAACoE,OAAO,CAACa,OAAO,CAAC,KAAK,kBAAkB,IAAI,CAACH,WAAW,IACxE,CAAC,EAAEZ,cAAc,IAAIC,cAAc,CAAC,aAAa,CAAC,CAAC;AACvD,MAAMiB,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAMC,MAAM,GAAG,SAAAA,CAAUC,KAAK,EAAE;EAC5B;EACA;EACAA,KAAK,GAAGA,KAAK,IAAIlB,OAAO,CAACkB,KAAK;EAC9B,IAAI,CAACA,KAAK,EAAE;IACR;EACJ;EACA,IAAIC,eAAe,GAAGH,sBAAsB,CAACE,KAAK,CAACpL,IAAI,CAAC;EACxD,IAAI,CAACqL,eAAe,EAAE;IAClBA,eAAe,GAAGH,sBAAsB,CAACE,KAAK,CAACpL,IAAI,CAAC,GAAG+J,UAAU,CAAC,aAAa,GAAGqB,KAAK,CAACpL,IAAI,CAAC;EACjG;EACA,MAAMuC,MAAM,GAAG,IAAI,IAAI6I,KAAK,CAAC7I,MAAM,IAAI2H,OAAO;EAC9C,MAAMoB,QAAQ,GAAG/I,MAAM,CAAC8I,eAAe,CAAC;EACxC,IAAIE,MAAM;EACV,IAAIP,SAAS,IAAIzI,MAAM,KAAK0H,cAAc,IAAImB,KAAK,CAACpL,IAAI,KAAK,OAAO,EAAE;IAClE;IACA;IACA;IACA,MAAMwL,UAAU,GAAGJ,KAAK;IACxBG,MAAM,GAAGD,QAAQ,IACbA,QAAQ,CAACxF,IAAI,CAAC,IAAI,EAAE0F,UAAU,CAACC,OAAO,EAAED,UAAU,CAACE,QAAQ,EAAEF,UAAU,CAACG,MAAM,EAAEH,UAAU,CAACI,KAAK,EAAEJ,UAAU,CAAC/L,KAAK,CAAC;IACvH,IAAI8L,MAAM,KAAK,IAAI,EAAE;MACjBH,KAAK,CAACS,cAAc,CAAC,CAAC;IAC1B;EACJ,CAAC,MACI;IACDN,MAAM,GAAGD,QAAQ,IAAIA,QAAQ,CAACtG,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;IACpD,IAAImM,MAAM,IAAI3K,SAAS,IAAI,CAAC2K,MAAM,EAAE;MAChCH,KAAK,CAACS,cAAc,CAAC,CAAC;IAC1B;EACJ;EACA,OAAON,MAAM;AACjB,CAAC;AACD,SAASO,aAAaA,CAACC,GAAG,EAAEC,IAAI,EAAEvF,SAAS,EAAE;EACzC,IAAIwF,IAAI,GAAG3D,8BAA8B,CAACyD,GAAG,EAAEC,IAAI,CAAC;EACpD,IAAI,CAACC,IAAI,IAAIxF,SAAS,EAAE;IACpB;IACA,MAAM6D,aAAa,GAAGhC,8BAA8B,CAAC7B,SAAS,EAAEuF,IAAI,CAAC;IACrE,IAAI1B,aAAa,EAAE;MACf2B,IAAI,GAAG;QAAEC,UAAU,EAAE,IAAI;QAAEC,YAAY,EAAE;MAAK,CAAC;IACnD;EACJ;EACA;EACA;EACA,IAAI,CAACF,IAAI,IAAI,CAACA,IAAI,CAACE,YAAY,EAAE;IAC7B;EACJ;EACA,MAAMC,mBAAmB,GAAGrC,UAAU,CAAC,IAAI,GAAGiC,IAAI,GAAG,SAAS,CAAC;EAC/D,IAAID,GAAG,CAAChO,cAAc,CAACqO,mBAAmB,CAAC,IAAIL,GAAG,CAACK,mBAAmB,CAAC,EAAE;IACrE;EACJ;EACA;EACA;EACA;EACA;EACA;EACA,OAAOH,IAAI,CAACvB,QAAQ;EACpB,OAAOuB,IAAI,CAAC7G,KAAK;EACjB,MAAMiH,eAAe,GAAGJ,IAAI,CAACvN,GAAG;EAChC,MAAM4N,eAAe,GAAGL,IAAI,CAACtB,GAAG;EAChC;EACA,MAAM4B,SAAS,GAAGP,IAAI,CAAC1C,KAAK,CAAC,CAAC,CAAC;EAC/B,IAAI+B,eAAe,GAAGH,sBAAsB,CAACqB,SAAS,CAAC;EACvD,IAAI,CAAClB,eAAe,EAAE;IAClBA,eAAe,GAAGH,sBAAsB,CAACqB,SAAS,CAAC,GAAGxC,UAAU,CAAC,aAAa,GAAGwC,SAAS,CAAC;EAC/F;EACAN,IAAI,CAACtB,GAAG,GAAG,UAAU6B,QAAQ,EAAE;IAC3B;IACA;IACA,IAAIjK,MAAM,GAAG,IAAI;IACjB,IAAI,CAACA,MAAM,IAAIwJ,GAAG,KAAK7B,OAAO,EAAE;MAC5B3H,MAAM,GAAG2H,OAAO;IACpB;IACA,IAAI,CAAC3H,MAAM,EAAE;MACT;IACJ;IACA,MAAMkK,aAAa,GAAGlK,MAAM,CAAC8I,eAAe,CAAC;IAC7C,IAAI,OAAOoB,aAAa,KAAK,UAAU,EAAE;MACrClK,MAAM,CAACmK,mBAAmB,CAACH,SAAS,EAAEpB,MAAM,CAAC;IACjD;IACA;IACA;IACAmB,eAAe,IAAIA,eAAe,CAACxG,IAAI,CAACvD,MAAM,EAAE,IAAI,CAAC;IACrDA,MAAM,CAAC8I,eAAe,CAAC,GAAGmB,QAAQ;IAClC,IAAI,OAAOA,QAAQ,KAAK,UAAU,EAAE;MAChCjK,MAAM,CAACoK,gBAAgB,CAACJ,SAAS,EAAEpB,MAAM,EAAE,KAAK,CAAC;IACrD;EACJ,CAAC;EACD;EACA;EACAc,IAAI,CAACvN,GAAG,GAAG,YAAY;IACnB;IACA;IACA,IAAI6D,MAAM,GAAG,IAAI;IACjB,IAAI,CAACA,MAAM,IAAIwJ,GAAG,KAAK7B,OAAO,EAAE;MAC5B3H,MAAM,GAAG2H,OAAO;IACpB;IACA,IAAI,CAAC3H,MAAM,EAAE;MACT,OAAO,IAAI;IACf;IACA,MAAM+I,QAAQ,GAAG/I,MAAM,CAAC8I,eAAe,CAAC;IACxC,IAAIC,QAAQ,EAAE;MACV,OAAOA,QAAQ;IACnB,CAAC,MACI,IAAIe,eAAe,EAAE;MACtB;MACA;MACA;MACA;MACA;MACA;MACA,IAAIjH,KAAK,GAAGiH,eAAe,CAACvG,IAAI,CAAC,IAAI,CAAC;MACtC,IAAIV,KAAK,EAAE;QACP6G,IAAI,CAACtB,GAAG,CAAC7E,IAAI,CAAC,IAAI,EAAEV,KAAK,CAAC;QAC1B,IAAI,OAAO7C,MAAM,CAAC4H,gBAAgB,CAAC,KAAK,UAAU,EAAE;UAChD5H,MAAM,CAACqK,eAAe,CAACZ,IAAI,CAAC;QAChC;QACA,OAAO5G,KAAK;MAChB;IACJ;IACA,OAAO,IAAI;EACf,CAAC;EACDiD,oBAAoB,CAAC0D,GAAG,EAAEC,IAAI,EAAEC,IAAI,CAAC;EACrCF,GAAG,CAACK,mBAAmB,CAAC,GAAG,IAAI;AACnC;AACA,SAASvE,iBAAiBA,CAACkE,GAAG,EAAExN,UAAU,EAAEkI,SAAS,EAAE;EACnD,IAAIlI,UAAU,EAAE;IACZ,KAAK,IAAI0D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1D,UAAU,CAAC2D,MAAM,EAAED,CAAC,EAAE,EAAE;MACxC6J,aAAa,CAACC,GAAG,EAAE,IAAI,GAAGxN,UAAU,CAAC0D,CAAC,CAAC,EAAEwE,SAAS,CAAC;IACvD;EACJ,CAAC,MACI;IACD,MAAMoG,YAAY,GAAG,EAAE;IACvB,KAAK,MAAMb,IAAI,IAAID,GAAG,EAAE;MACpB,IAAIC,IAAI,CAAC1C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;QAC1BuD,YAAY,CAAC3H,IAAI,CAAC8G,IAAI,CAAC;MAC3B;IACJ;IACA,KAAK,IAAIc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,YAAY,CAAC3K,MAAM,EAAE4K,CAAC,EAAE,EAAE;MAC1ChB,aAAa,CAACC,GAAG,EAAEc,YAAY,CAACC,CAAC,CAAC,EAAErG,SAAS,CAAC;IAClD;EACJ;AACJ;AACA,MAAMsG,mBAAmB,GAAGhD,UAAU,CAAC,kBAAkB,CAAC;AAC1D;AACA,SAAStB,UAAUA,CAACuE,SAAS,EAAE;EAC3B,MAAMC,aAAa,GAAG/C,OAAO,CAAC8C,SAAS,CAAC;EACxC,IAAI,CAACC,aAAa,EACd;EACJ;EACA/C,OAAO,CAACH,UAAU,CAACiD,SAAS,CAAC,CAAC,GAAGC,aAAa;EAC9C/C,OAAO,CAAC8C,SAAS,CAAC,GAAG,YAAY;IAC7B,MAAME,CAAC,GAAGnF,aAAa,CAAC3I,SAAS,EAAE4N,SAAS,CAAC;IAC7C,QAAQE,CAAC,CAAChL,MAAM;MACZ,KAAK,CAAC;QACF,IAAI,CAAC6K,mBAAmB,CAAC,GAAG,IAAIE,aAAa,CAAC,CAAC;QAC/C;MACJ,KAAK,CAAC;QACF,IAAI,CAACF,mBAAmB,CAAC,GAAG,IAAIE,aAAa,CAACC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD;MACJ,KAAK,CAAC;QACF,IAAI,CAACH,mBAAmB,CAAC,GAAG,IAAIE,aAAa,CAACC,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD;MACJ,KAAK,CAAC;QACF,IAAI,CAACH,mBAAmB,CAAC,GAAG,IAAIE,aAAa,CAACC,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D;MACJ,KAAK,CAAC;QACF,IAAI,CAACH,mBAAmB,CAAC,GAAG,IAAIE,aAAa,CAACC,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE;MACJ;QACI,MAAM,IAAIjQ,KAAK,CAAC,oBAAoB,CAAC;IAC7C;EACJ,CAAC;EACD;EACA2L,qBAAqB,CAACsB,OAAO,CAAC8C,SAAS,CAAC,EAAEC,aAAa,CAAC;EACxD,MAAME,QAAQ,GAAG,IAAIF,aAAa,CAAC,YAAY,CAAE,CAAC,CAAC;EACnD,IAAIjB,IAAI;EACR,KAAKA,IAAI,IAAImB,QAAQ,EAAE;IACnB;IACA,IAAIH,SAAS,KAAK,gBAAgB,IAAIhB,IAAI,KAAK,cAAc,EACzD;IACH,WAAUA,IAAI,EAAE;MACb,IAAI,OAAOmB,QAAQ,CAACnB,IAAI,CAAC,KAAK,UAAU,EAAE;QACtC9B,OAAO,CAAC8C,SAAS,CAAC,CAACvG,SAAS,CAACuF,IAAI,CAAC,GAAG,YAAY;UAC7C,OAAO,IAAI,CAACe,mBAAmB,CAAC,CAACf,IAAI,CAAC,CAAChH,KAAK,CAAC,IAAI,CAAC+H,mBAAmB,CAAC,EAAE3N,SAAS,CAAC;QACtF,CAAC;MACL,CAAC,MACI;QACDiJ,oBAAoB,CAAC6B,OAAO,CAAC8C,SAAS,CAAC,CAACvG,SAAS,EAAEuF,IAAI,EAAE;UACrDrB,GAAG,EAAE,SAAAA,CAAU9M,EAAE,EAAE;YACf,IAAI,OAAOA,EAAE,KAAK,UAAU,EAAE;cAC1B,IAAI,CAACkP,mBAAmB,CAAC,CAACf,IAAI,CAAC,GAAGtD,mBAAmB,CAAC7K,EAAE,EAAEmP,SAAS,GAAG,GAAG,GAAGhB,IAAI,CAAC;cACjF;cACA;cACA;cACApD,qBAAqB,CAAC,IAAI,CAACmE,mBAAmB,CAAC,CAACf,IAAI,CAAC,EAAEnO,EAAE,CAAC;YAC9D,CAAC,MACI;cACD,IAAI,CAACkP,mBAAmB,CAAC,CAACf,IAAI,CAAC,GAAGnO,EAAE;YACxC;UACJ,CAAC;UACDa,GAAG,EAAE,SAAAA,CAAA,EAAY;YACb,OAAO,IAAI,CAACqO,mBAAmB,CAAC,CAACf,IAAI,CAAC;UAC1C;QACJ,CAAC,CAAC;MACN;IACJ,CAAC,EAACA,IAAI,CAAC;EACX;EACA,KAAKA,IAAI,IAAIiB,aAAa,EAAE;IACxB,IAAIjB,IAAI,KAAK,WAAW,IAAIiB,aAAa,CAAClP,cAAc,CAACiO,IAAI,CAAC,EAAE;MAC5D9B,OAAO,CAAC8C,SAAS,CAAC,CAAChB,IAAI,CAAC,GAAGiB,aAAa,CAACjB,IAAI,CAAC;IAClD;EACJ;AACJ;AACA,SAASlE,WAAWA,CAACvF,MAAM,EAAE5F,IAAI,EAAEyQ,OAAO,EAAE;EACxC,IAAIC,KAAK,GAAG9K,MAAM;EAClB,OAAO8K,KAAK,IAAI,CAACA,KAAK,CAACtP,cAAc,CAACpB,IAAI,CAAC,EAAE;IACzC0Q,KAAK,GAAGnE,oBAAoB,CAACmE,KAAK,CAAC;EACvC;EACA,IAAI,CAACA,KAAK,IAAI9K,MAAM,CAAC5F,IAAI,CAAC,EAAE;IACxB;IACA0Q,KAAK,GAAG9K,MAAM;EAClB;EACA,MAAM+K,YAAY,GAAGvD,UAAU,CAACpN,IAAI,CAAC;EACrC,IAAI0F,QAAQ,GAAG,IAAI;EACnB,IAAIgL,KAAK,KAAK,EAAEhL,QAAQ,GAAGgL,KAAK,CAACC,YAAY,CAAC,CAAC,IAAI,CAACD,KAAK,CAACtP,cAAc,CAACuP,YAAY,CAAC,CAAC,EAAE;IACrFjL,QAAQ,GAAGgL,KAAK,CAACC,YAAY,CAAC,GAAGD,KAAK,CAAC1Q,IAAI,CAAC;IAC5C;IACA;IACA,MAAMsP,IAAI,GAAGoB,KAAK,IAAI/E,8BAA8B,CAAC+E,KAAK,EAAE1Q,IAAI,CAAC;IACjE,IAAI4N,kBAAkB,CAAC0B,IAAI,CAAC,EAAE;MAC1B,MAAMsB,aAAa,GAAGH,OAAO,CAAC/K,QAAQ,EAAEiL,YAAY,EAAE3Q,IAAI,CAAC;MAC3D0Q,KAAK,CAAC1Q,IAAI,CAAC,GAAG,YAAY;QACtB,OAAO4Q,aAAa,CAAC,IAAI,EAAEnO,SAAS,CAAC;MACzC,CAAC;MACDwJ,qBAAqB,CAACyE,KAAK,CAAC1Q,IAAI,CAAC,EAAE0F,QAAQ,CAAC;IAChD;EACJ;EACA,OAAOA,QAAQ;AACnB;AACA;AACA,SAAS4F,cAAcA,CAAC8D,GAAG,EAAEyB,QAAQ,EAAEC,WAAW,EAAE;EAChD,IAAIC,SAAS,GAAG,IAAI;EACpB,SAAS1M,YAAYA,CAACpB,IAAI,EAAE;IACxB,MAAMa,IAAI,GAAGb,IAAI,CAACa,IAAI;IACtBA,IAAI,CAACsF,IAAI,CAACtF,IAAI,CAACkN,KAAK,CAAC,GAAG,YAAY;MAChC/N,IAAI,CAACJ,MAAM,CAACwF,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;IACtC,CAAC;IACDsO,SAAS,CAAC1I,KAAK,CAACvE,IAAI,CAAC8B,MAAM,EAAE9B,IAAI,CAACsF,IAAI,CAAC;IACvC,OAAOnG,IAAI;EACf;EACA8N,SAAS,GAAG5F,WAAW,CAACiE,GAAG,EAAEyB,QAAQ,EAAGnL,QAAQ,IAAK,UAAUuD,IAAI,EAAEG,IAAI,EAAE;IACvE,MAAM6H,IAAI,GAAGH,WAAW,CAAC7H,IAAI,EAAEG,IAAI,CAAC;IACpC,IAAI6H,IAAI,CAACD,KAAK,IAAI,CAAC,IAAI,OAAO5H,IAAI,CAAC6H,IAAI,CAACD,KAAK,CAAC,KAAK,UAAU,EAAE;MAC3D,OAAO7D,gCAAgC,CAAC8D,IAAI,CAACjR,IAAI,EAAEoJ,IAAI,CAAC6H,IAAI,CAACD,KAAK,CAAC,EAAEC,IAAI,EAAE5M,YAAY,CAAC;IAC5F,CAAC,MACI;MACD;MACA,OAAOqB,QAAQ,CAAC2C,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;IACrC;EACJ,CAAC,CAAC;AACN;AACA,SAAS6C,qBAAqBA,CAAC4B,OAAO,EAAEqD,QAAQ,EAAE;EAC9CrD,OAAO,CAACT,UAAU,CAAC,kBAAkB,CAAC,CAAC,GAAG8D,QAAQ;AACtD;AACA,IAAIC,kBAAkB,GAAG,KAAK;AAC9B,IAAIC,QAAQ,GAAG,KAAK;AACpB,SAASC,IAAIA,CAAA,EAAG;EACZ,IAAI;IACA,MAAMC,EAAE,GAAGhE,cAAc,CAACiE,SAAS,CAACC,SAAS;IAC7C,IAAIF,EAAE,CAACG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAIH,EAAE,CAACG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;MAC7D,OAAO,IAAI;IACf;EACJ,CAAC,CACD,OAAO3O,KAAK,EAAE,CACd;EACA,OAAO,KAAK;AAChB;AACA,SAAS0I,UAAUA,CAAA,EAAG;EAClB,IAAI2F,kBAAkB,EAAE;IACpB,OAAOC,QAAQ;EACnB;EACAD,kBAAkB,GAAG,IAAI;EACzB,IAAI;IACA,MAAMG,EAAE,GAAGhE,cAAc,CAACiE,SAAS,CAACC,SAAS;IAC7C,IAAIF,EAAE,CAACG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAIH,EAAE,CAACG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAIH,EAAE,CAACG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3FL,QAAQ,GAAG,IAAI;IACnB;EACJ,CAAC,CACD,OAAOtO,KAAK,EAAE,CACd;EACA,OAAOsO,QAAQ;AACnB;AAEA7Q,IAAI,CAACU,YAAY,CAAC,kBAAkB,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACzD,MAAM/F,8BAA8B,GAAG9B,MAAM,CAACwC,wBAAwB;EACtE,MAAMX,oBAAoB,GAAG7B,MAAM,CAACyC,cAAc;EAClD,SAASqF,sBAAsBA,CAACvC,GAAG,EAAE;IACjC,IAAIA,GAAG,IAAIA,GAAG,CAACzF,QAAQ,KAAKE,MAAM,CAACC,SAAS,CAACH,QAAQ,EAAE;MACnD,MAAM0G,SAAS,GAAGjB,GAAG,CAAC3N,WAAW,IAAI2N,GAAG,CAAC3N,WAAW,CAACzB,IAAI;MACzD,OAAO,CAACqQ,SAAS,GAAGA,SAAS,GAAG,EAAE,IAAI,IAAI,GAAGuB,IAAI,CAACC,SAAS,CAACzC,GAAG,CAAC;IACpE;IACA,OAAOA,GAAG,GAAGA,GAAG,CAACzF,QAAQ,CAAC,CAAC,GAAGE,MAAM,CAACC,SAAS,CAACH,QAAQ,CAACR,IAAI,CAACiG,GAAG,CAAC;EACrE;EACA,MAAMhP,UAAU,GAAGsR,GAAG,CAAC7G,MAAM;EAC7B,MAAMiH,sBAAsB,GAAG,EAAE;EACjC,MAAMC,yCAAyC,GAAGlS,MAAM,CAACO,UAAU,CAAC,6CAA6C,CAAC,CAAC,KAAK,IAAI;EAC5H,MAAM6J,aAAa,GAAG7J,UAAU,CAAC,SAAS,CAAC;EAC3C,MAAM8J,UAAU,GAAG9J,UAAU,CAAC,MAAM,CAAC;EACrC,MAAM4R,aAAa,GAAG,mBAAmB;EACzCN,GAAG,CAAC/G,gBAAgB,GAAIsH,CAAC,IAAK;IAC1B,IAAIP,GAAG,CAAC1G,iBAAiB,CAAC,CAAC,EAAE;MACzB,MAAMkH,SAAS,GAAGD,CAAC,IAAIA,CAAC,CAACC,SAAS;MAClC,IAAIA,SAAS,EAAE;QACXC,OAAO,CAACrP,KAAK,CAAC,8BAA8B,EAAEoP,SAAS,YAAY5R,KAAK,GAAG4R,SAAS,CAACpD,OAAO,GAAGoD,SAAS,EAAE,SAAS,EAAED,CAAC,CAACtR,IAAI,CAACX,IAAI,EAAE,SAAS,EAAEiS,CAAC,CAAChP,IAAI,IAAIgP,CAAC,CAAChP,IAAI,CAACZ,MAAM,EAAE,UAAU,EAAE6P,SAAS,EAAEA,SAAS,YAAY5R,KAAK,GAAG4R,SAAS,CAACE,KAAK,GAAGnO,SAAS,CAAC;MAC1P,CAAC,MACI;QACDkO,OAAO,CAACrP,KAAK,CAACmP,CAAC,CAAC;MACpB;IACJ;EACJ,CAAC;EACDP,GAAG,CAAC9G,kBAAkB,GAAG,MAAM;IAC3B,OAAOkH,sBAAsB,CAACvM,MAAM,EAAE;MAClC,MAAM8M,oBAAoB,GAAGP,sBAAsB,CAACQ,KAAK,CAAC,CAAC;MAC3D,IAAI;QACAD,oBAAoB,CAAC1R,IAAI,CAAC6B,UAAU,CAAC,MAAM;UACvC,IAAI6P,oBAAoB,CAACE,aAAa,EAAE;YACpC,MAAMF,oBAAoB,CAACH,SAAS;UACxC;UACA,MAAMG,oBAAoB;QAC9B,CAAC,CAAC;MACN,CAAC,CACD,OAAOvP,KAAK,EAAE;QACV0P,wBAAwB,CAAC1P,KAAK,CAAC;MACnC;IACJ;EACJ,CAAC;EACD,MAAM2P,0CAA0C,GAAGrS,UAAU,CAAC,kCAAkC,CAAC;EACjG,SAASoS,wBAAwBA,CAACP,CAAC,EAAE;IACjCP,GAAG,CAAC/G,gBAAgB,CAACsH,CAAC,CAAC;IACvB,IAAI;MACA,MAAMS,OAAO,GAAGnS,IAAI,CAACkS,0CAA0C,CAAC;MAChE,IAAI,OAAOC,OAAO,KAAK,UAAU,EAAE;QAC/BA,OAAO,CAACvJ,IAAI,CAAC,IAAI,EAAE8I,CAAC,CAAC;MACzB;IACJ,CAAC,CACD,OAAOtN,GAAG,EAAE,CACZ;EACJ;EACA,SAASgO,UAAUA,CAAClK,KAAK,EAAE;IACvB,OAAOA,KAAK,IAAIA,KAAK,CAACmK,IAAI;EAC9B;EACA,SAASC,iBAAiBA,CAACpK,KAAK,EAAE;IAC9B,OAAOA,KAAK;EAChB;EACA,SAASqK,gBAAgBA,CAACZ,SAAS,EAAE;IACjC,OAAOa,gBAAgB,CAACC,MAAM,CAACd,SAAS,CAAC;EAC7C;EACA,MAAMe,WAAW,GAAG7S,UAAU,CAAC,OAAO,CAAC;EACvC,MAAM8S,WAAW,GAAG9S,UAAU,CAAC,OAAO,CAAC;EACvC,MAAM+S,aAAa,GAAG/S,UAAU,CAAC,SAAS,CAAC;EAC3C,MAAMgT,wBAAwB,GAAGhT,UAAU,CAAC,oBAAoB,CAAC;EACjE,MAAMiT,wBAAwB,GAAGjT,UAAU,CAAC,oBAAoB,CAAC;EACjE,MAAMiC,MAAM,GAAG,cAAc;EAC7B,MAAMiR,UAAU,GAAG,IAAI;EACvB,MAAMC,QAAQ,GAAG,IAAI;EACrB,MAAMC,QAAQ,GAAG,KAAK;EACtB,MAAMC,iBAAiB,GAAG,CAAC;EAC3B,SAASC,YAAYA,CAACC,OAAO,EAAExQ,KAAK,EAAE;IAClC,OAAQyQ,CAAC,IAAK;MACV,IAAI;QACAC,cAAc,CAACF,OAAO,EAAExQ,KAAK,EAAEyQ,CAAC,CAAC;MACrC,CAAC,CACD,OAAOjP,GAAG,EAAE;QACRkP,cAAc,CAACF,OAAO,EAAE,KAAK,EAAEhP,GAAG,CAAC;MACvC;MACA;IACJ,CAAC;EACL;;EACA,MAAMmP,IAAI,GAAG,SAAAA,CAAA,EAAY;IACrB,IAAIC,SAAS,GAAG,KAAK;IACrB,OAAO,SAASC,OAAOA,CAACC,eAAe,EAAE;MACrC,OAAO,YAAY;QACf,IAAIF,SAAS,EAAE;UACX;QACJ;QACAA,SAAS,GAAG,IAAI;QAChBE,eAAe,CAAC5L,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;MAC1C,CAAC;IACL,CAAC;EACL,CAAC;EACD,MAAMyR,UAAU,GAAG,8BAA8B;EACjD,MAAMC,yBAAyB,GAAG/T,UAAU,CAAC,kBAAkB,CAAC;EAChE;EACA,SAASyT,cAAcA,CAACF,OAAO,EAAExQ,KAAK,EAAEsF,KAAK,EAAE;IAC3C,MAAM2L,WAAW,GAAGN,IAAI,CAAC,CAAC;IAC1B,IAAIH,OAAO,KAAKlL,KAAK,EAAE;MACnB,MAAM,IAAI4L,SAAS,CAACH,UAAU,CAAC;IACnC;IACA,IAAIP,OAAO,CAACV,WAAW,CAAC,KAAKK,UAAU,EAAE;MACrC;MACA,IAAIV,IAAI,GAAG,IAAI;MACf,IAAI;QACA,IAAI,OAAOnK,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;UAC1DmK,IAAI,GAAGnK,KAAK,IAAIA,KAAK,CAACmK,IAAI;QAC9B;MACJ,CAAC,CACD,OAAOjO,GAAG,EAAE;QACRyP,WAAW,CAAC,MAAM;UACdP,cAAc,CAACF,OAAO,EAAE,KAAK,EAAEhP,GAAG,CAAC;QACvC,CAAC,CAAC,CAAC,CAAC;QACJ,OAAOgP,OAAO;MAClB;MACA;MACA,IAAIxQ,KAAK,KAAKqQ,QAAQ,IAAI/K,KAAK,YAAYsK,gBAAgB,IACvDtK,KAAK,CAACrH,cAAc,CAAC6R,WAAW,CAAC,IAAIxK,KAAK,CAACrH,cAAc,CAAC8R,WAAW,CAAC,IACtEzK,KAAK,CAACwK,WAAW,CAAC,KAAKK,UAAU,EAAE;QACnCgB,oBAAoB,CAAC7L,KAAK,CAAC;QAC3BoL,cAAc,CAACF,OAAO,EAAElL,KAAK,CAACwK,WAAW,CAAC,EAAExK,KAAK,CAACyK,WAAW,CAAC,CAAC;MACnE,CAAC,MACI,IAAI/P,KAAK,KAAKqQ,QAAQ,IAAI,OAAOZ,IAAI,KAAK,UAAU,EAAE;QACvD,IAAI;UACAA,IAAI,CAACzJ,IAAI,CAACV,KAAK,EAAE2L,WAAW,CAACV,YAAY,CAACC,OAAO,EAAExQ,KAAK,CAAC,CAAC,EAAEiR,WAAW,CAACV,YAAY,CAACC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1G,CAAC,CACD,OAAOhP,GAAG,EAAE;UACRyP,WAAW,CAAC,MAAM;YACdP,cAAc,CAACF,OAAO,EAAE,KAAK,EAAEhP,GAAG,CAAC;UACvC,CAAC,CAAC,CAAC,CAAC;QACR;MACJ,CAAC,MACI;QACDgP,OAAO,CAACV,WAAW,CAAC,GAAG9P,KAAK;QAC5B,MAAMuH,KAAK,GAAGiJ,OAAO,CAACT,WAAW,CAAC;QAClCS,OAAO,CAACT,WAAW,CAAC,GAAGzK,KAAK;QAC5B,IAAIkL,OAAO,CAACR,aAAa,CAAC,KAAKA,aAAa,EAAE;UAC1C;UACA,IAAIhQ,KAAK,KAAKoQ,QAAQ,EAAE;YACpB;YACA;YACAI,OAAO,CAACV,WAAW,CAAC,GAAGU,OAAO,CAACN,wBAAwB,CAAC;YACxDM,OAAO,CAACT,WAAW,CAAC,GAAGS,OAAO,CAACP,wBAAwB,CAAC;UAC5D;QACJ;QACA;QACA;QACA,IAAIjQ,KAAK,KAAKqQ,QAAQ,IAAI/K,KAAK,YAAYnI,KAAK,EAAE;UAC9C;UACA,MAAMiU,KAAK,GAAGhU,IAAI,CAACQ,WAAW,IAAIR,IAAI,CAACQ,WAAW,CAAC+C,IAAI,IACnDvD,IAAI,CAACQ,WAAW,CAAC+C,IAAI,CAACkO,aAAa,CAAC;UACxC,IAAIuC,KAAK,EAAE;YACP;YACA7I,oBAAoB,CAACjD,KAAK,EAAE0L,yBAAyB,EAAE;cAAE3E,YAAY,EAAE,IAAI;cAAED,UAAU,EAAE,KAAK;cAAExB,QAAQ,EAAE,IAAI;cAAEtF,KAAK,EAAE8L;YAAM,CAAC,CAAC;UACnI;QACJ;QACA,KAAK,IAAIjP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoF,KAAK,CAACnF,MAAM,GAAG;UAC/BiP,uBAAuB,CAACb,OAAO,EAAEjJ,KAAK,CAACpF,CAAC,EAAE,CAAC,EAAEoF,KAAK,CAACpF,CAAC,EAAE,CAAC,EAAEoF,KAAK,CAACpF,CAAC,EAAE,CAAC,EAAEoF,KAAK,CAACpF,CAAC,EAAE,CAAC,CAAC;QACpF;QACA,IAAIoF,KAAK,CAACnF,MAAM,IAAI,CAAC,IAAIpC,KAAK,IAAIqQ,QAAQ,EAAE;UACxCG,OAAO,CAACV,WAAW,CAAC,GAAGQ,iBAAiB;UACxC,IAAIpB,oBAAoB,GAAG5J,KAAK;UAChC,IAAI;YACA;YACA;YACA;YACA,MAAM,IAAInI,KAAK,CAAC,yBAAyB,GAAGqR,sBAAsB,CAAClJ,KAAK,CAAC,IACpEA,KAAK,IAAIA,KAAK,CAAC2J,KAAK,GAAG,IAAI,GAAG3J,KAAK,CAAC2J,KAAK,GAAG,EAAE,CAAC,CAAC;UACzD,CAAC,CACD,OAAOzN,GAAG,EAAE;YACR0N,oBAAoB,GAAG1N,GAAG;UAC9B;UACA,IAAIoN,yCAAyC,EAAE;YAC3C;YACA;YACAM,oBAAoB,CAACE,aAAa,GAAG,IAAI;UAC7C;UACAF,oBAAoB,CAACH,SAAS,GAAGzJ,KAAK;UACtC4J,oBAAoB,CAACsB,OAAO,GAAGA,OAAO;UACtCtB,oBAAoB,CAAC1R,IAAI,GAAGJ,IAAI,CAACK,OAAO;UACxCyR,oBAAoB,CAACpP,IAAI,GAAG1C,IAAI,CAACQ,WAAW;UAC5C+Q,sBAAsB,CAACvJ,IAAI,CAAC8J,oBAAoB,CAAC;UACjDX,GAAG,CAAC9M,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC7B;MACJ;IACJ;IACA;IACA,OAAO+O,OAAO;EAClB;EACA,MAAMc,yBAAyB,GAAGrU,UAAU,CAAC,yBAAyB,CAAC;EACvE,SAASkU,oBAAoBA,CAACX,OAAO,EAAE;IACnC,IAAIA,OAAO,CAACV,WAAW,CAAC,KAAKQ,iBAAiB,EAAE;MAC5C;MACA;MACA;MACA;MACA;MACA,IAAI;QACA,MAAMf,OAAO,GAAGnS,IAAI,CAACkU,yBAAyB,CAAC;QAC/C,IAAI/B,OAAO,IAAI,OAAOA,OAAO,KAAK,UAAU,EAAE;UAC1CA,OAAO,CAACvJ,IAAI,CAAC,IAAI,EAAE;YAAE+I,SAAS,EAAEyB,OAAO,CAACT,WAAW,CAAC;YAAES,OAAO,EAAEA;UAAQ,CAAC,CAAC;QAC7E;MACJ,CAAC,CACD,OAAOhP,GAAG,EAAE,CACZ;MACAgP,OAAO,CAACV,WAAW,CAAC,GAAGO,QAAQ;MAC/B,KAAK,IAAIlO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwM,sBAAsB,CAACvM,MAAM,EAAED,CAAC,EAAE,EAAE;QACpD,IAAIqO,OAAO,KAAK7B,sBAAsB,CAACxM,CAAC,CAAC,CAACqO,OAAO,EAAE;UAC/C7B,sBAAsB,CAAC4C,MAAM,CAACpP,CAAC,EAAE,CAAC,CAAC;QACvC;MACJ;IACJ;EACJ;EACA,SAASkP,uBAAuBA,CAACb,OAAO,EAAEhT,IAAI,EAAEgU,YAAY,EAAEC,WAAW,EAAEC,UAAU,EAAE;IACnFP,oBAAoB,CAACX,OAAO,CAAC;IAC7B,MAAMmB,YAAY,GAAGnB,OAAO,CAACV,WAAW,CAAC;IACzC,MAAMvN,QAAQ,GAAGoP,YAAY,GACxB,OAAOF,WAAW,KAAK,UAAU,GAAIA,WAAW,GAAG/B,iBAAiB,GACpE,OAAOgC,UAAU,KAAK,UAAU,GAAIA,UAAU,GAC3C/B,gBAAgB;IACxBnS,IAAI,CAACiE,iBAAiB,CAACvC,MAAM,EAAE,MAAM;MACjC,IAAI;QACA,MAAM0S,kBAAkB,GAAGpB,OAAO,CAACT,WAAW,CAAC;QAC/C,MAAM8B,gBAAgB,GAAG,CAAC,CAACL,YAAY,IAAIxB,aAAa,KAAKwB,YAAY,CAACxB,aAAa,CAAC;QACxF,IAAI6B,gBAAgB,EAAE;UAClB;UACAL,YAAY,CAACvB,wBAAwB,CAAC,GAAG2B,kBAAkB;UAC3DJ,YAAY,CAACtB,wBAAwB,CAAC,GAAGyB,YAAY;QACzD;QACA;QACA,MAAMrM,KAAK,GAAG9H,IAAI,CAAC+B,GAAG,CAACgD,QAAQ,EAAEzB,SAAS,EAAE+Q,gBAAgB,IAAItP,QAAQ,KAAKoN,gBAAgB,IAAIpN,QAAQ,KAAKmN,iBAAiB,GAC3H,EAAE,GACF,CAACkC,kBAAkB,CAAC,CAAC;QACzBlB,cAAc,CAACc,YAAY,EAAE,IAAI,EAAElM,KAAK,CAAC;MAC7C,CAAC,CACD,OAAO3F,KAAK,EAAE;QACV;QACA+Q,cAAc,CAACc,YAAY,EAAE,KAAK,EAAE7R,KAAK,CAAC;MAC9C;IACJ,CAAC,EAAE6R,YAAY,CAAC;EACpB;EACA,MAAMM,4BAA4B,GAAG,+CAA+C;EACpF,MAAMlK,IAAI,GAAG,SAAAA,CAAA,EAAY,CAAE,CAAC;EAC5B,MAAMmK,cAAc,GAAGrV,MAAM,CAACqV,cAAc;EAC5C,MAAMnC,gBAAgB,CAAC;IACnB,OAAOpJ,QAAQA,CAAA,EAAG;MACd,OAAOsL,4BAA4B;IACvC;IACA,OAAOzK,OAAOA,CAAC/B,KAAK,EAAE;MAClB,OAAOoL,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAEN,QAAQ,EAAE9K,KAAK,CAAC;IAC1D;IACA,OAAOuK,MAAMA,CAAClQ,KAAK,EAAE;MACjB,OAAO+Q,cAAc,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAEL,QAAQ,EAAE1Q,KAAK,CAAC;IAC1D;IACA,OAAOqS,GAAGA,CAACC,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,IAAI,OAAOA,MAAM,CAACC,MAAM,CAACC,QAAQ,CAAC,KAAK,UAAU,EAAE;QAC1D,OAAOC,OAAO,CAACvC,MAAM,CAAC,IAAIkC,cAAc,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;MAC/E;MACA,MAAMM,QAAQ,GAAG,EAAE;MACnB,IAAInQ,KAAK,GAAG,CAAC;MACb,IAAI;QACA,KAAK,IAAIuO,CAAC,IAAIwB,MAAM,EAAE;UAClB/P,KAAK,EAAE;UACPmQ,QAAQ,CAACjN,IAAI,CAACwK,gBAAgB,CAACvI,OAAO,CAACoJ,CAAC,CAAC,CAAC;QAC9C;MACJ,CAAC,CACD,OAAOjP,GAAG,EAAE;QACR,OAAO4Q,OAAO,CAACvC,MAAM,CAAC,IAAIkC,cAAc,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;MAC/E;MACA,IAAI7P,KAAK,KAAK,CAAC,EAAE;QACb,OAAOkQ,OAAO,CAACvC,MAAM,CAAC,IAAIkC,cAAc,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;MAC/E;MACA,IAAIO,QAAQ,GAAG,KAAK;MACpB,MAAMC,MAAM,GAAG,EAAE;MACjB,OAAO,IAAI3C,gBAAgB,CAAC,CAACvI,OAAO,EAAEwI,MAAM,KAAK;QAC7C,KAAK,IAAI1N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkQ,QAAQ,CAACjQ,MAAM,EAAED,CAAC,EAAE,EAAE;UACtCkQ,QAAQ,CAAClQ,CAAC,CAAC,CAACsN,IAAI,CAACgB,CAAC,IAAI;YAClB,IAAI6B,QAAQ,EAAE;cACV;YACJ;YACAA,QAAQ,GAAG,IAAI;YACfjL,OAAO,CAACoJ,CAAC,CAAC;UACd,CAAC,EAAEjP,GAAG,IAAI;YACN+Q,MAAM,CAACnN,IAAI,CAAC5D,GAAG,CAAC;YAChBU,KAAK,EAAE;YACP,IAAIA,KAAK,KAAK,CAAC,EAAE;cACboQ,QAAQ,GAAG,IAAI;cACfzC,MAAM,CAAC,IAAIkC,cAAc,CAACQ,MAAM,EAAE,4BAA4B,CAAC,CAAC;YACpE;UACJ,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;IAEA,OAAOC,IAAIA,CAACP,MAAM,EAAE;MAChB,IAAI5K,OAAO;MACX,IAAIwI,MAAM;MACV,IAAIW,OAAO,GAAG,IAAI,IAAI,CAAC,CAACiC,GAAG,EAAEC,GAAG,KAAK;QACjCrL,OAAO,GAAGoL,GAAG;QACb5C,MAAM,GAAG6C,GAAG;MAChB,CAAC,CAAC;MACF,SAASC,SAASA,CAACrN,KAAK,EAAE;QACtB+B,OAAO,CAAC/B,KAAK,CAAC;MAClB;MACA,SAASsN,QAAQA,CAACjT,KAAK,EAAE;QACrBkQ,MAAM,CAAClQ,KAAK,CAAC;MACjB;MACA,KAAK,IAAI2F,KAAK,IAAI2M,MAAM,EAAE;QACtB,IAAI,CAACzC,UAAU,CAAClK,KAAK,CAAC,EAAE;UACpBA,KAAK,GAAG,IAAI,CAAC+B,OAAO,CAAC/B,KAAK,CAAC;QAC/B;QACAA,KAAK,CAACmK,IAAI,CAACkD,SAAS,EAAEC,QAAQ,CAAC;MACnC;MACA,OAAOpC,OAAO;IAClB;IACA,OAAOqC,GAAGA,CAACZ,MAAM,EAAE;MACf,OAAOrC,gBAAgB,CAACkD,eAAe,CAACb,MAAM,CAAC;IACnD;IACA,OAAOc,UAAUA,CAACd,MAAM,EAAE;MACtB,MAAMe,CAAC,GAAG,IAAI,IAAI,IAAI,CAACrM,SAAS,YAAYiJ,gBAAgB,GAAG,IAAI,GAAGA,gBAAgB;MACtF,OAAOoD,CAAC,CAACF,eAAe,CAACb,MAAM,EAAE;QAC7BgB,YAAY,EAAG3N,KAAK,KAAM;UAAE4N,MAAM,EAAE,WAAW;UAAE5N;QAAM,CAAC,CAAC;QACzD6N,aAAa,EAAG3R,GAAG,KAAM;UAAE0R,MAAM,EAAE,UAAU;UAAEE,MAAM,EAAE5R;QAAI,CAAC;MAChE,CAAC,CAAC;IACN;IACA,OAAOsR,eAAeA,CAACb,MAAM,EAAEhT,QAAQ,EAAE;MACrC,IAAIoI,OAAO;MACX,IAAIwI,MAAM;MACV,IAAIW,OAAO,GAAG,IAAI,IAAI,CAAC,CAACiC,GAAG,EAAEC,GAAG,KAAK;QACjCrL,OAAO,GAAGoL,GAAG;QACb5C,MAAM,GAAG6C,GAAG;MAChB,CAAC,CAAC;MACF;MACA,IAAIW,eAAe,GAAG,CAAC;MACvB,IAAIC,UAAU,GAAG,CAAC;MAClB,MAAMC,cAAc,GAAG,EAAE;MACzB,KAAK,IAAIjO,KAAK,IAAI2M,MAAM,EAAE;QACtB,IAAI,CAACzC,UAAU,CAAClK,KAAK,CAAC,EAAE;UACpBA,KAAK,GAAG,IAAI,CAAC+B,OAAO,CAAC/B,KAAK,CAAC;QAC/B;QACA,MAAMkO,aAAa,GAAGF,UAAU;QAChC,IAAI;UACAhO,KAAK,CAACmK,IAAI,CAAEnK,KAAK,IAAK;YAClBiO,cAAc,CAACC,aAAa,CAAC,GAAGvU,QAAQ,GAAGA,QAAQ,CAACgU,YAAY,CAAC3N,KAAK,CAAC,GAAGA,KAAK;YAC/E+N,eAAe,EAAE;YACjB,IAAIA,eAAe,KAAK,CAAC,EAAE;cACvBhM,OAAO,CAACkM,cAAc,CAAC;YAC3B;UACJ,CAAC,EAAG/R,GAAG,IAAK;YACR,IAAI,CAACvC,QAAQ,EAAE;cACX4Q,MAAM,CAACrO,GAAG,CAAC;YACf,CAAC,MACI;cACD+R,cAAc,CAACC,aAAa,CAAC,GAAGvU,QAAQ,CAACkU,aAAa,CAAC3R,GAAG,CAAC;cAC3D6R,eAAe,EAAE;cACjB,IAAIA,eAAe,KAAK,CAAC,EAAE;gBACvBhM,OAAO,CAACkM,cAAc,CAAC;cAC3B;YACJ;UACJ,CAAC,CAAC;QACN,CAAC,CACD,OAAOE,OAAO,EAAE;UACZ5D,MAAM,CAAC4D,OAAO,CAAC;QACnB;QACAJ,eAAe,EAAE;QACjBC,UAAU,EAAE;MAChB;MACA;MACAD,eAAe,IAAI,CAAC;MACpB,IAAIA,eAAe,KAAK,CAAC,EAAE;QACvBhM,OAAO,CAACkM,cAAc,CAAC;MAC3B;MACA,OAAO/C,OAAO;IAClB;IACAlS,WAAWA,CAACoV,QAAQ,EAAE;MAClB,MAAMlD,OAAO,GAAG,IAAI;MACpB,IAAI,EAAEA,OAAO,YAAYZ,gBAAgB,CAAC,EAAE;QACxC,MAAM,IAAIzS,KAAK,CAAC,gCAAgC,CAAC;MACrD;MACAqT,OAAO,CAACV,WAAW,CAAC,GAAGK,UAAU;MACjCK,OAAO,CAACT,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;MAC3B,IAAI;QACA,MAAMkB,WAAW,GAAGN,IAAI,CAAC,CAAC;QAC1B+C,QAAQ,IACJA,QAAQ,CAACzC,WAAW,CAACV,YAAY,CAACC,OAAO,EAAEJ,QAAQ,CAAC,CAAC,EAAEa,WAAW,CAACV,YAAY,CAACC,OAAO,EAAEH,QAAQ,CAAC,CAAC,CAAC;MAC5G,CAAC,CACD,OAAO1Q,KAAK,EAAE;QACV+Q,cAAc,CAACF,OAAO,EAAE,KAAK,EAAE7Q,KAAK,CAAC;MACzC;IACJ;IACA,KAAKuS,MAAM,CAACyB,WAAW,IAAI;MACvB,OAAO,SAAS;IACpB;IACA,KAAKzB,MAAM,CAAC0B,OAAO,IAAI;MACnB,OAAOhE,gBAAgB;IAC3B;IACAH,IAAIA,CAACgC,WAAW,EAAEC,UAAU,EAAE;MAC1B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAImC,CAAC,GAAG,IAAI,CAACvV,WAAW,GAAG4T,MAAM,CAAC0B,OAAO,CAAC;MAC1C,IAAI,CAACC,CAAC,IAAI,OAAOA,CAAC,KAAK,UAAU,EAAE;QAC/BA,CAAC,GAAG,IAAI,CAACvV,WAAW,IAAIsR,gBAAgB;MAC5C;MACA,MAAM4B,YAAY,GAAG,IAAIqC,CAAC,CAACjM,IAAI,CAAC;MAChC,MAAMpK,IAAI,GAAGJ,IAAI,CAACK,OAAO;MACzB,IAAI,IAAI,CAACqS,WAAW,CAAC,IAAIK,UAAU,EAAE;QACjC,IAAI,CAACJ,WAAW,CAAC,CAAC3K,IAAI,CAAC5H,IAAI,EAAEgU,YAAY,EAAEC,WAAW,EAAEC,UAAU,CAAC;MACvE,CAAC,MACI;QACDL,uBAAuB,CAAC,IAAI,EAAE7T,IAAI,EAAEgU,YAAY,EAAEC,WAAW,EAAEC,UAAU,CAAC;MAC9E;MACA,OAAOF,YAAY;IACvB;IACAsC,KAAKA,CAACpC,UAAU,EAAE;MACd,OAAO,IAAI,CAACjC,IAAI,CAAC,IAAI,EAAEiC,UAAU,CAAC;IACtC;IACAqC,OAAOA,CAACC,SAAS,EAAE;MACf;MACA,IAAIH,CAAC,GAAG,IAAI,CAACvV,WAAW,GAAG4T,MAAM,CAAC0B,OAAO,CAAC;MAC1C,IAAI,CAACC,CAAC,IAAI,OAAOA,CAAC,KAAK,UAAU,EAAE;QAC/BA,CAAC,GAAGjE,gBAAgB;MACxB;MACA,MAAM4B,YAAY,GAAG,IAAIqC,CAAC,CAACjM,IAAI,CAAC;MAChC4J,YAAY,CAACxB,aAAa,CAAC,GAAGA,aAAa;MAC3C,MAAMxS,IAAI,GAAGJ,IAAI,CAACK,OAAO;MACzB,IAAI,IAAI,CAACqS,WAAW,CAAC,IAAIK,UAAU,EAAE;QACjC,IAAI,CAACJ,WAAW,CAAC,CAAC3K,IAAI,CAAC5H,IAAI,EAAEgU,YAAY,EAAEwC,SAAS,EAAEA,SAAS,CAAC;MACpE,CAAC,MACI;QACD3C,uBAAuB,CAAC,IAAI,EAAE7T,IAAI,EAAEgU,YAAY,EAAEwC,SAAS,EAAEA,SAAS,CAAC;MAC3E;MACA,OAAOxC,YAAY;IACvB;EACJ;EACA;EACA;EACA5B,gBAAgB,CAAC,SAAS,CAAC,GAAGA,gBAAgB,CAACvI,OAAO;EACtDuI,gBAAgB,CAAC,QAAQ,CAAC,GAAGA,gBAAgB,CAACC,MAAM;EACpDD,gBAAgB,CAAC,MAAM,CAAC,GAAGA,gBAAgB,CAAC4C,IAAI;EAChD5C,gBAAgB,CAAC,KAAK,CAAC,GAAGA,gBAAgB,CAACiD,GAAG;EAC9C,MAAMoB,aAAa,GAAGvX,MAAM,CAACoK,aAAa,CAAC,GAAGpK,MAAM,CAAC,SAAS,CAAC;EAC/DA,MAAM,CAAC,SAAS,CAAC,GAAGkT,gBAAgB;EACpC,MAAMsE,iBAAiB,GAAGjX,UAAU,CAAC,aAAa,CAAC;EACnD,SAASiL,SAASA,CAACiM,IAAI,EAAE;IACrB,MAAM5G,KAAK,GAAG4G,IAAI,CAACxN,SAAS;IAC5B,MAAMuF,IAAI,GAAG1D,8BAA8B,CAAC+E,KAAK,EAAE,MAAM,CAAC;IAC1D,IAAIrB,IAAI,KAAKA,IAAI,CAACtB,QAAQ,KAAK,KAAK,IAAI,CAACsB,IAAI,CAACG,YAAY,CAAC,EAAE;MACzD;MACA;MACA;IACJ;IACA,MAAM+H,YAAY,GAAG7G,KAAK,CAACkC,IAAI;IAC/B;IACAlC,KAAK,CAACxG,UAAU,CAAC,GAAGqN,YAAY;IAChCD,IAAI,CAACxN,SAAS,CAAC8I,IAAI,GAAG,UAAUkD,SAAS,EAAEC,QAAQ,EAAE;MACjD,MAAMyB,OAAO,GAAG,IAAIzE,gBAAgB,CAAC,CAACvI,OAAO,EAAEwI,MAAM,KAAK;QACtDuE,YAAY,CAACpO,IAAI,CAAC,IAAI,EAAEqB,OAAO,EAAEwI,MAAM,CAAC;MAC5C,CAAC,CAAC;MACF,OAAOwE,OAAO,CAAC5E,IAAI,CAACkD,SAAS,EAAEC,QAAQ,CAAC;IAC5C,CAAC;IACDuB,IAAI,CAACD,iBAAiB,CAAC,GAAG,IAAI;EAClC;EACA3F,GAAG,CAACrG,SAAS,GAAGA,SAAS;EACzB,SAASoM,OAAOA,CAACvW,EAAE,EAAE;IACjB,OAAO,UAAU+H,IAAI,EAAEG,IAAI,EAAE;MACzB,IAAIsO,aAAa,GAAGxW,EAAE,CAACmH,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;MACxC,IAAIsO,aAAa,YAAY3E,gBAAgB,EAAE;QAC3C,OAAO2E,aAAa;MACxB;MACA,IAAIC,IAAI,GAAGD,aAAa,CAACjW,WAAW;MACpC,IAAI,CAACkW,IAAI,CAACN,iBAAiB,CAAC,EAAE;QAC1BhM,SAAS,CAACsM,IAAI,CAAC;MACnB;MACA,OAAOD,aAAa;IACxB,CAAC;EACL;EACA,IAAIN,aAAa,EAAE;IACf/L,SAAS,CAAC+L,aAAa,CAAC;IACxBjM,WAAW,CAACtL,MAAM,EAAE,OAAO,EAAE6F,QAAQ,IAAI+R,OAAO,CAAC/R,QAAQ,CAAC,CAAC;EAC/D;EACA;EACA6P,OAAO,CAAChV,IAAI,CAACH,UAAU,CAAC,uBAAuB,CAAC,CAAC,GAAG0R,sBAAsB;EAC1E,OAAOiB,gBAAgB;AAC3B,CAAC,CAAC;;AAEF;AACA;AACAxS,IAAI,CAACU,YAAY,CAAC,UAAU,EAAGpB,MAAM,IAAK;EACtC;EACA,MAAM+X,wBAAwB,GAAGC,QAAQ,CAAC/N,SAAS,CAACH,QAAQ;EAC5D,MAAMmO,wBAAwB,GAAG1K,UAAU,CAAC,kBAAkB,CAAC;EAC/D,MAAM2K,cAAc,GAAG3K,UAAU,CAAC,SAAS,CAAC;EAC5C,MAAM4K,YAAY,GAAG5K,UAAU,CAAC,OAAO,CAAC;EACxC,MAAM6K,mBAAmB,GAAG,SAAStO,QAAQA,CAAA,EAAG;IAC5C,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;MAC5B,MAAMuO,gBAAgB,GAAG,IAAI,CAACJ,wBAAwB,CAAC;MACvD,IAAII,gBAAgB,EAAE;QAClB,IAAI,OAAOA,gBAAgB,KAAK,UAAU,EAAE;UACxC,OAAON,wBAAwB,CAACzO,IAAI,CAAC+O,gBAAgB,CAAC;QAC1D,CAAC,MACI;UACD,OAAOrO,MAAM,CAACC,SAAS,CAACH,QAAQ,CAACR,IAAI,CAAC+O,gBAAgB,CAAC;QAC3D;MACJ;MACA,IAAI,IAAI,KAAK3C,OAAO,EAAE;QAClB,MAAM4C,aAAa,GAAGtY,MAAM,CAACkY,cAAc,CAAC;QAC5C,IAAII,aAAa,EAAE;UACf,OAAOP,wBAAwB,CAACzO,IAAI,CAACgP,aAAa,CAAC;QACvD;MACJ;MACA,IAAI,IAAI,KAAK7X,KAAK,EAAE;QAChB,MAAM8X,WAAW,GAAGvY,MAAM,CAACmY,YAAY,CAAC;QACxC,IAAII,WAAW,EAAE;UACb,OAAOR,wBAAwB,CAACzO,IAAI,CAACiP,WAAW,CAAC;QACrD;MACJ;IACJ;IACA,OAAOR,wBAAwB,CAACzO,IAAI,CAAC,IAAI,CAAC;EAC9C,CAAC;EACD8O,mBAAmB,CAACH,wBAAwB,CAAC,GAAGF,wBAAwB;EACxEC,QAAQ,CAAC/N,SAAS,CAACH,QAAQ,GAAGsO,mBAAmB;EACjD;EACA,MAAMI,sBAAsB,GAAGxO,MAAM,CAACC,SAAS,CAACH,QAAQ;EACxD,MAAM2O,wBAAwB,GAAG,kBAAkB;EACnDzO,MAAM,CAACC,SAAS,CAACH,QAAQ,GAAG,YAAY;IACpC,IAAI,OAAO4L,OAAO,KAAK,UAAU,IAAI,IAAI,YAAYA,OAAO,EAAE;MAC1D,OAAO+C,wBAAwB;IACnC;IACA,OAAOD,sBAAsB,CAAClP,IAAI,CAAC,IAAI,CAAC;EAC5C,CAAC;AACL,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,IAAIoP,gBAAgB,GAAG,KAAK;AAC5B,IAAI,OAAOnM,MAAM,KAAK,WAAW,EAAE;EAC/B,IAAI;IACA,MAAMrD,OAAO,GAAGc,MAAM,CAACyC,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE;MACjDvK,GAAG,EAAE,SAAAA,CAAA,EAAY;QACbwW,gBAAgB,GAAG,IAAI;MAC3B;IACJ,CAAC,CAAC;IACF;IACA;IACA;IACAnM,MAAM,CAAC4D,gBAAgB,CAAC,MAAM,EAAEjH,OAAO,EAAEA,OAAO,CAAC;IACjDqD,MAAM,CAAC2D,mBAAmB,CAAC,MAAM,EAAEhH,OAAO,EAAEA,OAAO,CAAC;EACxD,CAAC,CACD,OAAOpE,GAAG,EAAE;IACR4T,gBAAgB,GAAG,KAAK;EAC5B;AACJ;AACA;AACA,MAAMC,8BAA8B,GAAG;EACnCtP,IAAI,EAAE;AACV,CAAC;AACD,MAAMuP,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAMC,aAAa,GAAG,CAAC,CAAC;AACxB,MAAMC,sBAAsB,GAAG,IAAIC,MAAM,CAAC,GAAG,GAAG1L,kBAAkB,GAAG,qBAAqB,CAAC;AAC3F,MAAM2L,4BAA4B,GAAGzL,UAAU,CAAC,oBAAoB,CAAC;AACrE,SAAS0L,iBAAiBA,CAAClJ,SAAS,EAAEmJ,iBAAiB,EAAE;EACrD,MAAMC,cAAc,GAAG,CAACD,iBAAiB,GAAGA,iBAAiB,CAACnJ,SAAS,CAAC,GAAGA,SAAS,IAAI3C,SAAS;EACjG,MAAMgM,aAAa,GAAG,CAACF,iBAAiB,GAAGA,iBAAiB,CAACnJ,SAAS,CAAC,GAAGA,SAAS,IAAI5C,QAAQ;EAC/F,MAAMnC,MAAM,GAAGqC,kBAAkB,GAAG8L,cAAc;EAClD,MAAME,aAAa,GAAGhM,kBAAkB,GAAG+L,aAAa;EACxDR,oBAAoB,CAAC7I,SAAS,CAAC,GAAG,CAAC,CAAC;EACpC6I,oBAAoB,CAAC7I,SAAS,CAAC,CAAC3C,SAAS,CAAC,GAAGpC,MAAM;EACnD4N,oBAAoB,CAAC7I,SAAS,CAAC,CAAC5C,QAAQ,CAAC,GAAGkM,aAAa;AAC7D;AACA,SAASjO,gBAAgBA,CAACsC,OAAO,EAAEmE,GAAG,EAAEyH,IAAI,EAAEC,YAAY,EAAE;EACxD,MAAMC,kBAAkB,GAAID,YAAY,IAAIA,YAAY,CAACE,GAAG,IAAK1M,sBAAsB;EACvF,MAAM2M,qBAAqB,GAAIH,YAAY,IAAIA,YAAY,CAACI,EAAE,IAAK3M,yBAAyB;EAC5F,MAAM4M,wBAAwB,GAAIL,YAAY,IAAIA,YAAY,CAACM,SAAS,IAAK,gBAAgB;EAC7F,MAAMC,mCAAmC,GAAIP,YAAY,IAAIA,YAAY,CAACQ,KAAK,IAAK,oBAAoB;EACxG,MAAMC,0BAA0B,GAAGzM,UAAU,CAACiM,kBAAkB,CAAC;EACjE,MAAMS,yBAAyB,GAAG,GAAG,GAAGT,kBAAkB,GAAG,GAAG;EAChE,MAAMU,sBAAsB,GAAG,iBAAiB;EAChD,MAAMC,6BAA6B,GAAG,GAAG,GAAGD,sBAAsB,GAAG,GAAG;EACxE,MAAM7V,UAAU,GAAG,SAAAA,CAAUjB,IAAI,EAAE2C,MAAM,EAAE6I,KAAK,EAAE;IAC9C;IACA;IACA,IAAIxL,IAAI,CAACgX,SAAS,EAAE;MAChB;IACJ;IACA,MAAMvU,QAAQ,GAAGzC,IAAI,CAACb,QAAQ;IAC9B,IAAI,OAAOsD,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,CAACwU,WAAW,EAAE;MACtD;MACAjX,IAAI,CAACb,QAAQ,GAAIqM,KAAK,IAAK/I,QAAQ,CAACwU,WAAW,CAACzL,KAAK,CAAC;MACtDxL,IAAI,CAACiV,gBAAgB,GAAGxS,QAAQ;IACpC;IACA;IACA;IACA;IACA;IACA,IAAI5C,KAAK;IACT,IAAI;MACAG,IAAI,CAACJ,MAAM,CAACI,IAAI,EAAE2C,MAAM,EAAE,CAAC6I,KAAK,CAAC,CAAC;IACtC,CAAC,CACD,OAAO9J,GAAG,EAAE;MACR7B,KAAK,GAAG6B,GAAG;IACf;IACA,MAAMoE,OAAO,GAAG9F,IAAI,CAAC8F,OAAO;IAC5B,IAAIA,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,CAAC+K,IAAI,EAAE;MACxD;MACA;MACA;MACA,MAAMpO,QAAQ,GAAGzC,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACb,QAAQ;MAC9EwD,MAAM,CAAC2T,qBAAqB,CAAC,CAACpQ,IAAI,CAACvD,MAAM,EAAE6I,KAAK,CAACpL,IAAI,EAAEqC,QAAQ,EAAEqD,OAAO,CAAC;IAC7E;IACA,OAAOjG,KAAK;EAChB,CAAC;EACD,SAASqX,cAAcA,CAACC,OAAO,EAAE3L,KAAK,EAAE4L,SAAS,EAAE;IAC/C;IACA;IACA5L,KAAK,GAAGA,KAAK,IAAIlB,OAAO,CAACkB,KAAK;IAC9B,IAAI,CAACA,KAAK,EAAE;MACR;IACJ;IACA;IACA;IACA,MAAM7I,MAAM,GAAGwU,OAAO,IAAI3L,KAAK,CAAC7I,MAAM,IAAI2H,OAAO;IACjD,MAAM+M,KAAK,GAAG1U,MAAM,CAAC6S,oBAAoB,CAAChK,KAAK,CAACpL,IAAI,CAAC,CAACgX,SAAS,GAAGrN,QAAQ,GAAGC,SAAS,CAAC,CAAC;IACxF,IAAIqN,KAAK,EAAE;MACP,MAAM5E,MAAM,GAAG,EAAE;MACjB;MACA;MACA,IAAI4E,KAAK,CAAC/U,MAAM,KAAK,CAAC,EAAE;QACpB,MAAMZ,GAAG,GAAGT,UAAU,CAACoW,KAAK,CAAC,CAAC,CAAC,EAAE1U,MAAM,EAAE6I,KAAK,CAAC;QAC/C9J,GAAG,IAAI+Q,MAAM,CAACnN,IAAI,CAAC5D,GAAG,CAAC;MAC3B,CAAC,MACI;QACD;QACA;QACA;QACA,MAAM4V,SAAS,GAAGD,KAAK,CAAC3N,KAAK,CAAC,CAAC;QAC/B,KAAK,IAAIrH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiV,SAAS,CAAChV,MAAM,EAAED,CAAC,EAAE,EAAE;UACvC,IAAImJ,KAAK,IAAIA,KAAK,CAACoK,4BAA4B,CAAC,KAAK,IAAI,EAAE;YACvD;UACJ;UACA,MAAMlU,GAAG,GAAGT,UAAU,CAACqW,SAAS,CAACjV,CAAC,CAAC,EAAEM,MAAM,EAAE6I,KAAK,CAAC;UACnD9J,GAAG,IAAI+Q,MAAM,CAACnN,IAAI,CAAC5D,GAAG,CAAC;QAC3B;MACJ;MACA;MACA;MACA,IAAI+Q,MAAM,CAACnQ,MAAM,KAAK,CAAC,EAAE;QACrB,MAAMmQ,MAAM,CAAC,CAAC,CAAC;MACnB,CAAC,MACI;QACD,KAAK,IAAIpQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoQ,MAAM,CAACnQ,MAAM,EAAED,CAAC,EAAE,EAAE;UACpC,MAAMX,GAAG,GAAG+Q,MAAM,CAACpQ,CAAC,CAAC;UACrBoM,GAAG,CAACpH,uBAAuB,CAAC,MAAM;YAC9B,MAAM3F,GAAG;UACb,CAAC,CAAC;QACN;MACJ;IACJ;EACJ;EACA;EACA,MAAM6V,uBAAuB,GAAG,SAAAA,CAAU/L,KAAK,EAAE;IAC7C,OAAO0L,cAAc,CAAC,IAAI,EAAE1L,KAAK,EAAE,KAAK,CAAC;EAC7C,CAAC;EACD;EACA,MAAMgM,8BAA8B,GAAG,SAAAA,CAAUhM,KAAK,EAAE;IACpD,OAAO0L,cAAc,CAAC,IAAI,EAAE1L,KAAK,EAAE,IAAI,CAAC;EAC5C,CAAC;EACD,SAASiM,uBAAuBA,CAACtL,GAAG,EAAEgK,YAAY,EAAE;IAChD,IAAI,CAAChK,GAAG,EAAE;MACN,OAAO,KAAK;IAChB;IACA,IAAIuL,iBAAiB,GAAG,IAAI;IAC5B,IAAIvB,YAAY,IAAIA,YAAY,CAAClQ,IAAI,KAAKjF,SAAS,EAAE;MACjD0W,iBAAiB,GAAGvB,YAAY,CAAClQ,IAAI;IACzC;IACA,MAAM0R,eAAe,GAAGxB,YAAY,IAAIA,YAAY,CAACyB,EAAE;IACvD,IAAIxa,cAAc,GAAG,IAAI;IACzB,IAAI+Y,YAAY,IAAIA,YAAY,CAAC0B,MAAM,KAAK7W,SAAS,EAAE;MACnD5D,cAAc,GAAG+Y,YAAY,CAAC0B,MAAM;IACxC;IACA,IAAIC,YAAY,GAAG,KAAK;IACxB,IAAI3B,YAAY,IAAIA,YAAY,CAAC4B,EAAE,KAAK/W,SAAS,EAAE;MAC/C8W,YAAY,GAAG3B,YAAY,CAAC4B,EAAE;IAClC;IACA,IAAItK,KAAK,GAAGtB,GAAG;IACf,OAAOsB,KAAK,IAAI,CAACA,KAAK,CAACtP,cAAc,CAACiY,kBAAkB,CAAC,EAAE;MACvD3I,KAAK,GAAGnE,oBAAoB,CAACmE,KAAK,CAAC;IACvC;IACA,IAAI,CAACA,KAAK,IAAItB,GAAG,CAACiK,kBAAkB,CAAC,EAAE;MACnC;MACA3I,KAAK,GAAGtB,GAAG;IACf;IACA,IAAI,CAACsB,KAAK,EAAE;MACR,OAAO,KAAK;IAChB;IACA,IAAIA,KAAK,CAACmJ,0BAA0B,CAAC,EAAE;MACnC,OAAO,KAAK;IAChB;IACA,MAAMd,iBAAiB,GAAGK,YAAY,IAAIA,YAAY,CAACL,iBAAiB;IACxE;IACA;IACA,MAAMkC,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAMC,sBAAsB,GAAGxK,KAAK,CAACmJ,0BAA0B,CAAC,GAAGnJ,KAAK,CAAC2I,kBAAkB,CAAC;IAC5F,MAAM8B,yBAAyB,GAAGzK,KAAK,CAACtD,UAAU,CAACmM,qBAAqB,CAAC,CAAC,GACtE7I,KAAK,CAAC6I,qBAAqB,CAAC;IAChC,MAAM6B,eAAe,GAAG1K,KAAK,CAACtD,UAAU,CAACqM,wBAAwB,CAAC,CAAC,GAC/D/I,KAAK,CAAC+I,wBAAwB,CAAC;IACnC,MAAM4B,wBAAwB,GAAG3K,KAAK,CAACtD,UAAU,CAACuM,mCAAmC,CAAC,CAAC,GACnFjJ,KAAK,CAACiJ,mCAAmC,CAAC;IAC9C,IAAI2B,0BAA0B;IAC9B,IAAIlC,YAAY,IAAIA,YAAY,CAACmC,OAAO,EAAE;MACtCD,0BAA0B,GAAG5K,KAAK,CAACtD,UAAU,CAACgM,YAAY,CAACmC,OAAO,CAAC,CAAC,GAChE7K,KAAK,CAAC0I,YAAY,CAACmC,OAAO,CAAC;IACnC;IACA;AACR;AACA;AACA;IACQ,SAASC,yBAAyBA,CAACzS,OAAO,EAAE0S,OAAO,EAAE;MACjD,IAAI,CAAClD,gBAAgB,IAAI,OAAOxP,OAAO,KAAK,QAAQ,IAAIA,OAAO,EAAE;QAC7D;QACA;QACA;QACA,OAAO,CAAC,CAACA,OAAO,CAAC2S,OAAO;MAC5B;MACA,IAAI,CAACnD,gBAAgB,IAAI,CAACkD,OAAO,EAAE;QAC/B,OAAO1S,OAAO;MAClB;MACA,IAAI,OAAOA,OAAO,KAAK,SAAS,EAAE;QAC9B,OAAO;UAAE2S,OAAO,EAAE3S,OAAO;UAAE0S,OAAO,EAAE;QAAK,CAAC;MAC9C;MACA,IAAI,CAAC1S,OAAO,EAAE;QACV,OAAO;UAAE0S,OAAO,EAAE;QAAK,CAAC;MAC5B;MACA,IAAI,OAAO1S,OAAO,KAAK,QAAQ,IAAIA,OAAO,CAAC0S,OAAO,KAAK,KAAK,EAAE;QAC1D,OAAO;UAAE,GAAG1S,OAAO;UAAE0S,OAAO,EAAE;QAAK,CAAC;MACxC;MACA,OAAO1S,OAAO;IAClB;IACA,MAAM4S,oBAAoB,GAAG,SAAAA,CAAU1Y,IAAI,EAAE;MACzC;MACA;MACA,IAAIgY,QAAQ,CAACW,UAAU,EAAE;QACrB;MACJ;MACA,OAAOV,sBAAsB,CAAC/R,IAAI,CAAC8R,QAAQ,CAACrV,MAAM,EAAEqV,QAAQ,CAACrL,SAAS,EAAEqL,QAAQ,CAACS,OAAO,GAAGjB,8BAA8B,GAAGD,uBAAuB,EAAES,QAAQ,CAAClS,OAAO,CAAC;IAC1K,CAAC;IACD,MAAM8S,kBAAkB,GAAG,SAAAA,CAAU5Y,IAAI,EAAE;MACvC;MACA;MACA;MACA,IAAI,CAACA,IAAI,CAACgX,SAAS,EAAE;QACjB,MAAM6B,gBAAgB,GAAGrD,oBAAoB,CAACxV,IAAI,CAAC2M,SAAS,CAAC;QAC7D,IAAImM,eAAe;QACnB,IAAID,gBAAgB,EAAE;UAClBC,eAAe,GAAGD,gBAAgB,CAAC7Y,IAAI,CAACyY,OAAO,GAAG1O,QAAQ,GAAGC,SAAS,CAAC;QAC3E;QACA,MAAM+O,aAAa,GAAGD,eAAe,IAAI9Y,IAAI,CAAC2C,MAAM,CAACmW,eAAe,CAAC;QACrE,IAAIC,aAAa,EAAE;UACf,KAAK,IAAI1W,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0W,aAAa,CAACzW,MAAM,EAAED,CAAC,EAAE,EAAE;YAC3C,MAAM2W,YAAY,GAAGD,aAAa,CAAC1W,CAAC,CAAC;YACrC,IAAI2W,YAAY,KAAKhZ,IAAI,EAAE;cACvB+Y,aAAa,CAACtH,MAAM,CAACpP,CAAC,EAAE,CAAC,CAAC;cAC1B;cACArC,IAAI,CAACgX,SAAS,GAAG,IAAI;cACrB,IAAI+B,aAAa,CAACzW,MAAM,KAAK,CAAC,EAAE;gBAC5B;gBACA;gBACAtC,IAAI,CAACiZ,UAAU,GAAG,IAAI;gBACtBjZ,IAAI,CAAC2C,MAAM,CAACmW,eAAe,CAAC,GAAG,IAAI;cACvC;cACA;YACJ;UACJ;QACJ;MACJ;MACA;MACA;MACA;MACA,IAAI,CAAC9Y,IAAI,CAACiZ,UAAU,EAAE;QAClB;MACJ;MACA,OAAOf,yBAAyB,CAAChS,IAAI,CAAClG,IAAI,CAAC2C,MAAM,EAAE3C,IAAI,CAAC2M,SAAS,EAAE3M,IAAI,CAACyY,OAAO,GAAGjB,8BAA8B,GAAGD,uBAAuB,EAAEvX,IAAI,CAAC8F,OAAO,CAAC;IAC7J,CAAC;IACD,MAAMoT,uBAAuB,GAAG,SAAAA,CAAUlZ,IAAI,EAAE;MAC5C,OAAOiY,sBAAsB,CAAC/R,IAAI,CAAC8R,QAAQ,CAACrV,MAAM,EAAEqV,QAAQ,CAACrL,SAAS,EAAE3M,IAAI,CAACJ,MAAM,EAAEoY,QAAQ,CAAClS,OAAO,CAAC;IAC1G,CAAC;IACD,MAAMqT,qBAAqB,GAAG,SAAAA,CAAUnZ,IAAI,EAAE;MAC1C,OAAOqY,0BAA0B,CAACnS,IAAI,CAAC8R,QAAQ,CAACrV,MAAM,EAAEqV,QAAQ,CAACrL,SAAS,EAAE3M,IAAI,CAACJ,MAAM,EAAEoY,QAAQ,CAAClS,OAAO,CAAC;IAC9G,CAAC;IACD,MAAMsT,qBAAqB,GAAG,SAAAA,CAAUpZ,IAAI,EAAE;MAC1C,OAAOkY,yBAAyB,CAAChS,IAAI,CAAClG,IAAI,CAAC2C,MAAM,EAAE3C,IAAI,CAAC2M,SAAS,EAAE3M,IAAI,CAACJ,MAAM,EAAEI,IAAI,CAAC8F,OAAO,CAAC;IACjG,CAAC;IACD,MAAMlE,cAAc,GAAG8V,iBAAiB,GAAGgB,oBAAoB,GAAGQ,uBAAuB;IACzF,MAAMlX,YAAY,GAAG0V,iBAAiB,GAAGkB,kBAAkB,GAAGQ,qBAAqB;IACnF,MAAMC,6BAA6B,GAAG,SAAAA,CAAUrZ,IAAI,EAAEyC,QAAQ,EAAE;MAC5D,MAAM6W,cAAc,GAAG,OAAO7W,QAAQ;MACtC,OAAQ6W,cAAc,KAAK,UAAU,IAAItZ,IAAI,CAACb,QAAQ,KAAKsD,QAAQ,IAC9D6W,cAAc,KAAK,QAAQ,IAAItZ,IAAI,CAACiV,gBAAgB,KAAKxS,QAAS;IAC3E,CAAC;IACD,MAAM8W,OAAO,GAAIpD,YAAY,IAAIA,YAAY,CAACqD,IAAI,GAAIrD,YAAY,CAACqD,IAAI,GAAGH,6BAA6B;IACvG,MAAMI,eAAe,GAAGnc,IAAI,CAAC6M,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAMuP,aAAa,GAAGpP,OAAO,CAACH,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAMwP,eAAe,GAAG,SAAAA,CAAUC,cAAc,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,cAAc,EAAEjC,YAAY,GAAG,KAAK,EAAEQ,OAAO,GAAG,KAAK,EAAE;MAClI,OAAO,YAAY;QACf,MAAM3V,MAAM,GAAG,IAAI,IAAI2H,OAAO;QAC9B,IAAIqC,SAAS,GAAGnN,SAAS,CAAC,CAAC,CAAC;QAC5B,IAAI2W,YAAY,IAAIA,YAAY,CAAC6D,iBAAiB,EAAE;UAChDrN,SAAS,GAAGwJ,YAAY,CAAC6D,iBAAiB,CAACrN,SAAS,CAAC;QACzD;QACA,IAAIlK,QAAQ,GAAGjD,SAAS,CAAC,CAAC,CAAC;QAC3B,IAAI,CAACiD,QAAQ,EAAE;UACX,OAAOmX,cAAc,CAACxU,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;QAChD;QACA,IAAI0L,MAAM,IAAIyB,SAAS,KAAK,mBAAmB,EAAE;UAC7C;UACA,OAAOiN,cAAc,CAACxU,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;QAChD;QACA;QACA;QACA;QACA,IAAIya,aAAa,GAAG,KAAK;QACzB,IAAI,OAAOxX,QAAQ,KAAK,UAAU,EAAE;UAChC,IAAI,CAACA,QAAQ,CAACwU,WAAW,EAAE;YACvB,OAAO2C,cAAc,CAACxU,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;UAChD;UACAya,aAAa,GAAG,IAAI;QACxB;QACA,IAAItC,eAAe,IAAI,CAACA,eAAe,CAACiC,cAAc,EAAEnX,QAAQ,EAAEE,MAAM,EAAEnD,SAAS,CAAC,EAAE;UAClF;QACJ;QACA,MAAMgZ,OAAO,GAAGlD,gBAAgB,IAAI,CAAC,CAACoE,aAAa,IAAIA,aAAa,CAAClL,OAAO,CAAC7B,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9F,MAAM7G,OAAO,GAAGyS,yBAAyB,CAAC/Y,SAAS,CAAC,CAAC,CAAC,EAAEgZ,OAAO,CAAC;QAChE,IAAIiB,eAAe,EAAE;UACjB;UACA,KAAK,IAAIpX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoX,eAAe,CAACnX,MAAM,EAAED,CAAC,EAAE,EAAE;YAC7C,IAAIsK,SAAS,KAAK8M,eAAe,CAACpX,CAAC,CAAC,EAAE;cAClC,IAAImW,OAAO,EAAE;gBACT,OAAOoB,cAAc,CAAC1T,IAAI,CAACvD,MAAM,EAAEgK,SAAS,EAAElK,QAAQ,EAAEqD,OAAO,CAAC;cACpE,CAAC,MACI;gBACD,OAAO8T,cAAc,CAACxU,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;cAChD;YACJ;UACJ;QACJ;QACA,MAAMiZ,OAAO,GAAG,CAAC3S,OAAO,GAAG,KAAK,GAAG,OAAOA,OAAO,KAAK,SAAS,GAAG,IAAI,GAAGA,OAAO,CAAC2S,OAAO;QACxF,MAAM5H,IAAI,GAAG/K,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,GAAGA,OAAO,CAAC+K,IAAI,GAAG,KAAK;QAC1E,MAAMnT,IAAI,GAAGJ,IAAI,CAACK,OAAO;QACzB,IAAIkb,gBAAgB,GAAGrD,oBAAoB,CAAC7I,SAAS,CAAC;QACtD,IAAI,CAACkM,gBAAgB,EAAE;UACnBhD,iBAAiB,CAAClJ,SAAS,EAAEmJ,iBAAiB,CAAC;UAC/C+C,gBAAgB,GAAGrD,oBAAoB,CAAC7I,SAAS,CAAC;QACtD;QACA,MAAMmM,eAAe,GAAGD,gBAAgB,CAACJ,OAAO,GAAG1O,QAAQ,GAAGC,SAAS,CAAC;QACxE,IAAI+O,aAAa,GAAGpW,MAAM,CAACmW,eAAe,CAAC;QAC3C,IAAIH,UAAU,GAAG,KAAK;QACtB,IAAII,aAAa,EAAE;UACf;UACAJ,UAAU,GAAG,IAAI;UACjB,IAAIvb,cAAc,EAAE;YAChB,KAAK,IAAIiF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0W,aAAa,CAACzW,MAAM,EAAED,CAAC,EAAE,EAAE;cAC3C,IAAIkX,OAAO,CAACR,aAAa,CAAC1W,CAAC,CAAC,EAAEI,QAAQ,CAAC,EAAE;gBACrC;gBACA;cACJ;YACJ;UACJ;QACJ,CAAC,MACI;UACDsW,aAAa,GAAGpW,MAAM,CAACmW,eAAe,CAAC,GAAG,EAAE;QAChD;QACA,IAAI1Z,MAAM;QACV,MAAM8a,eAAe,GAAGvX,MAAM,CAACnE,WAAW,CAAC,MAAM,CAAC;QAClD,MAAM2b,YAAY,GAAG1E,aAAa,CAACyE,eAAe,CAAC;QACnD,IAAIC,YAAY,EAAE;UACd/a,MAAM,GAAG+a,YAAY,CAACxN,SAAS,CAAC;QACpC;QACA,IAAI,CAACvN,MAAM,EAAE;UACTA,MAAM,GAAG8a,eAAe,GAAGL,SAAS,IAC/B/D,iBAAiB,GAAGA,iBAAiB,CAACnJ,SAAS,CAAC,GAAGA,SAAS,CAAC;QACtE;QACA;QACA;QACAqL,QAAQ,CAAClS,OAAO,GAAGA,OAAO;QAC1B,IAAI+K,IAAI,EAAE;UACN;UACA;UACA;UACAmH,QAAQ,CAAClS,OAAO,CAAC+K,IAAI,GAAG,KAAK;QACjC;QACAmH,QAAQ,CAACrV,MAAM,GAAGA,MAAM;QACxBqV,QAAQ,CAACS,OAAO,GAAGA,OAAO;QAC1BT,QAAQ,CAACrL,SAAS,GAAGA,SAAS;QAC9BqL,QAAQ,CAACW,UAAU,GAAGA,UAAU;QAChC,MAAM9X,IAAI,GAAG6W,iBAAiB,GAAGnC,8BAA8B,GAAGvU,SAAS;QAC3E;QACA,IAAIH,IAAI,EAAE;UACNA,IAAI,CAACmX,QAAQ,GAAGA,QAAQ;QAC5B;QACA,MAAMhY,IAAI,GAAGtC,IAAI,CAACuE,iBAAiB,CAAC7C,MAAM,EAAEqD,QAAQ,EAAE5B,IAAI,EAAEiZ,gBAAgB,EAAEC,cAAc,CAAC;QAC7F;QACA;QACA/B,QAAQ,CAACrV,MAAM,GAAG,IAAI;QACtB;QACA,IAAI9B,IAAI,EAAE;UACNA,IAAI,CAACmX,QAAQ,GAAG,IAAI;QACxB;QACA;QACA;QACA,IAAInH,IAAI,EAAE;UACN/K,OAAO,CAAC+K,IAAI,GAAG,IAAI;QACvB;QACA,IAAI,EAAE,CAACyE,gBAAgB,IAAI,OAAOtV,IAAI,CAAC8F,OAAO,KAAK,SAAS,CAAC,EAAE;UAC3D;UACA;UACA9F,IAAI,CAAC8F,OAAO,GAAGA,OAAO;QAC1B;QACA9F,IAAI,CAAC2C,MAAM,GAAGA,MAAM;QACpB3C,IAAI,CAACyY,OAAO,GAAGA,OAAO;QACtBzY,IAAI,CAAC2M,SAAS,GAAGA,SAAS;QAC1B,IAAIsN,aAAa,EAAE;UACf;UACAja,IAAI,CAACiV,gBAAgB,GAAGxS,QAAQ;QACpC;QACA,IAAI,CAAC6V,OAAO,EAAE;UACVS,aAAa,CAACzT,IAAI,CAACtF,IAAI,CAAC;QAC5B,CAAC,MACI;UACD+Y,aAAa,CAACqB,OAAO,CAACpa,IAAI,CAAC;QAC/B;QACA,IAAI8X,YAAY,EAAE;UACd,OAAOnV,MAAM;QACjB;MACJ,CAAC;IACL,CAAC;IACD8K,KAAK,CAAC2I,kBAAkB,CAAC,GAAGuD,eAAe,CAAC1B,sBAAsB,EAAEpB,yBAAyB,EAAEjV,cAAc,EAAEI,YAAY,EAAE8V,YAAY,CAAC;IAC1I,IAAIO,0BAA0B,EAAE;MAC5B5K,KAAK,CAACqJ,sBAAsB,CAAC,GAAG6C,eAAe,CAACtB,0BAA0B,EAAEtB,6BAA6B,EAAEoC,qBAAqB,EAAEnX,YAAY,EAAE8V,YAAY,EAAE,IAAI,CAAC;IACvK;IACArK,KAAK,CAAC6I,qBAAqB,CAAC,GAAG,YAAY;MACvC,MAAM3T,MAAM,GAAG,IAAI,IAAI2H,OAAO;MAC9B,IAAIqC,SAAS,GAAGnN,SAAS,CAAC,CAAC,CAAC;MAC5B,IAAI2W,YAAY,IAAIA,YAAY,CAAC6D,iBAAiB,EAAE;QAChDrN,SAAS,GAAGwJ,YAAY,CAAC6D,iBAAiB,CAACrN,SAAS,CAAC;MACzD;MACA,MAAM7G,OAAO,GAAGtG,SAAS,CAAC,CAAC,CAAC;MAC5B,MAAMiZ,OAAO,GAAG,CAAC3S,OAAO,GAAG,KAAK,GAAG,OAAOA,OAAO,KAAK,SAAS,GAAG,IAAI,GAAGA,OAAO,CAAC2S,OAAO;MACxF,MAAMhW,QAAQ,GAAGjD,SAAS,CAAC,CAAC,CAAC;MAC7B,IAAI,CAACiD,QAAQ,EAAE;QACX,OAAOyV,yBAAyB,CAAC9S,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;MAC3D;MACA,IAAImY,eAAe,IACf,CAACA,eAAe,CAACO,yBAAyB,EAAEzV,QAAQ,EAAEE,MAAM,EAAEnD,SAAS,CAAC,EAAE;QAC1E;MACJ;MACA,MAAMqZ,gBAAgB,GAAGrD,oBAAoB,CAAC7I,SAAS,CAAC;MACxD,IAAImM,eAAe;MACnB,IAAID,gBAAgB,EAAE;QAClBC,eAAe,GAAGD,gBAAgB,CAACJ,OAAO,GAAG1O,QAAQ,GAAGC,SAAS,CAAC;MACtE;MACA,MAAM+O,aAAa,GAAGD,eAAe,IAAInW,MAAM,CAACmW,eAAe,CAAC;MAChE,IAAIC,aAAa,EAAE;QACf,KAAK,IAAI1W,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0W,aAAa,CAACzW,MAAM,EAAED,CAAC,EAAE,EAAE;UAC3C,MAAM2W,YAAY,GAAGD,aAAa,CAAC1W,CAAC,CAAC;UACrC,IAAIkX,OAAO,CAACP,YAAY,EAAEvW,QAAQ,CAAC,EAAE;YACjCsW,aAAa,CAACtH,MAAM,CAACpP,CAAC,EAAE,CAAC,CAAC;YAC1B;YACA2W,YAAY,CAAChC,SAAS,GAAG,IAAI;YAC7B,IAAI+B,aAAa,CAACzW,MAAM,KAAK,CAAC,EAAE;cAC5B;cACA;cACA0W,YAAY,CAACC,UAAU,GAAG,IAAI;cAC9BtW,MAAM,CAACmW,eAAe,CAAC,GAAG,IAAI;cAC9B;cACA;cACA;cACA,IAAI,OAAOnM,SAAS,KAAK,QAAQ,EAAE;gBAC/B,MAAM0N,gBAAgB,GAAGpQ,kBAAkB,GAAG,aAAa,GAAG0C,SAAS;gBACvEhK,MAAM,CAAC0X,gBAAgB,CAAC,GAAG,IAAI;cACnC;YACJ;YACArB,YAAY,CAACtb,IAAI,CAACwE,UAAU,CAAC8W,YAAY,CAAC;YAC1C,IAAIlB,YAAY,EAAE;cACd,OAAOnV,MAAM;YACjB;YACA;UACJ;QACJ;MACJ;MACA;MACA;MACA;MACA;MACA,OAAOuV,yBAAyB,CAAC9S,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;IAC3D,CAAC;IACDiO,KAAK,CAAC+I,wBAAwB,CAAC,GAAG,YAAY;MAC1C,MAAM7T,MAAM,GAAG,IAAI,IAAI2H,OAAO;MAC9B,IAAIqC,SAAS,GAAGnN,SAAS,CAAC,CAAC,CAAC;MAC5B,IAAI2W,YAAY,IAAIA,YAAY,CAAC6D,iBAAiB,EAAE;QAChDrN,SAAS,GAAGwJ,YAAY,CAAC6D,iBAAiB,CAACrN,SAAS,CAAC;MACzD;MACA,MAAM8J,SAAS,GAAG,EAAE;MACpB,MAAMY,KAAK,GAAGiD,cAAc,CAAC3X,MAAM,EAAEmT,iBAAiB,GAAGA,iBAAiB,CAACnJ,SAAS,CAAC,GAAGA,SAAS,CAAC;MAClG,KAAK,IAAItK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgV,KAAK,CAAC/U,MAAM,EAAED,CAAC,EAAE,EAAE;QACnC,MAAMrC,IAAI,GAAGqX,KAAK,CAAChV,CAAC,CAAC;QACrB,IAAII,QAAQ,GAAGzC,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACb,QAAQ;QAC5EsX,SAAS,CAACnR,IAAI,CAAC7C,QAAQ,CAAC;MAC5B;MACA,OAAOgU,SAAS;IACpB,CAAC;IACDhJ,KAAK,CAACiJ,mCAAmC,CAAC,GAAG,YAAY;MACrD,MAAM/T,MAAM,GAAG,IAAI,IAAI2H,OAAO;MAC9B,IAAIqC,SAAS,GAAGnN,SAAS,CAAC,CAAC,CAAC;MAC5B,IAAI,CAACmN,SAAS,EAAE;QACZ,MAAM4N,IAAI,GAAG3T,MAAM,CAAC2T,IAAI,CAAC5X,MAAM,CAAC;QAChC,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkY,IAAI,CAACjY,MAAM,EAAED,CAAC,EAAE,EAAE;UAClC,MAAM+J,IAAI,GAAGmO,IAAI,CAAClY,CAAC,CAAC;UACpB,MAAMmY,KAAK,GAAG9E,sBAAsB,CAAC+E,IAAI,CAACrO,IAAI,CAAC;UAC/C,IAAIsO,OAAO,GAAGF,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC;UAC/B;UACA;UACA;UACA;UACA,IAAIE,OAAO,IAAIA,OAAO,KAAK,gBAAgB,EAAE;YACzC,IAAI,CAAChE,mCAAmC,CAAC,CAACxQ,IAAI,CAAC,IAAI,EAAEwU,OAAO,CAAC;UACjE;QACJ;QACA;QACA,IAAI,CAAChE,mCAAmC,CAAC,CAACxQ,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC;MAC1E,CAAC,MACI;QACD,IAAIiQ,YAAY,IAAIA,YAAY,CAAC6D,iBAAiB,EAAE;UAChDrN,SAAS,GAAGwJ,YAAY,CAAC6D,iBAAiB,CAACrN,SAAS,CAAC;QACzD;QACA,MAAMkM,gBAAgB,GAAGrD,oBAAoB,CAAC7I,SAAS,CAAC;QACxD,IAAIkM,gBAAgB,EAAE;UAClB,MAAMC,eAAe,GAAGD,gBAAgB,CAAC7O,SAAS,CAAC;UACnD,MAAM2Q,sBAAsB,GAAG9B,gBAAgB,CAAC9O,QAAQ,CAAC;UACzD,MAAMsN,KAAK,GAAG1U,MAAM,CAACmW,eAAe,CAAC;UACrC,MAAM8B,YAAY,GAAGjY,MAAM,CAACgY,sBAAsB,CAAC;UACnD,IAAItD,KAAK,EAAE;YACP,MAAMwD,WAAW,GAAGxD,KAAK,CAAC3N,KAAK,CAAC,CAAC;YACjC,KAAK,IAAIrH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwY,WAAW,CAACvY,MAAM,EAAED,CAAC,EAAE,EAAE;cACzC,MAAMrC,IAAI,GAAG6a,WAAW,CAACxY,CAAC,CAAC;cAC3B,IAAII,QAAQ,GAAGzC,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACb,QAAQ;cAC5E,IAAI,CAACmX,qBAAqB,CAAC,CAACpQ,IAAI,CAAC,IAAI,EAAEyG,SAAS,EAAElK,QAAQ,EAAEzC,IAAI,CAAC8F,OAAO,CAAC;YAC7E;UACJ;UACA,IAAI8U,YAAY,EAAE;YACd,MAAMC,WAAW,GAAGD,YAAY,CAAClR,KAAK,CAAC,CAAC;YACxC,KAAK,IAAIrH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwY,WAAW,CAACvY,MAAM,EAAED,CAAC,EAAE,EAAE;cACzC,MAAMrC,IAAI,GAAG6a,WAAW,CAACxY,CAAC,CAAC;cAC3B,IAAII,QAAQ,GAAGzC,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACiV,gBAAgB,GAAGjV,IAAI,CAACb,QAAQ;cAC5E,IAAI,CAACmX,qBAAqB,CAAC,CAACpQ,IAAI,CAAC,IAAI,EAAEyG,SAAS,EAAElK,QAAQ,EAAEzC,IAAI,CAAC8F,OAAO,CAAC;YAC7E;UACJ;QACJ;MACJ;MACA,IAAIgS,YAAY,EAAE;QACd,OAAO,IAAI;MACf;IACJ,CAAC;IACD;IACA9O,qBAAqB,CAACyE,KAAK,CAAC2I,kBAAkB,CAAC,EAAE6B,sBAAsB,CAAC;IACxEjP,qBAAqB,CAACyE,KAAK,CAAC6I,qBAAqB,CAAC,EAAE4B,yBAAyB,CAAC;IAC9E,IAAIE,wBAAwB,EAAE;MAC1BpP,qBAAqB,CAACyE,KAAK,CAACiJ,mCAAmC,CAAC,EAAE0B,wBAAwB,CAAC;IAC/F;IACA,IAAID,eAAe,EAAE;MACjBnP,qBAAqB,CAACyE,KAAK,CAAC+I,wBAAwB,CAAC,EAAE2B,eAAe,CAAC;IAC3E;IACA,OAAO,IAAI;EACf;EACA,IAAI2C,OAAO,GAAG,EAAE;EAChB,KAAK,IAAIzY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6T,IAAI,CAAC5T,MAAM,EAAED,CAAC,EAAE,EAAE;IAClCyY,OAAO,CAACzY,CAAC,CAAC,GAAGoV,uBAAuB,CAACvB,IAAI,CAAC7T,CAAC,CAAC,EAAE8T,YAAY,CAAC;EAC/D;EACA,OAAO2E,OAAO;AAClB;AACA,SAASR,cAAcA,CAAC3X,MAAM,EAAEgK,SAAS,EAAE;EACvC,IAAI,CAACA,SAAS,EAAE;IACZ,MAAMoO,UAAU,GAAG,EAAE;IACrB,KAAK,IAAI3O,IAAI,IAAIzJ,MAAM,EAAE;MACrB,MAAM6X,KAAK,GAAG9E,sBAAsB,CAAC+E,IAAI,CAACrO,IAAI,CAAC;MAC/C,IAAIsO,OAAO,GAAGF,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC;MAC/B,IAAIE,OAAO,KAAK,CAAC/N,SAAS,IAAI+N,OAAO,KAAK/N,SAAS,CAAC,EAAE;QAClD,MAAM0K,KAAK,GAAG1U,MAAM,CAACyJ,IAAI,CAAC;QAC1B,IAAIiL,KAAK,EAAE;UACP,KAAK,IAAIhV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgV,KAAK,CAAC/U,MAAM,EAAED,CAAC,EAAE,EAAE;YACnC0Y,UAAU,CAACzV,IAAI,CAAC+R,KAAK,CAAChV,CAAC,CAAC,CAAC;UAC7B;QACJ;MACJ;IACJ;IACA,OAAO0Y,UAAU;EACrB;EACA,IAAIjC,eAAe,GAAGtD,oBAAoB,CAAC7I,SAAS,CAAC;EACrD,IAAI,CAACmM,eAAe,EAAE;IAClBjD,iBAAiB,CAAClJ,SAAS,CAAC;IAC5BmM,eAAe,GAAGtD,oBAAoB,CAAC7I,SAAS,CAAC;EACrD;EACA,MAAMqO,iBAAiB,GAAGrY,MAAM,CAACmW,eAAe,CAAC9O,SAAS,CAAC,CAAC;EAC5D,MAAMiR,gBAAgB,GAAGtY,MAAM,CAACmW,eAAe,CAAC/O,QAAQ,CAAC,CAAC;EAC1D,IAAI,CAACiR,iBAAiB,EAAE;IACpB,OAAOC,gBAAgB,GAAGA,gBAAgB,CAACvR,KAAK,CAAC,CAAC,GAAG,EAAE;EAC3D,CAAC,MACI;IACD,OAAOuR,gBAAgB,GAAGD,iBAAiB,CAACE,MAAM,CAACD,gBAAgB,CAAC,GAChED,iBAAiB,CAACtR,KAAK,CAAC,CAAC;EACjC;AACJ;AACA,SAASpB,mBAAmBA,CAAC1L,MAAM,EAAE6R,GAAG,EAAE;EACtC,MAAM0M,KAAK,GAAGve,MAAM,CAAC,OAAO,CAAC;EAC7B,IAAIue,KAAK,IAAIA,KAAK,CAACtU,SAAS,EAAE;IAC1B4H,GAAG,CAACvG,WAAW,CAACiT,KAAK,CAACtU,SAAS,EAAE,0BAA0B,EAAGpE,QAAQ,IAAK,UAAUuD,IAAI,EAAEG,IAAI,EAAE;MAC7FH,IAAI,CAAC4P,4BAA4B,CAAC,GAAG,IAAI;MACzC;MACA;MACA;MACAnT,QAAQ,IAAIA,QAAQ,CAAC2C,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;IAC1C,CAAC,CAAC;EACN;AACJ;AAEA,SAAS+C,cAAcA,CAACuF,GAAG,EAAE9L,MAAM,EAAEyY,UAAU,EAAEC,MAAM,EAAEC,SAAS,EAAE;EAChE,MAAM1T,MAAM,GAAGtK,IAAI,CAACH,UAAU,CAACke,MAAM,CAAC;EACtC,IAAI1Y,MAAM,CAACiF,MAAM,CAAC,EAAE;IAChB;EACJ;EACA,MAAM2T,cAAc,GAAG5Y,MAAM,CAACiF,MAAM,CAAC,GAAGjF,MAAM,CAAC0Y,MAAM,CAAC;EACtD1Y,MAAM,CAAC0Y,MAAM,CAAC,GAAG,UAAUte,IAAI,EAAEye,IAAI,EAAE1V,OAAO,EAAE;IAC5C,IAAI0V,IAAI,IAAIA,IAAI,CAAC3U,SAAS,EAAE;MACxByU,SAAS,CAACG,OAAO,CAAC,UAAUtc,QAAQ,EAAE;QAClC,MAAMC,MAAM,GAAI,GAAEgc,UAAW,IAAGC,MAAO,IAAG,GAAGlc,QAAQ;QACrD,MAAM0H,SAAS,GAAG2U,IAAI,CAAC3U,SAAS;QAChC;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAI;UACA,IAAIA,SAAS,CAAC1I,cAAc,CAACgB,QAAQ,CAAC,EAAE;YACpC,MAAMuc,UAAU,GAAGjN,GAAG,CAAC/F,8BAA8B,CAAC7B,SAAS,EAAE1H,QAAQ,CAAC;YAC1E,IAAIuc,UAAU,IAAIA,UAAU,CAAClW,KAAK,EAAE;cAChCkW,UAAU,CAAClW,KAAK,GAAGiJ,GAAG,CAAC3F,mBAAmB,CAAC4S,UAAU,CAAClW,KAAK,EAAEpG,MAAM,CAAC;cACpEqP,GAAG,CAACxF,iBAAiB,CAACuS,IAAI,CAAC3U,SAAS,EAAE1H,QAAQ,EAAEuc,UAAU,CAAC;YAC/D,CAAC,MACI,IAAI7U,SAAS,CAAC1H,QAAQ,CAAC,EAAE;cAC1B0H,SAAS,CAAC1H,QAAQ,CAAC,GAAGsP,GAAG,CAAC3F,mBAAmB,CAACjC,SAAS,CAAC1H,QAAQ,CAAC,EAAEC,MAAM,CAAC;YAC9E;UACJ,CAAC,MACI,IAAIyH,SAAS,CAAC1H,QAAQ,CAAC,EAAE;YAC1B0H,SAAS,CAAC1H,QAAQ,CAAC,GAAGsP,GAAG,CAAC3F,mBAAmB,CAACjC,SAAS,CAAC1H,QAAQ,CAAC,EAAEC,MAAM,CAAC;UAC9E;QACJ,CAAC,CACD,MAAM;UACF;UACA;QAAA;MAER,CAAC,CAAC;IACN;IACA,OAAOmc,cAAc,CAACrV,IAAI,CAACvD,MAAM,EAAE5F,IAAI,EAAEye,IAAI,EAAE1V,OAAO,CAAC;EAC3D,CAAC;EACD2I,GAAG,CAACzF,qBAAqB,CAACrG,MAAM,CAAC0Y,MAAM,CAAC,EAAEE,cAAc,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA,SAASxS,gBAAgBA,CAACpG,MAAM,EAAEsK,YAAY,EAAE0O,gBAAgB,EAAE;EAC9D,IAAI,CAACA,gBAAgB,IAAIA,gBAAgB,CAACrZ,MAAM,KAAK,CAAC,EAAE;IACpD,OAAO2K,YAAY;EACvB;EACA,MAAM2O,GAAG,GAAGD,gBAAgB,CAACE,MAAM,CAACC,EAAE,IAAIA,EAAE,CAACnZ,MAAM,KAAKA,MAAM,CAAC;EAC/D,IAAI,CAACiZ,GAAG,IAAIA,GAAG,CAACtZ,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAO2K,YAAY;EACvB;EACA,MAAM8O,sBAAsB,GAAGH,GAAG,CAAC,CAAC,CAAC,CAACD,gBAAgB;EACtD,OAAO1O,YAAY,CAAC4O,MAAM,CAACG,EAAE,IAAID,sBAAsB,CAACvN,OAAO,CAACwN,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E;AACA,SAASC,uBAAuBA,CAACtZ,MAAM,EAAEsK,YAAY,EAAE0O,gBAAgB,EAAE9U,SAAS,EAAE;EAChF;EACA;EACA,IAAI,CAAClE,MAAM,EAAE;IACT;EACJ;EACA,MAAMuZ,kBAAkB,GAAGnT,gBAAgB,CAACpG,MAAM,EAAEsK,YAAY,EAAE0O,gBAAgB,CAAC;EACnF1T,iBAAiB,CAACtF,MAAM,EAAEuZ,kBAAkB,EAAErV,SAAS,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA,SAASsV,eAAeA,CAACxZ,MAAM,EAAE;EAC7B,OAAOiE,MAAM,CAACwV,mBAAmB,CAACzZ,MAAM,CAAC,CACpCkZ,MAAM,CAAC9e,IAAI,IAAIA,IAAI,CAACsf,UAAU,CAAC,IAAI,CAAC,IAAItf,IAAI,CAACuF,MAAM,GAAG,CAAC,CAAC,CACxDga,GAAG,CAACvf,IAAI,IAAIA,IAAI,CAACwf,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC;AACA,SAASC,uBAAuBA,CAAC/N,GAAG,EAAEnE,OAAO,EAAE;EAC3C,IAAIY,MAAM,IAAI,CAACG,KAAK,EAAE;IAClB;EACJ;EACA,IAAI/N,IAAI,CAACmR,GAAG,CAAC7G,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE;IACjC;IACA;EACJ;EACA,MAAM+T,gBAAgB,GAAGrR,OAAO,CAAC,6BAA6B,CAAC;EAC/D;EACA,IAAImS,YAAY,GAAG,EAAE;EACrB,IAAIrR,SAAS,EAAE;IACX,MAAMf,cAAc,GAAGlB,MAAM;IAC7BsT,YAAY,GAAGA,YAAY,CAACvB,MAAM,CAAC,CAC/B,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EACzF,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,CACjG,CAAC;IACF,MAAMwB,qBAAqB,GAAGtO,IAAI,CAAC,CAAC,GAAG,CAAC;MAAEzL,MAAM,EAAE0H,cAAc;MAAEsR,gBAAgB,EAAE,CAAC,OAAO;IAAE,CAAC,CAAC,GAAG,EAAE;IACrG;IACA;IACAM,uBAAuB,CAAC5R,cAAc,EAAE8R,eAAe,CAAC9R,cAAc,CAAC,EAAEsR,gBAAgB,GAAGA,gBAAgB,CAACT,MAAM,CAACwB,qBAAqB,CAAC,GAAGf,gBAAgB,EAAErS,oBAAoB,CAACe,cAAc,CAAC,CAAC;EACxM;EACAoS,YAAY,GAAGA,YAAY,CAACvB,MAAM,CAAC,CAC/B,gBAAgB,EAAE,2BAA2B,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAC3F,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAC5D,CAAC;EACF,KAAK,IAAI7Y,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoa,YAAY,CAACna,MAAM,EAAED,CAAC,EAAE,EAAE;IAC1C,MAAMM,MAAM,GAAG2H,OAAO,CAACmS,YAAY,CAACpa,CAAC,CAAC,CAAC;IACvCM,MAAM,IAAIA,MAAM,CAACkE,SAAS,IACtBoV,uBAAuB,CAACtZ,MAAM,CAACkE,SAAS,EAAEsV,eAAe,CAACxZ,MAAM,CAACkE,SAAS,CAAC,EAAE8U,gBAAgB,CAAC;EACtG;AACJ;AAEAre,IAAI,CAACU,YAAY,CAAC,MAAM,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EAC7C;EACA;EACA,MAAMkO,UAAU,GAAGR,eAAe,CAACvf,MAAM,CAAC;EAC1C6R,GAAG,CAACxG,iBAAiB,GAAGA,iBAAiB;EACzCwG,GAAG,CAACvG,WAAW,GAAGA,WAAW;EAC7BuG,GAAG,CAACtG,aAAa,GAAGA,aAAa;EACjCsG,GAAG,CAACpG,cAAc,GAAGA,cAAc;EACnC;EACA;EACA;EACA;EACA;EACA;EACA,MAAMuU,0BAA0B,GAAGtf,IAAI,CAACH,UAAU,CAAC,qBAAqB,CAAC;EACzE,MAAM0f,uBAAuB,GAAGvf,IAAI,CAACH,UAAU,CAAC,kBAAkB,CAAC;EACnE,IAAIP,MAAM,CAACigB,uBAAuB,CAAC,EAAE;IACjCjgB,MAAM,CAACggB,0BAA0B,CAAC,GAAGhgB,MAAM,CAACigB,uBAAuB,CAAC;EACxE;EACA,IAAIjgB,MAAM,CAACggB,0BAA0B,CAAC,EAAE;IACpCtf,IAAI,CAACsf,0BAA0B,CAAC,GAAGtf,IAAI,CAACuf,uBAAuB,CAAC,GAC5DjgB,MAAM,CAACggB,0BAA0B,CAAC;EAC1C;EACAnO,GAAG,CAACnG,mBAAmB,GAAGA,mBAAmB;EAC7CmG,GAAG,CAACzG,gBAAgB,GAAGA,gBAAgB;EACvCyG,GAAG,CAAClG,UAAU,GAAGA,UAAU;EAC3BkG,GAAG,CAAChG,oBAAoB,GAAGA,oBAAoB;EAC/CgG,GAAG,CAAC/F,8BAA8B,GAAGA,8BAA8B;EACnE+F,GAAG,CAAC9F,YAAY,GAAGA,YAAY;EAC/B8F,GAAG,CAAC7F,UAAU,GAAGA,UAAU;EAC3B6F,GAAG,CAAC5F,UAAU,GAAGA,UAAU;EAC3B4F,GAAG,CAAC3F,mBAAmB,GAAGA,mBAAmB;EAC7C2F,GAAG,CAAC1F,gBAAgB,GAAGA,gBAAgB;EACvC0F,GAAG,CAACzF,qBAAqB,GAAGA,qBAAqB;EACjDyF,GAAG,CAACxF,iBAAiB,GAAGrC,MAAM,CAACyC,cAAc;EAC7CoF,GAAG,CAACvF,cAAc,GAAGA,cAAc;EACnCuF,GAAG,CAACjG,gBAAgB,GAAG,OAAO;IAC1BiN,aAAa;IACbD,oBAAoB;IACpBmH,UAAU;IACVvR,SAAS;IACTC,KAAK;IACLH,MAAM;IACNnB,QAAQ;IACRC,SAAS;IACTC,kBAAkB;IAClBN,sBAAsB;IACtBC;EACJ,CAAC,CAAC;AACN,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,SAASkT,mBAAmBA,CAAClgB,MAAM,EAAE6R,GAAG,EAAE;EACtCA,GAAG,CAACvG,WAAW,CAACtL,MAAM,EAAE,gBAAgB,EAAG6F,QAAQ,IAAK;IACpD,OAAO,UAAUuD,IAAI,EAAEG,IAAI,EAAE;MACzB7I,IAAI,CAACK,OAAO,CAACgE,iBAAiB,CAAC,gBAAgB,EAAEwE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;EACL,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,MAAM4W,UAAU,GAAG5S,UAAU,CAAC,UAAU,CAAC;AACzC,SAAS6S,UAAUA,CAAC7T,MAAM,EAAE8T,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAE;EACzD,IAAIrP,SAAS,GAAG,IAAI;EACpB,IAAIsP,WAAW,GAAG,IAAI;EACtBH,OAAO,IAAIE,UAAU;EACrBD,UAAU,IAAIC,UAAU;EACxB,MAAME,eAAe,GAAG,CAAC,CAAC;EAC1B,SAASjc,YAAYA,CAACpB,IAAI,EAAE;IACxB,MAAMa,IAAI,GAAGb,IAAI,CAACa,IAAI;IACtBA,IAAI,CAACsF,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY;MACvB,OAAOnG,IAAI,CAACJ,MAAM,CAACwF,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;IAC7C,CAAC;IACDqB,IAAI,CAAC8F,QAAQ,GAAGmH,SAAS,CAAC1I,KAAK,CAAC+D,MAAM,EAAEtI,IAAI,CAACsF,IAAI,CAAC;IAClD,OAAOnG,IAAI;EACf;EACA,SAASsd,SAASA,CAACtd,IAAI,EAAE;IACrB,OAAOod,WAAW,CAAClX,IAAI,CAACiD,MAAM,EAAEnJ,IAAI,CAACa,IAAI,CAAC8F,QAAQ,CAAC;EACvD;EACAmH,SAAS,GACL5F,WAAW,CAACiB,MAAM,EAAE8T,OAAO,EAAGxa,QAAQ,IAAK,UAAUuD,IAAI,EAAEG,IAAI,EAAE;IAC7D,IAAI,OAAOA,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;MAC/B,MAAML,OAAO,GAAG;QACZhF,UAAU,EAAEqc,UAAU,KAAK,UAAU;QACrCI,KAAK,EAAGJ,UAAU,KAAK,SAAS,IAAIA,UAAU,KAAK,UAAU,GAAIhX,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GACzEnF,SAAS;QACbmF,IAAI,EAAEA;MACV,CAAC;MACD,MAAMhH,QAAQ,GAAGgH,IAAI,CAAC,CAAC,CAAC;MACxBA,IAAI,CAAC,CAAC,CAAC,GAAG,SAASqX,KAAKA,CAAA,EAAG;QACvB,IAAI;UACA,OAAOre,QAAQ,CAACiG,KAAK,CAAC,IAAI,EAAE5F,SAAS,CAAC;QAC1C,CAAC,SACO;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAI,CAAEsG,OAAO,CAAChF,UAAW,EAAE;YACvB,IAAI,OAAOgF,OAAO,CAACa,QAAQ,KAAK,QAAQ,EAAE;cACtC;cACA;cACA,OAAO0W,eAAe,CAACvX,OAAO,CAACa,QAAQ,CAAC;YAC5C,CAAC,MACI,IAAIb,OAAO,CAACa,QAAQ,EAAE;cACvB;cACA;cACAb,OAAO,CAACa,QAAQ,CAACoW,UAAU,CAAC,GAAG,IAAI;YACvC;UACJ;QACJ;MACJ,CAAC;MACD,MAAM/c,IAAI,GAAGkK,gCAAgC,CAAC+S,OAAO,EAAE9W,IAAI,CAAC,CAAC,CAAC,EAAEL,OAAO,EAAE1E,YAAY,EAAEkc,SAAS,CAAC;MACjG,IAAI,CAACtd,IAAI,EAAE;QACP,OAAOA,IAAI;MACf;MACA;MACA,MAAMyd,MAAM,GAAGzd,IAAI,CAACa,IAAI,CAAC8F,QAAQ;MACjC,IAAI,OAAO8W,MAAM,KAAK,QAAQ,EAAE;QAC5B;QACA;QACAJ,eAAe,CAACI,MAAM,CAAC,GAAGzd,IAAI;MAClC,CAAC,MACI,IAAIyd,MAAM,EAAE;QACb;QACA;QACAA,MAAM,CAACV,UAAU,CAAC,GAAG/c,IAAI;MAC7B;MACA;MACA;MACA,IAAIyd,MAAM,IAAIA,MAAM,CAACC,GAAG,IAAID,MAAM,CAACE,KAAK,IAAI,OAAOF,MAAM,CAACC,GAAG,KAAK,UAAU,IACxE,OAAOD,MAAM,CAACE,KAAK,KAAK,UAAU,EAAE;QACpC3d,IAAI,CAAC0d,GAAG,GAAGD,MAAM,CAACC,GAAG,CAACE,IAAI,CAACH,MAAM,CAAC;QAClCzd,IAAI,CAAC2d,KAAK,GAAGF,MAAM,CAACE,KAAK,CAACC,IAAI,CAACH,MAAM,CAAC;MAC1C;MACA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,EAAE;QACtC,OAAOA,MAAM;MACjB;MACA,OAAOzd,IAAI;IACf,CAAC,MACI;MACD;MACA,OAAOyC,QAAQ,CAAC2C,KAAK,CAAC+D,MAAM,EAAEhD,IAAI,CAAC;IACvC;EACJ,CAAC,CAAC;EACNiX,WAAW,GACPlV,WAAW,CAACiB,MAAM,EAAE+T,UAAU,EAAGza,QAAQ,IAAK,UAAUuD,IAAI,EAAEG,IAAI,EAAE;IAChE,MAAM0X,EAAE,GAAG1X,IAAI,CAAC,CAAC,CAAC;IAClB,IAAInG,IAAI;IACR,IAAI,OAAO6d,EAAE,KAAK,QAAQ,EAAE;MACxB;MACA7d,IAAI,GAAGqd,eAAe,CAACQ,EAAE,CAAC;IAC9B,CAAC,MACI;MACD;MACA7d,IAAI,GAAG6d,EAAE,IAAIA,EAAE,CAACd,UAAU,CAAC;MAC3B;MACA,IAAI,CAAC/c,IAAI,EAAE;QACPA,IAAI,GAAG6d,EAAE;MACb;IACJ;IACA,IAAI7d,IAAI,IAAI,OAAOA,IAAI,CAACI,IAAI,KAAK,QAAQ,EAAE;MACvC,IAAIJ,IAAI,CAACE,KAAK,KAAK,cAAc,KAC5BF,IAAI,CAACe,QAAQ,IAAIf,IAAI,CAACa,IAAI,CAACC,UAAU,IAAId,IAAI,CAACW,QAAQ,KAAK,CAAC,CAAC,EAAE;QAChE,IAAI,OAAOkd,EAAE,KAAK,QAAQ,EAAE;UACxB,OAAOR,eAAe,CAACQ,EAAE,CAAC;QAC9B,CAAC,MACI,IAAIA,EAAE,EAAE;UACTA,EAAE,CAACd,UAAU,CAAC,GAAG,IAAI;QACzB;QACA;QACA/c,IAAI,CAACtC,IAAI,CAACwE,UAAU,CAAClC,IAAI,CAAC;MAC9B;IACJ,CAAC,MACI;MACD;MACAyC,QAAQ,CAAC2C,KAAK,CAAC+D,MAAM,EAAEhD,IAAI,CAAC;IAChC;EACJ,CAAC,CAAC;AACV;AAEA,SAAS2X,mBAAmBA,CAACxT,OAAO,EAAEmE,GAAG,EAAE;EACvC,MAAM;IAAErD,SAAS;IAAEC;EAAM,CAAC,GAAGoD,GAAG,CAACjG,gBAAgB,CAAC,CAAC;EACnD,IAAK,CAAC4C,SAAS,IAAI,CAACC,KAAK,IAAK,CAACf,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,IAAIA,OAAO,CAAC,EAAE;IACxF;EACJ;EACA,MAAMgR,SAAS,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,0BAA0B,CAAC;EAC9G7M,GAAG,CAACvF,cAAc,CAACuF,GAAG,EAAEnE,OAAO,CAACyT,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAEzC,SAAS,CAAC;AAC1F;AAEA,SAAS0C,gBAAgBA,CAAC1T,OAAO,EAAEmE,GAAG,EAAE;EACpC,IAAInR,IAAI,CAACmR,GAAG,CAAC7G,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE;IACtC;IACA;EACJ;EACA,MAAM;IAAE+U,UAAU;IAAEnH,oBAAoB;IAAEzL,QAAQ;IAAEC,SAAS;IAAEC;EAAmB,CAAC,GAAGwE,GAAG,CAACjG,gBAAgB,CAAC,CAAC;EAC5G;EACA,KAAK,IAAInG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsa,UAAU,CAACra,MAAM,EAAED,CAAC,EAAE,EAAE;IACxC,MAAMsK,SAAS,GAAGgQ,UAAU,CAACta,CAAC,CAAC;IAC/B,MAAM0T,cAAc,GAAGpJ,SAAS,GAAG3C,SAAS;IAC5C,MAAMgM,aAAa,GAAGrJ,SAAS,GAAG5C,QAAQ;IAC1C,MAAMnC,MAAM,GAAGqC,kBAAkB,GAAG8L,cAAc;IAClD,MAAME,aAAa,GAAGhM,kBAAkB,GAAG+L,aAAa;IACxDR,oBAAoB,CAAC7I,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC6I,oBAAoB,CAAC7I,SAAS,CAAC,CAAC3C,SAAS,CAAC,GAAGpC,MAAM;IACnD4N,oBAAoB,CAAC7I,SAAS,CAAC,CAAC5C,QAAQ,CAAC,GAAGkM,aAAa;EAC7D;EACA,MAAMgI,YAAY,GAAG3T,OAAO,CAAC,aAAa,CAAC;EAC3C,IAAI,CAAC2T,YAAY,IAAI,CAACA,YAAY,CAACpX,SAAS,EAAE;IAC1C;EACJ;EACA4H,GAAG,CAACzG,gBAAgB,CAACsC,OAAO,EAAEmE,GAAG,EAAE,CAACwP,YAAY,IAAIA,YAAY,CAACpX,SAAS,CAAC,CAAC;EAC5E,OAAO,IAAI;AACf;AACA,SAASqX,UAAUA,CAACthB,MAAM,EAAE6R,GAAG,EAAE;EAC7BA,GAAG,CAACnG,mBAAmB,CAAC1L,MAAM,EAAE6R,GAAG,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACAnR,IAAI,CAACU,YAAY,CAAC,QAAQ,EAAGpB,MAAM,IAAK;EACpC,MAAMuhB,WAAW,GAAGvhB,MAAM,CAACU,IAAI,CAACH,UAAU,CAAC,aAAa,CAAC,CAAC;EAC1D,IAAIghB,WAAW,EAAE;IACbA,WAAW,CAAC,CAAC;EACjB;AACJ,CAAC,CAAC;AACF7gB,IAAI,CAACU,YAAY,CAAC,QAAQ,EAAGpB,MAAM,IAAK;EACpC,MAAMmO,GAAG,GAAG,KAAK;EACjB,MAAMqT,KAAK,GAAG,OAAO;EACrBpB,UAAU,CAACpgB,MAAM,EAAEmO,GAAG,EAAEqT,KAAK,EAAE,SAAS,CAAC;EACzCpB,UAAU,CAACpgB,MAAM,EAAEmO,GAAG,EAAEqT,KAAK,EAAE,UAAU,CAAC;EAC1CpB,UAAU,CAACpgB,MAAM,EAAEmO,GAAG,EAAEqT,KAAK,EAAE,WAAW,CAAC;AAC/C,CAAC,CAAC;AACF9gB,IAAI,CAACU,YAAY,CAAC,uBAAuB,EAAGpB,MAAM,IAAK;EACnDogB,UAAU,CAACpgB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC;EACzDogB,UAAU,CAACpgB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC;EAC/DogB,UAAU,CAACpgB,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,CAAC;AACzE,CAAC,CAAC;AACFU,IAAI,CAACU,YAAY,CAAC,UAAU,EAAE,CAACpB,MAAM,EAAEU,IAAI,KAAK;EAC5C,MAAM+gB,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;EACtD,KAAK,IAAIhc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgc,eAAe,CAAC/b,MAAM,EAAED,CAAC,EAAE,EAAE;IAC7C,MAAMtF,IAAI,GAAGshB,eAAe,CAAChc,CAAC,CAAC;IAC/B6F,WAAW,CAACtL,MAAM,EAAEG,IAAI,EAAE,CAAC0F,QAAQ,EAAEmF,MAAM,EAAE7K,IAAI,KAAK;MAClD,OAAO,UAAUuhB,CAAC,EAAEnY,IAAI,EAAE;QACtB,OAAO7I,IAAI,CAACK,OAAO,CAAC8B,GAAG,CAACgD,QAAQ,EAAE7F,MAAM,EAAEuJ,IAAI,EAAEpJ,IAAI,CAAC;MACzD,CAAC;IACL,CAAC,CAAC;EACN;AACJ,CAAC,CAAC;AACFO,IAAI,CAACU,YAAY,CAAC,aAAa,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACpDyP,UAAU,CAACthB,MAAM,EAAE6R,GAAG,CAAC;EACvBuP,gBAAgB,CAACphB,MAAM,EAAE6R,GAAG,CAAC;EAC7B;EACA,MAAM8P,yBAAyB,GAAG3hB,MAAM,CAAC,2BAA2B,CAAC;EACrE,IAAI2hB,yBAAyB,IAAIA,yBAAyB,CAAC1X,SAAS,EAAE;IAClE4H,GAAG,CAACzG,gBAAgB,CAACpL,MAAM,EAAE6R,GAAG,EAAE,CAAC8P,yBAAyB,CAAC1X,SAAS,CAAC,CAAC;EAC5E;AACJ,CAAC,CAAC;AACFvJ,IAAI,CAACU,YAAY,CAAC,kBAAkB,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACzD5F,UAAU,CAAC,kBAAkB,CAAC;EAC9BA,UAAU,CAAC,wBAAwB,CAAC;AACxC,CAAC,CAAC;AACFvL,IAAI,CAACU,YAAY,CAAC,sBAAsB,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EAC7D5F,UAAU,CAAC,sBAAsB,CAAC;AACtC,CAAC,CAAC;AACFvL,IAAI,CAACU,YAAY,CAAC,YAAY,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACnD5F,UAAU,CAAC,YAAY,CAAC;AAC5B,CAAC,CAAC;AACFvL,IAAI,CAACU,YAAY,CAAC,aAAa,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACpD+N,uBAAuB,CAAC/N,GAAG,EAAE7R,MAAM,CAAC;AACxC,CAAC,CAAC;AACFU,IAAI,CAACU,YAAY,CAAC,gBAAgB,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACvDqP,mBAAmB,CAAClhB,MAAM,EAAE6R,GAAG,CAAC;AACpC,CAAC,CAAC;AACFnR,IAAI,CAACU,YAAY,CAAC,KAAK,EAAE,CAACpB,MAAM,EAAEU,IAAI,KAAK;EACvC;EACAkhB,QAAQ,CAAC5hB,MAAM,CAAC;EAChB,MAAM6hB,QAAQ,GAAGtU,UAAU,CAAC,SAAS,CAAC;EACtC,MAAMuU,QAAQ,GAAGvU,UAAU,CAAC,SAAS,CAAC;EACtC,MAAMwU,YAAY,GAAGxU,UAAU,CAAC,aAAa,CAAC;EAC9C,MAAMyU,aAAa,GAAGzU,UAAU,CAAC,cAAc,CAAC;EAChD,MAAM0U,OAAO,GAAG1U,UAAU,CAAC,QAAQ,CAAC;EACpC,MAAM2U,0BAA0B,GAAG3U,UAAU,CAAC,yBAAyB,CAAC;EACxE,SAASqU,QAAQA,CAACrV,MAAM,EAAE;IACtB,MAAM4V,cAAc,GAAG5V,MAAM,CAAC,gBAAgB,CAAC;IAC/C,IAAI,CAAC4V,cAAc,EAAE;MACjB;MACA;IACJ;IACA,MAAMC,uBAAuB,GAAGD,cAAc,CAAClY,SAAS;IACxD,SAASoY,eAAeA,CAACtc,MAAM,EAAE;MAC7B,OAAOA,MAAM,CAAC8b,QAAQ,CAAC;IAC3B;IACA,IAAIS,cAAc,GAAGF,uBAAuB,CAACnV,8BAA8B,CAAC;IAC5E,IAAIsV,iBAAiB,GAAGH,uBAAuB,CAAClV,iCAAiC,CAAC;IAClF,IAAI,CAACoV,cAAc,EAAE;MACjB,MAAMX,yBAAyB,GAAGpV,MAAM,CAAC,2BAA2B,CAAC;MACrE,IAAIoV,yBAAyB,EAAE;QAC3B,MAAMa,kCAAkC,GAAGb,yBAAyB,CAAC1X,SAAS;QAC9EqY,cAAc,GAAGE,kCAAkC,CAACvV,8BAA8B,CAAC;QACnFsV,iBAAiB,GAAGC,kCAAkC,CAACtV,iCAAiC,CAAC;MAC7F;IACJ;IACA,MAAMuV,kBAAkB,GAAG,kBAAkB;IAC7C,MAAMC,SAAS,GAAG,WAAW;IAC7B,SAASle,YAAYA,CAACpB,IAAI,EAAE;MACxB,MAAMa,IAAI,GAAGb,IAAI,CAACa,IAAI;MACtB,MAAM8B,MAAM,GAAG9B,IAAI,CAAC8B,MAAM;MAC1BA,MAAM,CAACic,aAAa,CAAC,GAAG,KAAK;MAC7Bjc,MAAM,CAACmc,0BAA0B,CAAC,GAAG,KAAK;MAC1C;MACA,MAAMpT,QAAQ,GAAG/I,MAAM,CAACgc,YAAY,CAAC;MACrC,IAAI,CAACO,cAAc,EAAE;QACjBA,cAAc,GAAGvc,MAAM,CAACkH,8BAA8B,CAAC;QACvDsV,iBAAiB,GAAGxc,MAAM,CAACmH,iCAAiC,CAAC;MACjE;MACA,IAAI4B,QAAQ,EAAE;QACVyT,iBAAiB,CAACjZ,IAAI,CAACvD,MAAM,EAAE0c,kBAAkB,EAAE3T,QAAQ,CAAC;MAChE;MACA,MAAM6T,WAAW,GAAG5c,MAAM,CAACgc,YAAY,CAAC,GAAG,MAAM;QAC7C,IAAIhc,MAAM,CAAC6c,UAAU,KAAK7c,MAAM,CAAC8c,IAAI,EAAE;UACnC;UACA;UACA,IAAI,CAAC5e,IAAI,CAAC6e,OAAO,IAAI/c,MAAM,CAACic,aAAa,CAAC,IAAI5e,IAAI,CAACE,KAAK,KAAKof,SAAS,EAAE;YACpE;YACA;YACA;YACA;YACA;YACA;YACA;YACA,MAAMK,SAAS,GAAGhd,MAAM,CAACrF,IAAI,CAACH,UAAU,CAAC,WAAW,CAAC,CAAC;YACtD,IAAIwF,MAAM,CAACyQ,MAAM,KAAK,CAAC,IAAIuM,SAAS,IAAIA,SAAS,CAACrd,MAAM,GAAG,CAAC,EAAE;cAC1D,MAAMsd,SAAS,GAAG5f,IAAI,CAACJ,MAAM;cAC7BI,IAAI,CAACJ,MAAM,GAAG,YAAY;gBACtB;gBACA;gBACA,MAAM+f,SAAS,GAAGhd,MAAM,CAACrF,IAAI,CAACH,UAAU,CAAC,WAAW,CAAC,CAAC;gBACtD,KAAK,IAAIkF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsd,SAAS,CAACrd,MAAM,EAAED,CAAC,EAAE,EAAE;kBACvC,IAAIsd,SAAS,CAACtd,CAAC,CAAC,KAAKrC,IAAI,EAAE;oBACvB2f,SAAS,CAAClO,MAAM,CAACpP,CAAC,EAAE,CAAC,CAAC;kBAC1B;gBACJ;gBACA,IAAI,CAACxB,IAAI,CAAC6e,OAAO,IAAI1f,IAAI,CAACE,KAAK,KAAKof,SAAS,EAAE;kBAC3CM,SAAS,CAAC1Z,IAAI,CAAClG,IAAI,CAAC;gBACxB;cACJ,CAAC;cACD2f,SAAS,CAACra,IAAI,CAACtF,IAAI,CAAC;YACxB,CAAC,MACI;cACDA,IAAI,CAACJ,MAAM,CAAC,CAAC;YACjB;UACJ,CAAC,MACI,IAAI,CAACiB,IAAI,CAAC6e,OAAO,IAAI/c,MAAM,CAACic,aAAa,CAAC,KAAK,KAAK,EAAE;YACvD;YACAjc,MAAM,CAACmc,0BAA0B,CAAC,GAAG,IAAI;UAC7C;QACJ;MACJ,CAAC;MACDI,cAAc,CAAChZ,IAAI,CAACvD,MAAM,EAAE0c,kBAAkB,EAAEE,WAAW,CAAC;MAC5D,MAAMM,UAAU,GAAGld,MAAM,CAAC8b,QAAQ,CAAC;MACnC,IAAI,CAACoB,UAAU,EAAE;QACbld,MAAM,CAAC8b,QAAQ,CAAC,GAAGze,IAAI;MAC3B;MACA8f,UAAU,CAAC1a,KAAK,CAACzC,MAAM,EAAE9B,IAAI,CAACsF,IAAI,CAAC;MACnCxD,MAAM,CAACic,aAAa,CAAC,GAAG,IAAI;MAC5B,OAAO5e,IAAI;IACf;IACA,SAAS+f,mBAAmBA,CAAA,EAAG,CAAE;IACjC,SAASzC,SAASA,CAACtd,IAAI,EAAE;MACrB,MAAMa,IAAI,GAAGb,IAAI,CAACa,IAAI;MACtB;MACA;MACAA,IAAI,CAAC6e,OAAO,GAAG,IAAI;MACnB,OAAOM,WAAW,CAAC5a,KAAK,CAACvE,IAAI,CAAC8B,MAAM,EAAE9B,IAAI,CAACsF,IAAI,CAAC;IACpD;IACA,MAAM8Z,UAAU,GAAG/X,WAAW,CAAC8W,uBAAuB,EAAE,MAAM,EAAE,MAAM,UAAUhZ,IAAI,EAAEG,IAAI,EAAE;MACxFH,IAAI,CAAC0Y,QAAQ,CAAC,GAAGvY,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK;MACjCH,IAAI,CAAC6Y,OAAO,CAAC,GAAG1Y,IAAI,CAAC,CAAC,CAAC;MACvB,OAAO8Z,UAAU,CAAC7a,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;IACvC,CAAC,CAAC;IACF,MAAM+Z,qBAAqB,GAAG,qBAAqB;IACnD,MAAMC,iBAAiB,GAAGhW,UAAU,CAAC,mBAAmB,CAAC;IACzD,MAAMiW,mBAAmB,GAAGjW,UAAU,CAAC,qBAAqB,CAAC;IAC7D,MAAM2V,UAAU,GAAG5X,WAAW,CAAC8W,uBAAuB,EAAE,MAAM,EAAE,MAAM,UAAUhZ,IAAI,EAAEG,IAAI,EAAE;MACxF,IAAI7I,IAAI,CAACK,OAAO,CAACyiB,mBAAmB,CAAC,KAAK,IAAI,EAAE;QAC5C;QACA;QACA;QACA,OAAON,UAAU,CAAC1a,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;MACvC;MACA,IAAIH,IAAI,CAAC0Y,QAAQ,CAAC,EAAE;QAChB;QACA,OAAOoB,UAAU,CAAC1a,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;MACvC,CAAC,MACI;QACD,MAAML,OAAO,GAAG;UAAEnD,MAAM,EAAEqD,IAAI;UAAEqa,GAAG,EAAEra,IAAI,CAAC6Y,OAAO,CAAC;UAAE/d,UAAU,EAAE,KAAK;UAAEqF,IAAI,EAAEA,IAAI;UAAEuZ,OAAO,EAAE;QAAM,CAAC;QACnG,MAAM1f,IAAI,GAAGkK,gCAAgC,CAACgW,qBAAqB,EAAEH,mBAAmB,EAAEja,OAAO,EAAE1E,YAAY,EAAEkc,SAAS,CAAC;QAC3H,IAAItX,IAAI,IAAIA,IAAI,CAAC8Y,0BAA0B,CAAC,KAAK,IAAI,IAAI,CAAChZ,OAAO,CAAC4Z,OAAO,IACrE1f,IAAI,CAACE,KAAK,KAAKof,SAAS,EAAE;UAC1B;UACA;UACA;UACAtf,IAAI,CAACJ,MAAM,CAAC,CAAC;QACjB;MACJ;IACJ,CAAC,CAAC;IACF,MAAMogB,WAAW,GAAG9X,WAAW,CAAC8W,uBAAuB,EAAE,OAAO,EAAE,MAAM,UAAUhZ,IAAI,EAAEG,IAAI,EAAE;MAC1F,MAAMnG,IAAI,GAAGif,eAAe,CAACjZ,IAAI,CAAC;MAClC,IAAIhG,IAAI,IAAI,OAAOA,IAAI,CAACI,IAAI,IAAI,QAAQ,EAAE;QACtC;QACA;QACA;QACA;QACA,IAAIJ,IAAI,CAACe,QAAQ,IAAI,IAAI,IAAKf,IAAI,CAACa,IAAI,IAAIb,IAAI,CAACa,IAAI,CAAC6e,OAAQ,EAAE;UAC3D;QACJ;QACA1f,IAAI,CAACtC,IAAI,CAACwE,UAAU,CAAClC,IAAI,CAAC;MAC9B,CAAC,MACI,IAAI1C,IAAI,CAACK,OAAO,CAACwiB,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAC/C;QACA,OAAOH,WAAW,CAAC5a,KAAK,CAACY,IAAI,EAAEG,IAAI,CAAC;MACxC;MACA;MACA;MACA;IACJ,CAAC,CAAC;EACN;AACJ,CAAC,CAAC;;AACF7I,IAAI,CAACU,YAAY,CAAC,aAAa,EAAGpB,MAAM,IAAK;EACzC;EACA,IAAIA,MAAM,CAAC,WAAW,CAAC,IAAIA,MAAM,CAAC,WAAW,CAAC,CAAC0jB,WAAW,EAAE;IACxD9V,cAAc,CAAC5N,MAAM,CAAC,WAAW,CAAC,CAAC0jB,WAAW,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;EAC5F;AACJ,CAAC,CAAC;AACFhjB,IAAI,CAACU,YAAY,CAAC,uBAAuB,EAAE,CAACpB,MAAM,EAAEU,IAAI,KAAK;EACzD;EACA,SAASijB,2BAA2BA,CAAC7F,OAAO,EAAE;IAC1C,OAAO,UAAU1L,CAAC,EAAE;MAChB,MAAMwR,UAAU,GAAGlG,cAAc,CAAC1d,MAAM,EAAE8d,OAAO,CAAC;MAClD8F,UAAU,CAAC/E,OAAO,CAACpb,SAAS,IAAI;QAC5B;QACA;QACA,MAAMogB,qBAAqB,GAAG7jB,MAAM,CAAC,uBAAuB,CAAC;QAC7D,IAAI6jB,qBAAqB,EAAE;UACvB,MAAMC,GAAG,GAAG,IAAID,qBAAqB,CAAC/F,OAAO,EAAE;YAAEhK,OAAO,EAAE1B,CAAC,CAAC0B,OAAO;YAAE4C,MAAM,EAAEtE,CAAC,CAACC;UAAU,CAAC,CAAC;UAC3F5O,SAAS,CAACT,MAAM,CAAC8gB,GAAG,CAAC;QACzB;MACJ,CAAC,CAAC;IACN,CAAC;EACL;EACA,IAAI9jB,MAAM,CAAC,uBAAuB,CAAC,EAAE;IACjCU,IAAI,CAAC6M,UAAU,CAAC,kCAAkC,CAAC,CAAC,GAChDoW,2BAA2B,CAAC,oBAAoB,CAAC;IACrDjjB,IAAI,CAAC6M,UAAU,CAAC,yBAAyB,CAAC,CAAC,GACvCoW,2BAA2B,CAAC,kBAAkB,CAAC;EACvD;AACJ,CAAC,CAAC;AACFjjB,IAAI,CAACU,YAAY,CAAC,gBAAgB,EAAE,CAACpB,MAAM,EAAEU,IAAI,EAAEmR,GAAG,KAAK;EACvDqO,mBAAmB,CAAClgB,MAAM,EAAE6R,GAAG,CAAC;AACpC,CAAC,CAAC","sources":["./apps/demo/src/polyfills.ts","./node_modules/zone.js/fesm2015/zone.js"],"sourcesContent":["/**\n * This file includes polyfills needed by Angular and is loaded before the app.\n * You can add your own extra polyfills to this file.\n *\n * This file is divided into 2 sections:\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n * file.\n *\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n *\n * Learn more in https://angular.io/guide/browser-support\n */\n\n/***************************************************************************************************\n * BROWSER POLYFILLS\n */\n\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\n\n/**\n * Web Animations `@angular/platform-browser/animations`\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\n */\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\n\n/**\n * By default, zone.js will patch all possible macroTask and DomEvents\n * user can disable parts of macroTask/DomEvents patch by setting following flags\n * because those flags need to be set before `zone.js` being loaded, and webpack\n * will put import in the top of bundle, so user need to create a separate file\n * in this directory (for example: zone-flags.ts), and put the following flags\n * into that file, and then add the following code before importing zone.js.\n * import './zone-flags.ts';\n *\n * The flags allowed in zone-flags.ts are listed here.\n *\n * The following flags will work for all browsers.\n *\n * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\n * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\n * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\n *\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\n *\n * (window as any).__Zone_enable_cross_context_check = true;\n *\n */\n\n/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js'; // Included with Angular CLI.\n\n/***************************************************************************************************\n * APPLICATION IMPORTS\n */\n","'use strict';\n/**\n * @license Angular v\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n((function (global) {\n const performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n // Initialize before it's accessed below.\n // __Zone_symbol_prefix global can be used to override the default zone\n // symbol prefix with a custom one if needed.\n const symbolPrefix = global['__Zone_symbol_prefix'] || '__zone_symbol__';\n function __symbol__(name) {\n return symbolPrefix + name;\n }\n const checkDuplicate = global[__symbol__('forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n }\n else {\n return global['Zone'];\n }\n }\n class Zone {\n // tslint:disable-next-line:require-internal-with-underscore\n static { this.__symbol__ = __symbol__; }\n static assertZonePatched() {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n }\n static get root() {\n let zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n }\n static get current() {\n return _currentZoneFrame.zone;\n }\n static get currentTask() {\n return _currentTask;\n }\n // tslint:disable-next-line:require-internal-with-underscore\n static __load_patch(name, fn, ignoreDuplicate = false) {\n if (patches.hasOwnProperty(name)) {\n // `checkDuplicate` option is defined from global variable\n // so it works for all modules.\n // `ignoreDuplicate` can work for the specified module\n if (!ignoreDuplicate && checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n const perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n }\n get parent() {\n return this._parent;\n }\n get name() {\n return this._name;\n }\n constructor(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new _ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n get(key) {\n const zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n }\n getZoneWith(key) {\n let current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n }\n fork(zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n }\n wrap(callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n const _callback = this._zoneDelegate.intercept(this, callback, source);\n const zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n }\n run(callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runGuarded(callback, applyThis = null, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n }\n runTask(task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n const reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n const previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n }\n scheduleTask(task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n let newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n const zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n }\n scheduleMicroTask(source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n }\n scheduleMacroTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n }\n scheduleEventTask(source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n }\n cancelTask(task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n if (task.state !== scheduled && task.state !== running) {\n return;\n }\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n }\n _updateTaskCount(task, count) {\n const zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (let i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n }\n }\n const DELEGATE_ZS = {\n name: '',\n onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState),\n onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task),\n onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs),\n onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task)\n };\n class _ZoneDelegate {\n constructor(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone =\n zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate._forkCurrZone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate._interceptCurrZone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone =\n zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate._invokeCurrZone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate._handleErrorCurrZone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec &&\n (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate._scheduleTaskCurrZone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate._invokeTaskCurrZone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate._cancelTaskCurrZone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n const parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n fork(targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n }\n intercept(targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n }\n invoke(targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n }\n handleError(targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n }\n scheduleTask(targetZone, task) {\n let returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n // clang-format off\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n // clang-format on\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n }\n invokeTask(targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n }\n cancelTask(targetZone, task) {\n let value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n }\n hasTask(targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _updateTaskCount(type, count) {\n const counts = this._taskCounts;\n const prev = counts[type];\n const next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n const isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n }\n }\n class ZoneTask {\n constructor(type, source, callback, options, scheduleFn, cancelFn) {\n // tslint:disable-next-line:require-internal-with-underscore\n this._zone = null;\n this.runCount = 0;\n // tslint:disable-next-line:require-internal-with-underscore\n this._zoneDelegates = null;\n // tslint:disable-next-line:require-internal-with-underscore\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n if (!callback) {\n throw new Error('callback is not defined');\n }\n this.callback = callback;\n const self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n static invokeTask(task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n }\n get zone() {\n return this._zone;\n }\n get state() {\n return this._state;\n }\n cancelScheduleRequest() {\n this._transitionTo(notScheduled, scheduling);\n }\n // tslint:disable-next-line:require-internal-with-underscore\n _transitionTo(toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \\'' + fromState2 + '\\'' : ''}, was '${this._state}'.`);\n }\n }\n toString() {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n }\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n toJSON() {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const symbolSetTimeout = __symbol__('setTimeout');\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n let _microTaskQueue = [];\n let _isDrainingMicrotaskQueue = false;\n let nativeMicroTaskQueuePromise;\n function nativeScheduleMicroTask(func) {\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n let nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, func);\n }\n else {\n global[symbolSetTimeout](func, 0);\n }\n }\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n nativeScheduleMicroTask(drainMicroTaskQueue);\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n const queue = _microTaskQueue;\n _microTaskQueue = [];\n for (let i = 0; i < queue.length; i++) {\n const task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n const NO_ZONE = { name: 'NO ZONE' };\n const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n const patches = {};\n const _api = {\n symbol: __symbol__,\n currentZoneFrame: () => _currentZoneFrame,\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')],\n patchEventTarget: () => [],\n patchOnProperties: noop,\n patchMethod: () => noop,\n bindArguments: () => [],\n patchThen: () => noop,\n patchMacroTask: () => noop,\n patchEventPrototype: () => noop,\n isIEOrEdge: () => false,\n getGlobalObjects: () => undefined,\n ObjectDefineProperty: () => noop,\n ObjectGetOwnPropertyDescriptor: () => undefined,\n ObjectCreate: () => undefined,\n ArraySlice: () => [],\n patchClass: () => noop,\n wrapWithCurrentZone: () => noop,\n filterProperties: () => [],\n attachOriginToPatched: () => noop,\n _redefineProperty: () => noop,\n patchCallbacks: () => noop,\n nativeScheduleMicroTask: nativeScheduleMicroTask\n };\n let _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n let _currentTask = null;\n let _numberOfNestedTaskFrames = 0;\n function noop() { }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n}))(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n/// \n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nconst ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nconst ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nconst ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nconst ObjectCreate = Object.create;\n/** Array.prototype.slice */\nconst ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nconst ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nconst REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nconst ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nconst ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nconst TRUE_STR = 'true';\n/** false string const */\nconst FALSE_STR = 'false';\n/** Zone symbol prefix string const. */\nconst ZONE_SYMBOL_PREFIX = Zone.__symbol__('');\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nconst zoneSymbol = Zone.__symbol__;\nconst isWindowExists = typeof window !== 'undefined';\nconst internalWindow = isWindowExists ? window : undefined;\nconst _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nconst REMOVE_ATTRIBUTE = 'removeAttribute';\nfunction bindArguments(args, source) {\n for (let i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n const source = prototype.constructor['name'];\n for (let i = 0; i < fnNames.length; i++) {\n const name = fnNames[i];\n const delegate = prototype[name];\n if (delegate) {\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name);\n if (!isPropertyWritable(prototypeDesc)) {\n continue;\n }\n prototype[name] = ((delegate) => {\n const patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nconst isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nconst isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nconst isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nconst zoneSymbolEventNames$1 = {};\nconst wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n let eventNameSymbol = zoneSymbolEventNames$1[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n const target = this || event.target || _global;\n const listener = target[eventNameSymbol];\n let result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signature\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n const errorEvent = event;\n result = listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n let desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n const originalDescGet = desc.get;\n const originalDescSet = desc.set;\n // slice(2) cuz 'onclick' -> 'click', etc\n const eventName = prop.slice(2);\n let eventNameSymbol = zoneSymbolEventNames$1[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames$1[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n const previousValue = target[eventNameSymbol];\n if (typeof previousValue === 'function') {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n originalDescSet && originalDescSet.call(target, null);\n target[eventNameSymbol] = newValue;\n if (typeof newValue === 'function') {\n target.addEventListener(eventName, wrapFn, false);\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n let target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n const listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n let value = originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (let i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n const onProperties = [];\n for (const prop in obj) {\n if (prop.slice(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (let j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nconst originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n const OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n const a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n const instance = new OriginalClass(function () { });\n let prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n let proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n const delegateName = zoneSymbol(name);\n let delegate = null;\n if (proto && (!(delegate = proto[delegateName]) || !proto.hasOwnProperty(delegateName))) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n const patchDelegate = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n let setNative = null;\n function scheduleTask(task) {\n const data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, (delegate) => function (self, args) {\n const meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n });\n}\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nlet isDetectedIEOrEdge = false;\nlet ieOrEdge = false;\nfunction isIE() {\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) {\n }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n const ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n }\n catch (error) {\n }\n return ieOrEdge;\n}\n\nZone.__load_patch('ZoneAwarePromise', (global, Zone, api) => {\n const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n const ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n const className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n const __symbol__ = api.symbol;\n const _uncaughtPromiseErrors = [];\n const isDisableWrappingUncaughtPromiseRejection = global[__symbol__('DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION')] === true;\n const symbolPromise = __symbol__('Promise');\n const symbolThen = __symbol__('then');\n const creationTrace = '__creationTrace__';\n api.onUnhandledError = (e) => {\n if (api.showUncaughtError()) {\n const rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = () => {\n while (_uncaughtPromiseErrors.length) {\n const uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(() => {\n if (uncaughtPromiseError.throwOriginal) {\n throw uncaughtPromiseError.rejection;\n }\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n }\n };\n const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n const symbolState = __symbol__('state');\n const symbolValue = __symbol__('value');\n const symbolFinally = __symbol__('finally');\n const symbolParentPromiseValue = __symbol__('parentPromiseValue');\n const symbolParentPromiseState = __symbol__('parentPromiseState');\n const source = 'Promise.then';\n const UNRESOLVED = null;\n const RESOLVED = true;\n const REJECTED = false;\n const REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return (v) => {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n const once = function () {\n let wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n const TYPE_ERROR = 'Promise resolved with itself';\n const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n const onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n let then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(() => {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n const queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n const trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (let i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n let uncaughtPromiseError = value;\n try {\n // Here we throws a new Error to print more readable error log\n // and if the value is not an error, zone.js builds an `Error`\n // Object here to attach the stack information.\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n uncaughtPromiseError = err;\n }\n if (isDisableWrappingUncaughtPromiseRejection) {\n // If disable wrapping uncaught promise reject\n // use the value instead of wrapping it.\n uncaughtPromiseError.throwOriginal = true;\n }\n uncaughtPromiseError.rejection = value;\n uncaughtPromiseError.promise = promise;\n uncaughtPromiseError.zone = Zone.current;\n uncaughtPromiseError.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(uncaughtPromiseError);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n const handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (let i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n const promiseState = promise[symbolState];\n const delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected :\n forwardRejection;\n zone.scheduleMicroTask(source, () => {\n try {\n const parentPromiseValue = promise[symbolValue];\n const isFinallyPromise = !!chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?\n [] :\n [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n const noop = function () { };\n const AggregateError = global.AggregateError;\n class ZoneAwarePromise {\n static toString() {\n return ZONE_AWARE_PROMISE_TO_STRING;\n }\n static resolve(value) {\n return resolvePromise(new this(null), RESOLVED, value);\n }\n static reject(error) {\n return resolvePromise(new this(null), REJECTED, error);\n }\n static any(values) {\n if (!values || typeof values[Symbol.iterator] !== 'function') {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n const promises = [];\n let count = 0;\n try {\n for (let v of values) {\n count++;\n promises.push(ZoneAwarePromise.resolve(v));\n }\n }\n catch (err) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n if (count === 0) {\n return Promise.reject(new AggregateError([], 'All promises were rejected'));\n }\n let finished = false;\n const errors = [];\n return new ZoneAwarePromise((resolve, reject) => {\n for (let i = 0; i < promises.length; i++) {\n promises[i].then(v => {\n if (finished) {\n return;\n }\n finished = true;\n resolve(v);\n }, err => {\n errors.push(err);\n count--;\n if (count === 0) {\n finished = true;\n reject(new AggregateError(errors, 'All promises were rejected'));\n }\n });\n }\n });\n }\n ;\n static race(values) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n resolve(value);\n }\n function onReject(error) {\n reject(error);\n }\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n }\n static all(values) {\n return ZoneAwarePromise.allWithCallback(values);\n }\n static allSettled(values) {\n const P = this && this.prototype instanceof ZoneAwarePromise ? this : ZoneAwarePromise;\n return P.allWithCallback(values, {\n thenCallback: (value) => ({ status: 'fulfilled', value }),\n errorCallback: (err) => ({ status: 'rejected', reason: err })\n });\n }\n static allWithCallback(values, callback) {\n let resolve;\n let reject;\n let promise = new this((res, rej) => {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n let unresolvedCount = 2;\n let valueIndex = 0;\n const resolvedValues = [];\n for (let value of values) {\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n const curValueIndex = valueIndex;\n try {\n value.then((value) => {\n resolvedValues[curValueIndex] = callback ? callback.thenCallback(value) : value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, (err) => {\n if (!callback) {\n reject(err);\n }\n else {\n resolvedValues[curValueIndex] = callback.errorCallback(err);\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }\n });\n }\n catch (thenErr) {\n reject(thenErr);\n }\n unresolvedCount++;\n valueIndex++;\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n }\n constructor(executor) {\n const promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n const onceWrapper = once();\n executor &&\n executor(onceWrapper(makeResolver(promise, RESOLVED)), onceWrapper(makeResolver(promise, REJECTED)));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n get [Symbol.toStringTag]() {\n return 'Promise';\n }\n get [Symbol.species]() {\n return ZoneAwarePromise;\n }\n then(onFulfilled, onRejected) {\n // We must read `Symbol.species` safely because `this` may be anything. For instance, `this`\n // may be an object without a prototype (created through `Object.create(null)`); thus\n // `this.constructor` will be undefined. One of the use cases is SystemJS creating\n // prototype-less objects (modules) via `Object.create(null)`. The SystemJS creates an empty\n // object and copies promise properties into that object (within the `getOrCreateLoad`\n // function). The zone.js then checks if the resolved value has the `then` method and invokes\n // it with the `value` context. Otherwise, this will throw an error: `TypeError: Cannot read\n // properties of undefined (reading 'Symbol(Symbol.species)')`.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = this.constructor || ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n }\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n finally(onFinally) {\n // See comment on the call to `then` about why thee `Symbol.species` is safely accessed.\n let C = this.constructor?.[Symbol.species];\n if (!C || typeof C !== 'function') {\n C = ZoneAwarePromise;\n }\n const chainPromise = new C(noop);\n chainPromise[symbolFinally] = symbolFinally;\n const zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n }\n }\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n const NativePromise = global[symbolPromise] = global['Promise'];\n global['Promise'] = ZoneAwarePromise;\n const symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n const proto = Ctor.prototype;\n const prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n const originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n const wrapped = new ZoneAwarePromise((resolve, reject) => {\n originalThen.call(this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n function zoneify(fn) {\n return function (self, args) {\n let resultPromise = fn.apply(self, args);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n let ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n patchMethod(global, 'fetch', delegate => zoneify(delegate));\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', (global) => {\n // patch Func.prototype.toString to let them look like native\n const originalFunctionToString = Function.prototype.toString;\n const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n const PROMISE_SYMBOL = zoneSymbol('Promise');\n const ERROR_SYMBOL = zoneSymbol('Error');\n const newFunctionToString = function toString() {\n if (typeof this === 'function') {\n const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.call(originalDelegate);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n const nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.call(nativePromise);\n }\n }\n if (this === Error) {\n const nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.call(nativeError);\n }\n }\n }\n return originalFunctionToString.call(this);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n const originalObjectToString = Object.prototype.toString;\n const PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (typeof Promise === 'function' && this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.call(this);\n };\n});\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nlet passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n // Note: We pass the `options` object as the event handler too. This is not compatible with the\n // signature of `addEventListener` or `removeEventListener` but enables us to remove the handler\n // without an actual handler.\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nconst OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nconst zoneSymbolEventNames = {};\nconst globalSources = {};\nconst EVENT_NAME_SYMBOL_REGX = new RegExp('^' + ZONE_SYMBOL_PREFIX + '(\\\\w+)(true|false)$');\nconst IMMEDIATE_PROPAGATION_SYMBOL = zoneSymbol('propagationStopped');\nfunction prepareEventNames(eventName, eventNameToString) {\n const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n}\nfunction patchEventTarget(_global, api, apis, patchOptions) {\n const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n const PREPEND_EVENT_LISTENER = 'prependListener';\n const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n const invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n const delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = (event) => delegate.handleEvent(event);\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n // need to try/catch error here, otherwise, the error in one event listener\n // will break the executions of the other event listeners. Also error will\n // not remove the event listener when `once` options is true.\n let error;\n try {\n task.invoke(task, target, [event]);\n }\n catch (err) {\n error = err;\n }\n const options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n const delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options);\n }\n return error;\n };\n function globalCallback(context, event, isCapture) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n const target = context || event.target || _global;\n const tasks = target[zoneSymbolEventNames[event.type][isCapture ? TRUE_STR : FALSE_STR]];\n if (tasks) {\n const errors = [];\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n const err = invokeTask(tasks[0], target, event);\n err && errors.push(err);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n const copyTasks = tasks.slice();\n for (let i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n const err = invokeTask(copyTasks[i], target, event);\n err && errors.push(err);\n }\n }\n // Since there is only one error, we don't need to schedule microTask\n // to throw the error.\n if (errors.length === 1) {\n throw errors[0];\n }\n else {\n for (let i = 0; i < errors.length; i++) {\n const err = errors[i];\n api.nativeScheduleMicroTask(() => {\n throw err;\n });\n }\n }\n }\n }\n // global shared zoneAwareCallback to handle all event callback with capture = false\n const globalZoneAwareCallback = function (event) {\n return globalCallback(this, event, false);\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n const globalZoneAwareCaptureCallback = function (event) {\n return globalCallback(this, event, true);\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n let useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n const validateHandler = patchOptions && patchOptions.vh;\n let checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n let returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n let proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n const eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n const taskData = {};\n const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n let nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n /**\n * This util function will build an option object with passive option\n * to handle all possible input from the user.\n */\n function buildEventListenerOptions(options, passive) {\n if (!passiveSupported && typeof options === 'object' && options) {\n // doesn't support passive but user want to pass an object as options.\n // this will not work on some old browser, so we just pass a boolean\n // as useCapture parameter\n return !!options.capture;\n }\n if (!passiveSupported || !passive) {\n return options;\n }\n if (typeof options === 'boolean') {\n return { capture: options, passive: true };\n }\n if (!options) {\n return { passive: true };\n }\n if (typeof options === 'object' && options.passive !== false) {\n return { ...options, passive: true };\n }\n return options;\n }\n const customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n const customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n const symbolEventNames = zoneSymbolEventNames[task.eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n const customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n const customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n const compareTaskCallbackVsDelegate = function (task, delegate) {\n const typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n const unpatchedEvents = Zone[zoneSymbol('UNPATCHED_EVENTS')];\n const passiveEvents = _global[zoneSymbol('PASSIVE_EVENTS')];\n const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) {\n return function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n let delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n let isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n const passive = passiveSupported && !!passiveEvents && passiveEvents.indexOf(eventName) !== -1;\n const options = buildEventListenerOptions(arguments[2], passive);\n if (unpatchedEvents) {\n // check unpatched list\n for (let i = 0; i < unpatchedEvents.length; i++) {\n if (eventName === unpatchedEvents[i]) {\n if (passive) {\n return nativeListener.call(target, eventName, delegate, options);\n }\n else {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n }\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const once = options && typeof options === 'object' ? options.once : false;\n const zone = Zone.current;\n let symbolEventNames = zoneSymbolEventNames[eventName];\n if (!symbolEventNames) {\n prepareEventNames(eventName, eventNameToString);\n symbolEventNames = zoneSymbolEventNames[eventName];\n }\n const symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n let existingTasks = target[symbolEventName];\n let isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (let i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n let source;\n const constructorName = target.constructor['name'];\n const targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const options = arguments[2];\n const capture = !options ? false : typeof options === 'boolean' ? true : options.capture;\n const delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n let symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n const existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (let i = 0; i < existingTasks.length; i++) {\n const existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n // in the target, we have an event listener which is added by on_property\n // such as target.onclick = function() {}, so we need to clear this internal\n // property too if all delegates all removed\n if (typeof eventName === 'string') {\n const onPropertySymbol = ZONE_SYMBOL_PREFIX + 'ON_PROPERTY' + eventName;\n target[onPropertySymbol] = null;\n }\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const listeners = [];\n const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (let i = 0; i < tasks.length; i++) {\n const task = tasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n const target = this || _global;\n let eventName = arguments[0];\n if (!eventName) {\n const keys = Object.keys(target);\n for (let i = 0; i < keys.length; i++) {\n const prop = keys[i];\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n if (patchOptions && patchOptions.transferEventName) {\n eventName = patchOptions.transferEventName(eventName);\n }\n const symbolEventNames = zoneSymbolEventNames[eventName];\n if (symbolEventNames) {\n const symbolEventName = symbolEventNames[FALSE_STR];\n const symbolCaptureEventName = symbolEventNames[TRUE_STR];\n const tasks = target[symbolEventName];\n const captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n const removeTasks = tasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n const removeTasks = captureTasks.slice();\n for (let i = 0; i < removeTasks.length; i++) {\n const task = removeTasks[i];\n let delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n let results = [];\n for (let i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n if (!eventName) {\n const foundTasks = [];\n for (let prop in target) {\n const match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n let evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n const tasks = target[prop];\n if (tasks) {\n for (let i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n }\n let symbolEventName = zoneSymbolEventNames[eventName];\n if (!symbolEventName) {\n prepareEventNames(eventName);\n symbolEventName = zoneSymbolEventNames[eventName];\n }\n const captureFalseTasks = target[symbolEventName[FALSE_STR]];\n const captureTrueTasks = target[symbolEventName[TRUE_STR]];\n if (!captureFalseTasks) {\n return captureTrueTasks ? captureTrueTasks.slice() : [];\n }\n else {\n return captureTrueTasks ? captureFalseTasks.concat(captureTrueTasks) :\n captureFalseTasks.slice();\n }\n}\nfunction patchEventPrototype(global, api) {\n const Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n });\n }\n}\n\nfunction patchCallbacks(api, target, targetName, method, callbacks) {\n const symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n const nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n const source = `${targetName}.${method}::` + callback;\n const prototype = opts.prototype;\n // Note: the `patchCallbacks` is used for patching the `document.registerElement` and\n // `customElements.define`. We explicitly wrap the patching code into try-catch since\n // callbacks may be already patched by other web components frameworks (e.g. LWC), and they\n // make those properties non-writable. This means that patching callback will throw an error\n // `cannot assign to read-only property`. See this code as an example:\n // https://github.com/salesforce/lwc/blob/master/packages/@lwc/engine-core/src/framework/base-bridge-element.ts#L180-L186\n // We don't want to stop the application rendering if we couldn't patch some\n // callback, e.g. `attributeChangedCallback`.\n try {\n if (prototype.hasOwnProperty(callback)) {\n const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = api.wrapWithCurrentZone(descriptor.value, source);\n api._redefineProperty(opts.prototype, callback, descriptor);\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source);\n }\n }\n catch {\n // Note: we leave the catch block empty since there's no way to handle the error related\n // to non-writable property.\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n api.attachOriginToPatched(target[method], nativeDelegate);\n}\n\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n const tip = ignoreProperties.filter(ip => ip.target === target);\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n const targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1);\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n const filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\n/**\n * Get all event name properties which the event name startsWith `on`\n * from the target object itself, inherited properties are not considered.\n */\nfunction getOnEventNames(target) {\n return Object.getOwnPropertyNames(target)\n .filter(name => name.startsWith('on') && name.length > 2)\n .map(name => name.substring(2));\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n if (Zone[api.symbol('patchEvents')]) {\n // events are already been patched by legacy patch.\n return;\n }\n const ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n let patchTargets = [];\n if (isBrowser) {\n const internalWindow = window;\n patchTargets = patchTargets.concat([\n 'Document', 'SVGElement', 'Element', 'HTMLElement', 'HTMLBodyElement', 'HTMLMediaElement',\n 'HTMLFrameSetElement', 'HTMLFrameElement', 'HTMLIFrameElement', 'HTMLMarqueeElement', 'Worker'\n ]);\n const ignoreErrorProperties = isIE() ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, getOnEventNames(internalWindow), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n }\n patchTargets = patchTargets.concat([\n 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'IDBIndex', 'IDBRequest', 'IDBOpenDBRequest',\n 'IDBDatabase', 'IDBTransaction', 'IDBCursor', 'WebSocket'\n ]);\n for (let i = 0; i < patchTargets.length; i++) {\n const target = _global[patchTargets[i]];\n target && target.prototype &&\n patchFilteredProperties(target.prototype, getOnEventNames(target.prototype), ignoreProperties);\n }\n}\n\nZone.__load_patch('util', (global, Zone, api) => {\n // Collect native event names by looking at properties\n // on the global namespace, e.g. 'onclick'.\n const eventNames = getOnEventNames(global);\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n api.patchMacroTask = patchMacroTask;\n // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to\n // define which events will not be patched by `Zone.js`.\n // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep\n // the name consistent with angular repo.\n // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for\n // backwards compatibility.\n const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS');\n if (global[SYMBOL_UNPATCHED_EVENTS]) {\n global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS];\n }\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] =\n global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n api.patchEventPrototype = patchEventPrototype;\n api.patchEventTarget = patchEventTarget;\n api.isIEOrEdge = isIEOrEdge;\n api.ObjectDefineProperty = ObjectDefineProperty;\n api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor;\n api.ObjectCreate = ObjectCreate;\n api.ArraySlice = ArraySlice;\n api.patchClass = patchClass;\n api.wrapWithCurrentZone = wrapWithCurrentZone;\n api.filterProperties = filterProperties;\n api.attachOriginToPatched = attachOriginToPatched;\n api._redefineProperty = Object.defineProperty;\n api.patchCallbacks = patchCallbacks;\n api.getGlobalObjects = () => ({\n globalSources,\n zoneSymbolEventNames,\n eventNames,\n isBrowser,\n isMix,\n isNode,\n TRUE_STR,\n FALSE_STR,\n ZONE_SYMBOL_PREFIX,\n ADD_EVENT_LISTENER_STR,\n REMOVE_EVENT_LISTENER_STR\n });\n});\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nfunction patchQueueMicrotask(global, api) {\n api.patchMethod(global, 'queueMicrotask', (delegate) => {\n return function (self, args) {\n Zone.current.scheduleMicroTask('queueMicrotask', args[0]);\n };\n });\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nconst taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n let setNative = null;\n let clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n const tasksByHandleId = {};\n function scheduleTask(task) {\n const data = task.data;\n data.args[0] = function () {\n return task.invoke.apply(this, arguments);\n };\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative.call(window, task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, (delegate) => function (self, args) {\n if (typeof args[0] === 'function') {\n const options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :\n undefined,\n args: args\n };\n const callback = args[0];\n args[0] = function timer() {\n try {\n return callback.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n // https://github.com/angular/angular/issues/40387\n // Cleanup tasksByHandleId should be handled before scheduleTask\n // Since some zoneSpec may intercept and doesn't trigger\n // scheduleFn(scheduleTask) provided here.\n if (!(options.isPeriodic)) {\n if (typeof options.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[options.handleId];\n }\n else if (options.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n options.handleId[taskSymbol] = null;\n }\n }\n }\n };\n const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n const handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n });\n clearNative =\n patchMethod(window, cancelName, (delegate) => function (self, args) {\n const id = args[0];\n let task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n });\n}\n\nfunction patchCustomElements(_global, api) {\n const { isBrowser, isMix } = api.getGlobalObjects();\n if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) {\n return;\n }\n const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];\n api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks);\n}\n\nfunction eventTargetPatch(_global, api) {\n if (Zone[api.symbol('patchEventTarget')]) {\n // EventTarget is already patched.\n return;\n }\n const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects();\n // predefine all __zone_symbol__ + eventName + true/false string\n for (let i = 0; i < eventNames.length; i++) {\n const eventName = eventNames[i];\n const falseEventName = eventName + FALSE_STR;\n const trueEventName = eventName + TRUE_STR;\n const symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames[eventName] = {};\n zoneSymbolEventNames[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;\n }\n const EVENT_TARGET = _global['EventTarget'];\n if (!EVENT_TARGET || !EVENT_TARGET.prototype) {\n return;\n }\n api.patchEventTarget(_global, api, [EVENT_TARGET && EVENT_TARGET.prototype]);\n return true;\n}\nfunction patchEvent(global, api) {\n api.patchEventPrototype(global, api);\n}\n\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('legacy', (global) => {\n const legacyPatch = global[Zone.__symbol__('legacyPatch')];\n if (legacyPatch) {\n legacyPatch();\n }\n});\nZone.__load_patch('timers', (global) => {\n const set = 'set';\n const clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', (global) => {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', (global, Zone) => {\n const blockingMethods = ['alert', 'prompt', 'confirm'];\n for (let i = 0; i < blockingMethods.length; i++) {\n const name = blockingMethods[i];\n patchMethod(global, name, (delegate, symbol, name) => {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', (global, Zone, api) => {\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, api, [XMLHttpRequestEventTarget.prototype]);\n }\n});\nZone.__load_patch('MutationObserver', (global, Zone, api) => {\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n});\nZone.__load_patch('IntersectionObserver', (global, Zone, api) => {\n patchClass('IntersectionObserver');\n});\nZone.__load_patch('FileReader', (global, Zone, api) => {\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', (global, Zone, api) => {\n propertyDescriptorPatch(api, global);\n});\nZone.__load_patch('customElements', (global, Zone, api) => {\n patchCustomElements(global, api);\n});\nZone.__load_patch('XHR', (global, Zone) => {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n const XHR_TASK = zoneSymbol('xhrTask');\n const XHR_SYNC = zoneSymbol('xhrSync');\n const XHR_LISTENER = zoneSymbol('xhrListener');\n const XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n const XHR_URL = zoneSymbol('xhrURL');\n const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n const XMLHttpRequest = window['XMLHttpRequest'];\n if (!XMLHttpRequest) {\n // XMLHttpRequest is not available in service worker\n return;\n }\n const XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n const READY_STATE_CHANGE = 'readystatechange';\n const SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n const data = task.data;\n const target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n const listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n const newListener = target[XHR_LISTENER] = () => {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n // Also if the request failed without response (status = 0), the load event handler\n // will not be triggered, in that case, we should also invoke the placeholder callback\n // to close the XMLHttpRequest::send macroTask.\n // https://github.com/angular/angular/issues/38795\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n if (target.status !== 0 && loadTasks && loadTasks.length > 0) {\n const oriInvoke = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n const loadTasks = target[Zone.__symbol__('loadfalse')];\n for (let i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n const storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n const data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n });\n const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n const fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };\n const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n });\n const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) {\n const task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n });\n }\n});\nZone.__load_patch('geolocation', (global) => {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', (global, Zone) => {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n const eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(eventTask => {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n const PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\nZone.__load_patch('queueMicrotask', (global, Zone, api) => {\n patchQueueMicrotask(global, api);\n});\n"],"names":["global","performance","mark","name","performanceMeasure","label","symbolPrefix","__symbol__","checkDuplicate","Error","Zone","assertZonePatched","patches","root","zone","current","parent","_currentZoneFrame","currentTask","_currentTask","__load_patch","fn","ignoreDuplicate","hasOwnProperty","perfName","_api","_parent","_name","constructor","zoneSpec","_properties","properties","_zoneDelegate","_ZoneDelegate","get","key","getZoneWith","fork","wrap","callback","source","_callback","intercept","runGuarded","arguments","run","applyThis","applyArgs","invoke","error","handleError","runTask","task","NO_ZONE","state","notScheduled","type","eventTask","macroTask","reEntryGuard","running","_transitionTo","scheduled","runCount","previousTask","data","isPeriodic","cancelFn","undefined","invokeTask","unknown","_updateTaskCount","scheduleTask","newZone","scheduling","zoneDelegates","_zoneDelegates","_zone","err","scheduleMicroTask","customSchedule","ZoneTask","microTask","scheduleMacroTask","customCancel","scheduleEventTask","cancelTask","canceling","count","i","length","DELEGATE_ZS","onHasTask","delegate","_","target","hasTaskState","hasTask","onScheduleTask","onInvokeTask","onCancelTask","parentDelegate","_taskCounts","_parentDelegate","_forkZS","onFork","_forkDlgt","_forkCurrZone","_interceptZS","onIntercept","_interceptDlgt","_interceptCurrZone","_invokeZS","onInvoke","_invokeDlgt","_invokeCurrZone","_handleErrorZS","onHandleError","_handleErrorDlgt","_handleErrorCurrZone","_scheduleTaskZS","_scheduleTaskDlgt","_scheduleTaskCurrZone","_invokeTaskZS","_invokeTaskDlgt","_invokeTaskCurrZone","_cancelTaskZS","_cancelTaskDlgt","_cancelTaskCurrZone","_hasTaskZS","_hasTaskDlgt","_hasTaskDlgtOwner","_hasTaskCurrZone","zoneSpecHasTask","parentHasTask","targetZone","apply","returnTask","push","scheduleFn","value","isEmpty","counts","prev","next","change","options","_state","self","useG","call","args","_numberOfNestedTaskFrames","drainMicroTaskQueue","cancelScheduleRequest","toState","fromState1","fromState2","toString","handleId","Object","prototype","toJSON","symbolSetTimeout","symbolPromise","symbolThen","_microTaskQueue","_isDrainingMicrotaskQueue","nativeMicroTaskQueuePromise","nativeScheduleMicroTask","func","resolve","nativeThen","queue","onUnhandledError","microtaskDrainDone","symbol","currentZoneFrame","noop","showUncaughtError","patchEventTarget","patchOnProperties","patchMethod","bindArguments","patchThen","patchMacroTask","patchEventPrototype","isIEOrEdge","getGlobalObjects","ObjectDefineProperty","ObjectGetOwnPropertyDescriptor","ObjectCreate","ArraySlice","patchClass","wrapWithCurrentZone","filterProperties","attachOriginToPatched","_redefineProperty","patchCallbacks","window","getOwnPropertyDescriptor","defineProperty","ObjectGetPrototypeOf","getPrototypeOf","create","Array","slice","ADD_EVENT_LISTENER_STR","REMOVE_EVENT_LISTENER_STR","ZONE_SYMBOL_ADD_EVENT_LISTENER","ZONE_SYMBOL_REMOVE_EVENT_LISTENER","TRUE_STR","FALSE_STR","ZONE_SYMBOL_PREFIX","scheduleMacroTaskWithCurrentZone","zoneSymbol","isWindowExists","internalWindow","_global","REMOVE_ATTRIBUTE","patchPrototype","fnNames","prototypeDesc","isPropertyWritable","patched","propertyDesc","writable","set","isWebWorker","WorkerGlobalScope","isNode","process","isBrowser","isMix","zoneSymbolEventNames$1","wrapFn","event","eventNameSymbol","listener","result","errorEvent","message","filename","lineno","colno","preventDefault","patchProperty","obj","prop","desc","enumerable","configurable","onPropPatchedSymbol","originalDescGet","originalDescSet","eventName","newValue","previousValue","removeEventListener","addEventListener","removeAttribute","onProperties","j","originalInstanceKey","className","OriginalClass","a","instance","patchFn","proto","delegateName","patchDelegate","funcName","metaCreator","setNative","cbIdx","meta","original","isDetectedIEOrEdge","ieOrEdge","isIE","ua","navigator","userAgent","indexOf","api","readableObjectToString","JSON","stringify","_uncaughtPromiseErrors","isDisableWrappingUncaughtPromiseRejection","creationTrace","e","rejection","console","stack","uncaughtPromiseError","shift","throwOriginal","handleUnhandledRejection","UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL","handler","isThenable","then","forwardResolution","forwardRejection","ZoneAwarePromise","reject","symbolState","symbolValue","symbolFinally","symbolParentPromiseValue","symbolParentPromiseState","UNRESOLVED","RESOLVED","REJECTED","REJECTED_NO_CATCH","makeResolver","promise","v","resolvePromise","once","wasCalled","wrapper","wrappedFunction","TYPE_ERROR","CURRENT_TASK_TRACE_SYMBOL","onceWrapper","TypeError","clearRejectedNoCatch","trace","scheduleResolveOrReject","REJECTION_HANDLED_HANDLER","splice","chainPromise","onFulfilled","onRejected","promiseState","parentPromiseValue","isFinallyPromise","ZONE_AWARE_PROMISE_TO_STRING","AggregateError","any","values","Symbol","iterator","Promise","promises","finished","errors","race","res","rej","onResolve","onReject","all","allWithCallback","allSettled","P","thenCallback","status","errorCallback","reason","unresolvedCount","valueIndex","resolvedValues","curValueIndex","thenErr","executor","toStringTag","species","C","catch","finally","onFinally","NativePromise","symbolThenPatched","Ctor","originalThen","wrapped","zoneify","resultPromise","ctor","originalFunctionToString","Function","ORIGINAL_DELEGATE_SYMBOL","PROMISE_SYMBOL","ERROR_SYMBOL","newFunctionToString","originalDelegate","nativePromise","nativeError","originalObjectToString","PROMISE_OBJECT_TO_STRING","passiveSupported","OPTIMIZED_ZONE_EVENT_TASK_DATA","zoneSymbolEventNames","globalSources","EVENT_NAME_SYMBOL_REGX","RegExp","IMMEDIATE_PROPAGATION_SYMBOL","prepareEventNames","eventNameToString","falseEventName","trueEventName","symbolCapture","apis","patchOptions","ADD_EVENT_LISTENER","add","REMOVE_EVENT_LISTENER","rm","LISTENERS_EVENT_LISTENER","listeners","REMOVE_ALL_LISTENERS_EVENT_LISTENER","rmAll","zoneSymbolAddEventListener","ADD_EVENT_LISTENER_SOURCE","PREPEND_EVENT_LISTENER","PREPEND_EVENT_LISTENER_SOURCE","isRemoved","handleEvent","globalCallback","context","isCapture","tasks","copyTasks","globalZoneAwareCallback","globalZoneAwareCaptureCallback","patchEventTargetMethods","useGlobalCallback","validateHandler","vh","chkDup","returnTarget","rt","taskData","nativeAddEventListener","nativeRemoveEventListener","nativeListeners","nativeRemoveAllListeners","nativePrependEventListener","prepend","buildEventListenerOptions","passive","capture","customScheduleGlobal","isExisting","customCancelGlobal","symbolEventNames","symbolEventName","existingTasks","existingTask","allRemoved","customScheduleNonGlobal","customSchedulePrepend","customCancelNonGlobal","compareTaskCallbackVsDelegate","typeOfDelegate","compare","diff","unpatchedEvents","passiveEvents","makeAddListener","nativeListener","addSource","customScheduleFn","customCancelFn","transferEventName","isHandleEvent","constructorName","targetSource","unshift","onPropertySymbol","findEventTasks","keys","match","exec","evtName","symbolCaptureEventName","captureTasks","removeTasks","results","foundTasks","captureFalseTasks","captureTrueTasks","concat","Event","targetName","method","callbacks","nativeDelegate","opts","forEach","descriptor","ignoreProperties","tip","filter","ip","targetIgnoreProperties","op","patchFilteredProperties","filteredProperties","getOnEventNames","getOwnPropertyNames","startsWith","map","substring","propertyDescriptorPatch","patchTargets","ignoreErrorProperties","eventNames","SYMBOL_BLACK_LISTED_EVENTS","SYMBOL_UNPATCHED_EVENTS","patchQueueMicrotask","taskSymbol","patchTimer","setName","cancelName","nameSuffix","clearNative","tasksByHandleId","clearTask","delay","timer","handle","ref","unref","bind","id","patchCustomElements","customElements","eventTargetPatch","EVENT_TARGET","patchEvent","legacyPatch","clear","blockingMethods","s","XMLHttpRequestEventTarget","patchXHR","XHR_TASK","XHR_SYNC","XHR_LISTENER","XHR_SCHEDULED","XHR_URL","XHR_ERROR_BEFORE_SCHEDULED","XMLHttpRequest","XMLHttpRequestPrototype","findPendingTask","oriAddListener","oriRemoveListener","XMLHttpRequestEventTargetPrototype","READY_STATE_CHANGE","SCHEDULED","newListener","readyState","DONE","aborted","loadTasks","oriInvoke","storedTask","sendNative","placeholderCallback","abortNative","openNative","XMLHTTPREQUEST_SOURCE","fetchTaskAborting","fetchTaskScheduling","url","geolocation","findPromiseRejectionHandler","eventTasks","PromiseRejectionEvent","evt"],"sourceRoot":"webpack:///","x_google_ignoreList":[1]} \ No newline at end of file diff --git a/runtime.js b/runtime.js deleted file mode 100644 index 30cf3884..00000000 --- a/runtime.js +++ /dev/null @@ -1,163 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({}); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/chunk loaded */ -/******/ (() => { -/******/ var deferred = []; -/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { -/******/ if(chunkIds) { -/******/ priority = priority || 0; -/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; -/******/ deferred[i] = [chunkIds, fn, priority]; -/******/ return; -/******/ } -/******/ var notFulfilled = Infinity; -/******/ for (var i = 0; i < deferred.length; i++) { -/******/ var [chunkIds, fn, priority] = deferred[i]; -/******/ var fulfilled = true; -/******/ for (var j = 0; j < chunkIds.length; j++) { -/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { -/******/ chunkIds.splice(j--, 1); -/******/ } else { -/******/ fulfilled = false; -/******/ if(priority < notFulfilled) notFulfilled = priority; -/******/ } -/******/ } -/******/ if(fulfilled) { -/******/ deferred.splice(i--, 1) -/******/ var r = fn(); -/******/ if (r !== undefined) result = r; -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/jsonp chunk loading */ -/******/ (() => { -/******/ // no baseURI -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ // no chunk on demand loading -/******/ -/******/ // no prefetching -/******/ -/******/ // no preloaded -/******/ -/******/ // no HMR -/******/ -/******/ // no HMR manifest -/******/ -/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); -/******/ -/******/ // install a JSONP callback for chunk loading -/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { -/******/ var [chunkIds, moreModules, runtime] = data; -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0; -/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { -/******/ for(moduleId in moreModules) { -/******/ if(__webpack_require__.o(moreModules, moduleId)) { -/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(runtime) var result = runtime(__webpack_require__); -/******/ } -/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ installedChunks[chunkId][0](); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ return __webpack_require__.O(result); -/******/ } -/******/ -/******/ var chunkLoadingGlobal = self["webpackChunkdemo"] = self["webpackChunkdemo"] || []; -/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); -/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ -/******/ })() -; -//# sourceMappingURL=runtime.js.map \ No newline at end of file diff --git a/runtime.js.map b/runtime.js.map deleted file mode 100644 index d1f535df..00000000 --- a/runtime.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"runtime.js","mappings":";;;;UAAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA","sources":["webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/define property getters","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/jsonp chunk loading","webpack/before-startup","webpack/startup","webpack/after-startup"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"runtime\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdemo\"] = self[\"webpackChunkdemo\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","",""],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]} \ No newline at end of file diff --git a/styles.css b/styles.css deleted file mode 100644 index f5794f9c..00000000 --- a/styles.css +++ /dev/null @@ -1,43 +0,0 @@ -/*!***************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/@angular-devkit/build-angular/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/@angular/material/prebuilt-themes/indigo-pink.css ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************/ -.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus::before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:rgba(0,0,0,.1)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, 0.87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, 0.04)}.mat-accent{--mat-option-selected-state-label-text-color:#ff4081}.mat-warn{--mat-option-selected-state-label-text-color:#f44336}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, 0.87)}.mat-pseudo-checkbox-full{color:rgba(0,0,0,.54)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:rgba(0,0,0,.87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12)}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12)}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12)}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12)}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12)}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12)}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12)}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12)}.mat-theme-loaded-marker{display:none}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:0.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:0.03125em;--mat-optgroup-label-text-weight:400}.mat-mdc-card{--mdc-elevated-card-container-color:white;--mdc-elevated-card-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);--mdc-outlined-card-container-color:white;--mdc-outlined-card-outline-color:rgba(0, 0, 0, 0.12);--mdc-outlined-card-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);--mat-card-subtitle-text-color:rgba(0, 0, 0, 0.54)}.mat-mdc-card{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:0.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:0.0071428571em;--mat-card-subtitle-text-weight:500}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color:#3f51b5;--mdc-linear-progress-track-color:rgba(63, 81, 181, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:rgba(63, 81, 181, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:rgba(63, 81, 181, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color:#ff4081;--mdc-linear-progress-track-color:rgba(255, 64, 129, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:rgba(255, 64, 129, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:rgba(255, 64, 129, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color:#f44336;--mdc-linear-progress-track-color:rgba(244, 67, 54, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:rgba(244, 67, 54, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:rgba(244, 67, 54, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color:#616161;--mdc-plain-tooltip-supporting-text-color:#fff}.mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font:Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size:12px;--mdc-plain-tooltip-supporting-text-weight:400;--mdc-plain-tooltip-supporting-text-tracking:0.0333333333em}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:rgba(0, 0, 0, 0.87)}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.6)}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.6)}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field--filled .mdc-text-field__ripple::before,.mdc-text-field--filled .mdc-text-field__ripple::after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, 0.87))}.mdc-text-field--filled:hover .mdc-text-field__ripple::before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple::before{opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:whitesmoke}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.42)}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.38)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined .mdc-text-field__ripple::before,.mdc-text-field--outlined .mdc-text-field__ripple::after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(63, 81, 181, 0.87)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--disabled .mdc-text-field__input{color:rgba(0, 0, 0, 0.38)}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.38)}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.38)}}.mdc-text-field--disabled .mdc-floating-label{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.06)}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.06)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-focus-overlay{background-color:rgba(0,0,0,.87)}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{color:rgba(0,0,0,.54)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix::after{color:rgba(63,81,181,.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix::after{color:rgba(255,64,129,.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix::after{color:rgba(244,67,54,.87)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:rgba(0,0,0,.38)}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(255, 64, 129, 0.87)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(244, 67, 54, 0.87)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mdc-text-field__input{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-form-field,.mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, 0.03125em);-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(16px * var(--mat-mdc-form-field-floating-label-scale, 0.75))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:16px}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(63, 81, 181, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(255, 64, 129, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(244, 67, 54, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:0.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-background-color:white}.mat-mdc-dialog-container{--mdc-dialog-container-color:white;--mdc-dialog-subhead-color:rgba(0, 0, 0, 0.87);--mdc-dialog-supporting-text-color:rgba(0, 0, 0, 0.6)}.mat-mdc-dialog-container{--mdc-dialog-subhead-font:Roboto, sans-serif;--mdc-dialog-subhead-line-height:32px;--mdc-dialog-subhead-size:20px;--mdc-dialog-subhead-weight:500;--mdc-dialog-subhead-tracking:0.0125em;--mdc-dialog-supporting-text-font:Roboto, sans-serif;--mdc-dialog-supporting-text-line-height:24px;--mdc-dialog-supporting-text-size:16px;--mdc-dialog-supporting-text-weight:400;--mdc-dialog-supporting-text-tracking:0.03125em}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color:#212121;--mdc-chip-elevated-container-color:#e0e0e0;--mdc-chip-elevated-disabled-container-color:#e0e0e0;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:#212121;--mdc-chip-with-icon-icon-color:#212121;--mdc-chip-with-icon-disabled-icon-color:#212121;--mdc-chip-with-icon-selected-icon-color:#212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:#212121;--mdc-chip-with-trailing-icon-trailing-icon-color:#212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#3f51b5;--mdc-chip-elevated-disabled-container-color:#3f51b5;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#ff4081;--mdc-chip-elevated-disabled-container-color:#ff4081;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#f44336;--mdc-chip-elevated-disabled-container-color:#f44336;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height:32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font:Roboto, sans-serif;--mdc-chip-label-text-line-height:20px;--mdc-chip-label-text-size:14px;--mdc-chip-label-text-tracking:0.0178571429em;--mdc-chip-label-text-weight:400}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color:#424242;--mdc-switch-disabled-unselected-handle-color:#424242;--mdc-switch-disabled-selected-track-color:#424242;--mdc-switch-disabled-unselected-track-color:#424242;--mdc-switch-unselected-focus-state-layer-color:#424242;--mdc-switch-unselected-pressed-state-layer-color:#424242;--mdc-switch-unselected-hover-state-layer-color:#424242;--mdc-switch-unselected-focus-track-color:#e0e0e0;--mdc-switch-unselected-hover-track-color:#e0e0e0;--mdc-switch-unselected-pressed-track-color:#e0e0e0;--mdc-switch-unselected-track-color:#e0e0e0;--mdc-switch-unselected-focus-handle-color:#212121;--mdc-switch-unselected-hover-handle-color:#212121;--mdc-switch-unselected-pressed-handle-color:#212121;--mdc-switch-handle-surface-color:var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color:#616161;--mdc-switch-selected-icon-color:#fff;--mdc-switch-disabled-selected-icon-color:#fff;--mdc-switch-disabled-unselected-icon-color:#fff;--mdc-switch-unselected-icon-color:#fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:rgba(0,0,0,.38)}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color:#3949ab;--mdc-switch-selected-handle-color:#3949ab;--mdc-switch-selected-hover-state-layer-color:#3949ab;--mdc-switch-selected-pressed-state-layer-color:#3949ab;--mdc-switch-selected-focus-handle-color:#1a237e;--mdc-switch-selected-hover-handle-color:#1a237e;--mdc-switch-selected-pressed-handle-color:#1a237e;--mdc-switch-selected-focus-track-color:#7986cb;--mdc-switch-selected-hover-track-color:#7986cb;--mdc-switch-selected-pressed-track-color:#7986cb;--mdc-switch-selected-track-color:#7986cb}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color:#d81b60;--mdc-switch-selected-handle-color:#d81b60;--mdc-switch-selected-hover-state-layer-color:#d81b60;--mdc-switch-selected-pressed-state-layer-color:#d81b60;--mdc-switch-selected-focus-handle-color:#880e4f;--mdc-switch-selected-hover-handle-color:#880e4f;--mdc-switch-selected-pressed-handle-color:#880e4f;--mdc-switch-selected-focus-track-color:#f06292;--mdc-switch-selected-hover-track-color:#f06292;--mdc-switch-selected-pressed-track-color:#f06292;--mdc-switch-selected-track-color:#f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color:#e53935;--mdc-switch-selected-handle-color:#e53935;--mdc-switch-selected-hover-state-layer-color:#e53935;--mdc-switch-selected-pressed-state-layer-color:#e53935;--mdc-switch-selected-focus-handle-color:#b71c1c;--mdc-switch-selected-hover-handle-color:#b71c1c;--mdc-switch-selected-pressed-handle-color:#b71c1c;--mdc-switch-selected-focus-track-color:#e57373;--mdc-switch-selected-hover-track-color:#e57373;--mdc-switch-selected-pressed-track-color:#e57373;--mdc-switch-selected-track-color:#e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size:48px}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#3f51b5;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#ff4081;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#f44336;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-slider{--mdc-slider-label-container-color:black;--mdc-slider-label-label-text-color:white;--mdc-slider-disabled-handle-color:#000;--mdc-slider-disabled-active-track-color:#000;--mdc-slider-disabled-inactive-track-color:#000;--mdc-slider-with-tick-marks-disabled-container-color:#000;--mat-mdc-slider-value-indicator-opacity: 0.6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color:#3f51b5;--mdc-slider-focus-handle-color:#3f51b5;--mdc-slider-hover-handle-color:#3f51b5;--mdc-slider-active-track-color:#3f51b5;--mdc-slider-inactive-track-color:#3f51b5;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, 0.2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color:#ff4081;--mdc-slider-focus-handle-color:#ff4081;--mdc-slider-hover-handle-color:#ff4081;--mdc-slider-active-track-color:#ff4081;--mdc-slider-inactive-track-color:#ff4081;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, 0.2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color:#f44336;--mdc-slider-focus-handle-color:#f44336;--mdc-slider-hover-handle-color:#f44336;--mdc-slider-active-track-color:#f44336;--mdc-slider-inactive-track-color:#f44336;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, 0.2)}.mat-mdc-slider{--mdc-slider-label-label-text-font:Roboto, sans-serif;--mdc-slider-label-label-text-size:14px;--mdc-slider-label-label-text-line-height:22px;--mdc-slider-label-label-text-tracking:0.0071428571em;--mdc-slider-label-label-text-weight:500}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, 0.87);--mat-menu-item-icon-color:rgba(0, 0, 0, 0.87);--mat-menu-item-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-menu-item-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-menu-container-color:white}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:0.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}.mat-mdc-list-base{--mdc-list-list-item-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-supporting-text-color:rgba(0, 0, 0, 0.54);--mdc-list-list-item-leading-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-disabled-label-text-color:black;--mdc-list-list-item-disabled-leading-icon-color:black;--mdc-list-list-item-disabled-trailing-icon-color:black;--mdc-list-list-item-hover-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-focus-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-hover-state-layer-color:black;--mdc-list-list-item-hover-state-layer-opacity:0.04;--mdc-list-list-item-focus-state-layer-color:black;--mdc-list-list-item-focus-state-layer-opacity:0.12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text{color:#3f51b5}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height:48px;--mdc-list-list-item-two-line-container-height:64px;--mdc-list-list-item-three-line-container-height:88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-list-base{--mdc-list-list-item-label-text-font:Roboto, sans-serif;--mdc-list-list-item-label-text-line-height:24px;--mdc-list-list-item-label-text-size:16px;--mdc-list-list-item-label-text-tracking:0.03125em;--mdc-list-list-item-label-text-weight:400;--mdc-list-list-item-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height:20px;--mdc-list-list-item-supporting-text-size:14px;--mdc-list-list-item-supporting-text-tracking:0.0178571429em;--mdc-list-list-item-supporting-text-weight:400;--mdc-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height:20px;--mdc-list-list-item-trailing-supporting-text-size:12px;--mdc-list-list-item-trailing-supporting-text-tracking:0.0333333333em;--mdc-list-list-item-trailing-supporting-text-weight:400}.mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto, sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color:rgba(0, 0, 0, 0.87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, 0.54);--mat-paginator-disabled-icon-color:rgba(0, 0, 0, 0.12)}html{--mat-paginator-container-size:56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:0.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color:#3f51b5;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#3f51b5;--mat-tab-header-active-ripple-color:#3f51b5;--mat-tab-header-inactive-ripple-color:#3f51b5;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#3f51b5;--mat-tab-header-active-hover-label-text-color:#3f51b5;--mat-tab-header-active-focus-indicator-color:#3f51b5;--mat-tab-header-active-hover-indicator-color:#3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color:#ff4081;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#ff4081;--mat-tab-header-active-ripple-color:#ff4081;--mat-tab-header-inactive-ripple-color:#ff4081;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#ff4081;--mat-tab-header-active-hover-label-text-color:#ff4081;--mat-tab-header-active-focus-indicator-color:#ff4081;--mat-tab-header-active-hover-indicator-color:#ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color:#f44336;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#f44336;--mat-tab-header-active-ripple-color:#f44336;--mat-tab-header-inactive-ripple-color:#f44336;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#f44336;--mat-tab-header-active-hover-label-text-color:#f44336;--mat-tab-header-active-focus-indicator-color:#f44336;--mat-tab-header-active-hover-indicator-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color:#3f51b5;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color:#ff4081;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color:#f44336;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height:48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font:Roboto, sans-serif;--mat-tab-header-label-text-size:14px;--mat-tab-header-label-text-letter-spacing:0.0892857143em;--mat-tab-header-label-text-line-height:36px;--mat-tab-header-label-text-weight:500}html{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:rgba(0,0,0,.38)}html{--mdc-checkbox-state-layer-size:40px}.mat-mdc-checkbox .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color:#000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color:#3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color:#ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color:#f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-text-button-label-text-color:rgba(0, 0, 0, 0.38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color:#fff;--mdc-filled-button-label-text-color:#000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color:#3f51b5;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color:#ff4081;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color:#f44336;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color:rgba(0, 0, 0, 0.12);--mdc-filled-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-filled-button-container-color:rgba(0, 0, 0, 0.12);--mdc-filled-button-label-text-color:rgba(0, 0, 0, 0.38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color:#fff;--mdc-protected-button-label-text-color:#000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color:#3f51b5;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color:#ff4081;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color:#f44336;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color:rgba(0, 0, 0, 0.12);--mdc-protected-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-protected-button-container-color:rgba(0, 0, 0, 0.12);--mdc-protected-button-label-text-color:rgba(0, 0, 0, 0.38);--mdc-protected-button-container-elevation:0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color:rgba(0, 0, 0, 0.12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color:#000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color:#3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color:#ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color:#f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color:rgba(0, 0, 0, 0.38);--mdc-outlined-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-outlined-button-outline-color:rgba(0, 0, 0, 0.12);--mdc-outlined-button-disabled-outline-color:rgba(0, 0, 0, 0.12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, 0.0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1);--mdc-icon-button-icon-color:inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, 0.1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, 0.1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, 0.1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color:#3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color:#ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color:#f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color:rgba(0, 0, 0, 0.38);--mdc-icon-button-disabled-icon-color:rgba(0, 0, 0, 0.38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color:#fff;--mdc-fab-icon-color:#000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color:#3f51b5;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color:#ff4081;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color:#f44336;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color:rgba(0, 0, 0, 0.12);--mdc-fab-icon-color:rgba(0, 0, 0, 0.38);--mat-mdc-fab-color: rgba(0, 0, 0, 0.38)}.mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, 0.0892857143em);-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color:#333333;--mdc-snackbar-supporting-text-color:rgba(255, 255, 255, 0.87);--mat-snack-bar-button-color:#ff4081}.mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font:Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height:20px;--mdc-snackbar-supporting-text-size:14px;--mdc-snackbar-supporting-text-weight:400}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:rgba(63, 81, 181, 0.04)}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__pagination{border-top-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:rgba(0, 0, 0, 0.04)}.mdc-data-table__header-cell{color:rgba(0, 0, 0, 0.87)}.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:rgba(0, 0, 0, 0.87)}.mat-mdc-table{background:#fff}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, 0.0071428571em);-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color:#3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color:#ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color:#f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:rgba(0,0,0,.38)}.mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto, sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, 0.87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:0.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-legacy-button-toggle-text-color:rgba(0, 0, 0, 0.38);--mat-legacy-button-toggle-state-layer-color:rgba(0, 0, 0, 0.12);--mat-legacy-button-toggle-selected-state-text-color:rgba(0, 0, 0, 0.54);--mat-legacy-button-toggle-selected-state-background-color:#e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-legacy-button-toggle-disabled-state-background-color:#eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-background-color:white;--mat-standard-button-toggle-state-layer-color:black;--mat-standard-button-toggle-selected-state-background-color:#e0e0e0;--mat-standard-button-toggle-selected-state-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-standard-button-toggle-disabled-state-background-color:white;--mat-standard-button-toggle-disabled-selected-state-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-divider-color:#e0e0e0}html{--mat-standard-button-toggle-height:48px}html{--mat-legacy-button-toggle-text-font:Roboto, sans-serif;--mat-standard-button-toggle-text-font:Roboto, sans-serif}.mat-calendar-arrow{fill:rgba(0,0,0,.54)}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:rgba(0,0,0,.54)}.mat-calendar-table-header-divider::after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:rgba(0,0,0,.54)}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:rgba(0,0,0,.87);border-color:rgba(0,0,0,0)}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:rgba(0,0,0,.38)}.mat-form-field-disabled .mat-date-range-input-separator{color:rgba(0,0,0,.38)}.mat-calendar-body-in-preview{color:rgba(0,0,0,.24)}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:rgba(0,0,0,.38)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:rgba(0,0,0,.18)}.mat-calendar-body-in-range::before{background:rgba(63,81,181,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(63, 81, 181, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(63, 81, 181, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(63,81,181,.4)}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(63,81,181,.3)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(63,81,181,.3)}}.mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);background-color:#fff;color:rgba(0,0,0,.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before{background:rgba(255,64,129,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(255, 64, 129, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(255, 64, 129, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(255,64,129,.4)}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(255,64,129,.3)}@media(hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(255,64,129,.3)}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before{background:rgba(244,67,54,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(244, 67, 54, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(244, 67, 54, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(244,67,54,.4)}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(244,67,54,.3)}@media(hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(244,67,54,.3)}}.mat-datepicker-content-touch{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12)}.mat-datepicker-toggle-active{color:#3f51b5}.mat-datepicker-toggle-active.mat-accent{color:#ff4081}.mat-datepicker-toggle-active.mat-warn{color:#f44336}.mat-date-range-input-inner[disabled]{color:rgba(0,0,0,.38)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-calendar{font-family:Roboto, sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}html{--mat-divider-color:rgba(0, 0, 0, 0.12)}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, 0.87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, 0.12);--mat-expansion-header-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-expansion-header-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-expansion-header-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-expansion-header-text-color:rgba(0, 0, 0, 0.87);--mat-expansion-header-description-color:rgba(0, 0, 0, 0.54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, 0.54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:0.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}.mat-icon.mat-primary{color:#3f51b5}.mat-icon.mat-accent{color:#ff4081}.mat-icon.mat-warn{color:#f44336}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, 0.12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, 0.87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, 0.87);--mat-sidenav-scrim-color:rgba(0, 0, 0, 0.6)}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, 0.12);--mat-stepper-header-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-stepper-header-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-stepper-header-label-text-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, 0.87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#ff4081;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#ff4081;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#ff4081;--mat-stepper-header-edit-state-icon-foreground-color:white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#f44336;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#f44336;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#f44336;--mat-stepper-header-edit-state-icon-foreground-color:white}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color:whitesmoke;--mat-toolbar-container-text-color:rgba(0, 0, 0, 0.87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color:#3f51b5;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color:#ff4081;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color:#f44336;--mat-toolbar-container-text-color:white}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:0.0125em;--mat-toolbar-title-text-weight:500}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:rgba(0,0,0,.87)}.mat-tree-node{min-height:48px}.mat-tree{font-family:Roboto, sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font-size:24px;font-weight:400;line-height:32px;font-family:Roboto, sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto, sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto, sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto, sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 calc(14px * 0.83)/20px Roboto, sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 calc(14px * 0.67)/20px Roboto, sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font-size:14px;font-weight:500;line-height:22px;font-family:Roboto, sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto, sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font-size:12px;font-weight:400;line-height:20px;font-family:Roboto, sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font-size:96px;font-weight:300;line-height:96px;font-family:Roboto, sans-serif;letter-spacing:-0.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font-size:60px;font-weight:300;line-height:60px;font-family:Roboto, sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font-size:48px;font-weight:400;line-height:50px;font-family:Roboto, sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font-size:34px;font-weight:400;line-height:40px;font-family:Roboto, sans-serif;letter-spacing:.0073529412em;margin:0 0 64px} -/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/@angular-devkit/build-angular/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./apps/demo/src/styles.scss?ngGlobalStyle ***! - \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -html, -body { - height: 100%; -} - -body { - margin: 0; - font-family: Roboto, sans-serif; -} - -ul { - list-style-type: none; -} -/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[1]!./node_modules/@angular-devkit/build-angular/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].rules[0].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[6].rules[1].use[0]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].rules[1].use[1]!./apps/demo/src/fonts.scss?ngGlobalStyle ***! - \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -@font-face { - font-family: "Roboto"; - font-weight: normal; - font-style: normal; - src: local("Roboto Regular"), local("Roboto-Regular"), url('Roboto-Regular.ttf') format("truetype"); -} -@font-face { - font-family: "Roboto"; - font-weight: 600; - font-style: normal; - src: local("Roboto Medium"), local("Roboto-Medium"), url('Roboto-Medium.ttf') format("truetype"); -} -@font-face { - font-family: "Roboto"; - font-weight: bold; - font-style: normal; - src: local("Roboto Bold"), local("Roboto-Bold"), url('Roboto-Bold.ttf') format("truetype"); -} - -/*# sourceMappingURL=styles.css.map*/ \ No newline at end of file diff --git a/styles.css.map b/styles.css.map deleted file mode 100644 index d55d99fa..00000000 --- a/styles.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"styles.css","mappings":"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","sources":["./node_modules/@angular/material/prebuilt-themes/indigo-pink.css","./apps/demo/src/styles.scss","./apps/demo/src/fonts.scss"],"sourcesContent":[".mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0, 0, 0.2, 1);transform:scale3d(0, 0, 0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0 !important;box-sizing:content-box !important;height:auto !important;overflow:hidden !important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0 !important;box-sizing:content-box !important;height:0 !important}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus::before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator::before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus::before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:rgba(0,0,0,.1)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, 0.87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, 0.04)}.mat-accent{--mat-option-selected-state-label-text-color:#ff4081}.mat-warn{--mat-option-selected-state-label-text-color:#f44336}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, 0.87)}.mat-pseudo-checkbox-full{color:rgba(0,0,0,.54)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full::after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full::after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal::after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal::after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:rgba(0,0,0,.87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12)}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12)}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12)}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12)}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12)}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12)}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12)}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12)}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12)}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12)}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12)}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12)}.mat-theme-loaded-marker{display:none}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:0.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:0.03125em;--mat-optgroup-label-text-weight:400}.mat-mdc-card{--mdc-elevated-card-container-color:white;--mdc-elevated-card-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);--mdc-outlined-card-container-color:white;--mdc-outlined-card-outline-color:rgba(0, 0, 0, 0.12);--mdc-outlined-card-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);--mat-card-subtitle-text-color:rgba(0, 0, 0, 0.54)}.mat-mdc-card{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:0.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:0.0071428571em;--mat-card-subtitle-text-weight:500}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color:#3f51b5;--mdc-linear-progress-track-color:rgba(63, 81, 181, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:rgba(63, 81, 181, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:rgba(63, 81, 181, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, 0.25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color:#ff4081;--mdc-linear-progress-track-color:rgba(255, 64, 129, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:rgba(255, 64, 129, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:rgba(255, 64, 129, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, 0.25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color:#f44336;--mdc-linear-progress-track-color:rgba(244, 67, 54, 0.25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:rgba(244, 67, 54, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25))}@media(forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:rgba(244, 67, 54, 0.25);background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, 0.25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color:#616161;--mdc-plain-tooltip-supporting-text-color:#fff}.mat-mdc-tooltip{--mdc-plain-tooltip-supporting-text-font:Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size:12px;--mdc-plain-tooltip-supporting-text-weight:400;--mdc-plain-tooltip-supporting-text-tracking:0.0333333333em}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:rgba(0, 0, 0, 0.87)}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.6)}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.6)}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.54)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.6)}.mdc-text-field--filled .mdc-text-field__ripple::before,.mdc-text-field--filled .mdc-text-field__ripple::after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, 0.87))}.mdc-text-field--filled:hover .mdc-text-field__ripple::before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple::before{opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:whitesmoke}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.42)}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.38)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.87)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined .mdc-text-field__ripple::before,.mdc-text-field--outlined .mdc-text-field__ripple::after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(63, 81, 181, 0.87)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--disabled .mdc-text-field__input{color:rgba(0, 0, 0, 0.38)}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:rgba(0, 0, 0, 0.38)}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:rgba(0, 0, 0, 0.38)}}.mdc-text-field--disabled .mdc-floating-label{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__icon--leading{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:rgba(0, 0, 0, 0.3)}.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:rgba(0, 0, 0, 0.38)}.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.06)}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.06)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-focus-overlay{background-color:rgba(0,0,0,.87)}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{color:rgba(0,0,0,.54)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix::after{color:rgba(63,81,181,.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix::after{color:rgba(255,64,129,.87)}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix::after{color:rgba(244,67,54,.87)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:rgba(0,0,0,.38)}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(255, 64, 129, 0.87)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:rgba(244, 67, 54, 0.87)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mdc-text-field__input{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field__affix{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mdc-text-field--textarea .mdc-text-field__input{line-height:1.5rem}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle1-font-size, 16px);font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle1-text-transform, none)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-caption-font-size, 12px);line-height:var(--mdc-typography-caption-line-height, 20px);font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:var(--mdc-typography-caption-text-transform, none)}.mat-mdc-form-field,.mat-mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body1-font-size, 16px);line-height:var(--mdc-typography-body1-line-height, 24px);font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:var(--mdc-typography-body1-letter-spacing, 0.03125em);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:var(--mdc-typography-body1-text-transform, none)}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(16px * var(--mat-mdc-form-field-floating-label-scale, 0.75))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:16px}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(63, 81, 181, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(255, 64, 129, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, 0.87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, 0.38);--mat-select-placeholder-text-color:rgba(0, 0, 0, 0.6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, 0.54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, 0.38);--mat-select-focused-arrow-color:rgba(244, 67, 54, 0.87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, 0.87)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:0.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-background-color:white}.mat-mdc-dialog-container{--mdc-dialog-container-color:white;--mdc-dialog-subhead-color:rgba(0, 0, 0, 0.87);--mdc-dialog-supporting-text-color:rgba(0, 0, 0, 0.6)}.mat-mdc-dialog-container{--mdc-dialog-subhead-font:Roboto, sans-serif;--mdc-dialog-subhead-line-height:32px;--mdc-dialog-subhead-size:20px;--mdc-dialog-subhead-weight:500;--mdc-dialog-subhead-tracking:0.0125em;--mdc-dialog-supporting-text-font:Roboto, sans-serif;--mdc-dialog-supporting-text-line-height:24px;--mdc-dialog-supporting-text-size:16px;--mdc-dialog-supporting-text-weight:400;--mdc-dialog-supporting-text-tracking:0.03125em}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color:#212121;--mdc-chip-elevated-container-color:#e0e0e0;--mdc-chip-elevated-disabled-container-color:#e0e0e0;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:#212121;--mdc-chip-with-icon-icon-color:#212121;--mdc-chip-with-icon-disabled-icon-color:#212121;--mdc-chip-with-icon-selected-icon-color:#212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:#212121;--mdc-chip-with-trailing-icon-trailing-icon-color:#212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#3f51b5;--mdc-chip-elevated-disabled-container-color:#3f51b5;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#ff4081;--mdc-chip-elevated-disabled-container-color:#ff4081;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#f44336;--mdc-chip-elevated-disabled-container-color:#f44336;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:0.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height:32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font:Roboto, sans-serif;--mdc-chip-label-text-line-height:20px;--mdc-chip-label-text-size:14px;--mdc-chip-label-text-tracking:0.0178571429em;--mdc-chip-label-text-weight:400}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color:#424242;--mdc-switch-disabled-unselected-handle-color:#424242;--mdc-switch-disabled-selected-track-color:#424242;--mdc-switch-disabled-unselected-track-color:#424242;--mdc-switch-unselected-focus-state-layer-color:#424242;--mdc-switch-unselected-pressed-state-layer-color:#424242;--mdc-switch-unselected-hover-state-layer-color:#424242;--mdc-switch-unselected-focus-track-color:#e0e0e0;--mdc-switch-unselected-hover-track-color:#e0e0e0;--mdc-switch-unselected-pressed-track-color:#e0e0e0;--mdc-switch-unselected-track-color:#e0e0e0;--mdc-switch-unselected-focus-handle-color:#212121;--mdc-switch-unselected-hover-handle-color:#212121;--mdc-switch-unselected-pressed-handle-color:#212121;--mdc-switch-handle-surface-color:var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color:#616161;--mdc-switch-selected-icon-color:#fff;--mdc-switch-disabled-selected-icon-color:#fff;--mdc-switch-disabled-unselected-icon-color:#fff;--mdc-switch-unselected-icon-color:#fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:rgba(0,0,0,.38)}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color:#3949ab;--mdc-switch-selected-handle-color:#3949ab;--mdc-switch-selected-hover-state-layer-color:#3949ab;--mdc-switch-selected-pressed-state-layer-color:#3949ab;--mdc-switch-selected-focus-handle-color:#1a237e;--mdc-switch-selected-hover-handle-color:#1a237e;--mdc-switch-selected-pressed-handle-color:#1a237e;--mdc-switch-selected-focus-track-color:#7986cb;--mdc-switch-selected-hover-track-color:#7986cb;--mdc-switch-selected-pressed-track-color:#7986cb;--mdc-switch-selected-track-color:#7986cb}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color:#d81b60;--mdc-switch-selected-handle-color:#d81b60;--mdc-switch-selected-hover-state-layer-color:#d81b60;--mdc-switch-selected-pressed-state-layer-color:#d81b60;--mdc-switch-selected-focus-handle-color:#880e4f;--mdc-switch-selected-hover-handle-color:#880e4f;--mdc-switch-selected-pressed-handle-color:#880e4f;--mdc-switch-selected-focus-track-color:#f06292;--mdc-switch-selected-hover-track-color:#f06292;--mdc-switch-selected-pressed-track-color:#f06292;--mdc-switch-selected-track-color:#f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color:#e53935;--mdc-switch-selected-handle-color:#e53935;--mdc-switch-selected-hover-state-layer-color:#e53935;--mdc-switch-selected-pressed-state-layer-color:#e53935;--mdc-switch-selected-focus-handle-color:#b71c1c;--mdc-switch-selected-hover-handle-color:#b71c1c;--mdc-switch-selected-pressed-handle-color:#b71c1c;--mdc-switch-selected-focus-track-color:#e57373;--mdc-switch-selected-hover-track-color:#e57373;--mdc-switch-selected-pressed-track-color:#e57373;--mdc-switch-selected-track-color:#e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size:48px}.mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#3f51b5;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#ff4081;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#f44336;--mat-radio-disabled-label-color:rgba(0, 0, 0, 0.38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-slider{--mdc-slider-label-container-color:black;--mdc-slider-label-label-text-color:white;--mdc-slider-disabled-handle-color:#000;--mdc-slider-disabled-active-track-color:#000;--mdc-slider-disabled-inactive-track-color:#000;--mdc-slider-with-tick-marks-disabled-container-color:#000;--mat-mdc-slider-value-indicator-opacity: 0.6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color:#3f51b5;--mdc-slider-focus-handle-color:#3f51b5;--mdc-slider-hover-handle-color:#3f51b5;--mdc-slider-active-track-color:#3f51b5;--mdc-slider-inactive-track-color:#3f51b5;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, 0.2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color:#ff4081;--mdc-slider-focus-handle-color:#ff4081;--mdc-slider-hover-handle-color:#ff4081;--mdc-slider-active-track-color:#ff4081;--mdc-slider-inactive-track-color:#ff4081;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, 0.2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color:#f44336;--mdc-slider-focus-handle-color:#f44336;--mdc-slider-hover-handle-color:#f44336;--mdc-slider-active-track-color:#f44336;--mdc-slider-inactive-track-color:#f44336;--mdc-slider-with-tick-marks-active-container-color:#fff;--mdc-slider-with-tick-marks-inactive-container-color:#f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, 0.05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, 0.2)}.mat-mdc-slider{--mdc-slider-label-label-text-font:Roboto, sans-serif;--mdc-slider-label-label-text-size:14px;--mdc-slider-label-label-text-line-height:22px;--mdc-slider-label-label-text-tracking:0.0071428571em;--mdc-slider-label-label-text-weight:500}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, 0.87);--mat-menu-item-icon-color:rgba(0, 0, 0, 0.87);--mat-menu-item-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-menu-item-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-menu-container-color:white}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:0.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}.mat-mdc-list-base{--mdc-list-list-item-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-supporting-text-color:rgba(0, 0, 0, 0.54);--mdc-list-list-item-leading-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-disabled-label-text-color:black;--mdc-list-list-item-disabled-leading-icon-color:black;--mdc-list-list-item-disabled-trailing-icon-color:black;--mdc-list-list-item-hover-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, 0.38);--mdc-list-list-item-focus-label-text-color:rgba(0, 0, 0, 0.87);--mdc-list-list-item-hover-state-layer-color:black;--mdc-list-list-item-hover-state-layer-opacity:0.04;--mdc-list-list-item-focus-state-layer-color:black;--mdc-list-list-item-focus-state-layer-opacity:0.12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text{color:#3f51b5}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height:48px;--mdc-list-list-item-two-line-container-height:64px;--mdc-list-list-item-three-line-container-height:88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-list-base{--mdc-list-list-item-label-text-font:Roboto, sans-serif;--mdc-list-list-item-label-text-line-height:24px;--mdc-list-list-item-label-text-size:16px;--mdc-list-list-item-label-text-tracking:0.03125em;--mdc-list-list-item-label-text-weight:400;--mdc-list-list-item-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height:20px;--mdc-list-list-item-supporting-text-size:14px;--mdc-list-list-item-supporting-text-tracking:0.0178571429em;--mdc-list-list-item-supporting-text-weight:400;--mdc-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height:20px;--mdc-list-list-item-trailing-supporting-text-size:12px;--mdc-list-list-item-trailing-supporting-text-tracking:0.0333333333em;--mdc-list-list-item-trailing-supporting-text-weight:400}.mdc-list-group__subheader{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto, sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color:rgba(0, 0, 0, 0.87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, 0.54);--mat-paginator-disabled-icon-color:rgba(0, 0, 0, 0.12)}html{--mat-paginator-container-size:56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:0.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color:#3f51b5;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#3f51b5;--mat-tab-header-active-ripple-color:#3f51b5;--mat-tab-header-inactive-ripple-color:#3f51b5;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#3f51b5;--mat-tab-header-active-hover-label-text-color:#3f51b5;--mat-tab-header-active-focus-indicator-color:#3f51b5;--mat-tab-header-active-hover-indicator-color:#3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color:#ff4081;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#ff4081;--mat-tab-header-active-ripple-color:#ff4081;--mat-tab-header-inactive-ripple-color:#ff4081;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#ff4081;--mat-tab-header-active-hover-label-text-color:#ff4081;--mat-tab-header-active-focus-indicator-color:#ff4081;--mat-tab-header-active-hover-indicator-color:#ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color:#f44336;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, 0.38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-label-text-color:#f44336;--mat-tab-header-active-ripple-color:#f44336;--mat-tab-header-inactive-ripple-color:#f44336;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, 0.6);--mat-tab-header-active-focus-label-text-color:#f44336;--mat-tab-header-active-hover-label-text-color:#f44336;--mat-tab-header-active-focus-indicator-color:#f44336;--mat-tab-header-active-hover-indicator-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color:#3f51b5;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color:#ff4081;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color:#f44336;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height:48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font:Roboto, sans-serif;--mat-tab-header-label-text-size:14px;--mat-tab-header-label-text-letter-spacing:0.0892857143em;--mat-tab-header-label-text-line-height:36px;--mat-tab-header-label-text-weight:500}html{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, 0.38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, 0.54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, 0.87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:rgba(0,0,0,.38)}html{--mdc-checkbox-state-layer-size:40px}.mat-mdc-checkbox .mdc-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color:#000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color:#3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color:#ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color:#f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-text-button-label-text-color:rgba(0, 0, 0, 0.38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color:#fff;--mdc-filled-button-label-text-color:#000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color:#3f51b5;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color:#ff4081;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color:#f44336;--mdc-filled-button-label-text-color:#fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color:rgba(0, 0, 0, 0.12);--mdc-filled-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-filled-button-container-color:rgba(0, 0, 0, 0.12);--mdc-filled-button-label-text-color:rgba(0, 0, 0, 0.38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color:#fff;--mdc-protected-button-label-text-color:#000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color:#3f51b5;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color:#ff4081;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color:#f44336;--mdc-protected-button-label-text-color:#fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color:rgba(0, 0, 0, 0.12);--mdc-protected-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-protected-button-container-color:rgba(0, 0, 0, 0.12);--mdc-protected-button-label-text-color:rgba(0, 0, 0, 0.38);--mdc-protected-button-container-elevation:0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color:rgba(0, 0, 0, 0.12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color:#000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color:#3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color:#ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color:#f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color:rgba(0, 0, 0, 0.38);--mdc-outlined-button-disabled-label-text-color:rgba(0, 0, 0, 0.38);--mdc-outlined-button-outline-color:rgba(0, 0, 0, 0.12);--mdc-outlined-button-disabled-outline-color:rgba(0, 0, 0, 0.12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mdc-button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, 0.0892857143em);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1);--mdc-icon-button-icon-color:inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, 0.1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, 0.1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, 0.1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color:#3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, 0.1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color:#ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, 0.1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color:#f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, 0.1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color:rgba(0, 0, 0, 0.38);--mdc-icon-button-disabled-icon-color:rgba(0, 0, 0, 0.38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, 0.1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, 0.1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color:#fff;--mdc-fab-icon-color:#000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color:#3f51b5;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color:#ff4081;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color:#f44336;--mdc-fab-icon-color:#fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color:rgba(0, 0, 0, 0.12);--mdc-fab-icon-color:rgba(0, 0, 0, 0.38);--mat-mdc-fab-color: rgba(0, 0, 0, 0.38)}.mdc-fab--extended{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-button-font-size, 14px);line-height:var(--mdc-typography-button-line-height, 36px);font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:var(--mdc-typography-button-letter-spacing, 0.0892857143em);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:var(--mdc-typography-button-text-transform, none)}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color:#333333;--mdc-snackbar-supporting-text-color:rgba(255, 255, 255, 0.87);--mat-snack-bar-button-color:#ff4081}.mat-mdc-snack-bar-container{--mdc-snackbar-supporting-text-font:Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height:20px;--mdc-snackbar-supporting-text-size:14px;--mdc-snackbar-supporting-text-weight:400}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:rgba(63, 81, 181, 0.04)}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__pagination{border-top-color:rgba(0, 0, 0, 0.12)}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:rgba(0, 0, 0, 0.04)}.mdc-data-table__header-cell{color:rgba(0, 0, 0, 0.87)}.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:rgba(0, 0, 0, 0.87)}.mat-mdc-table{background:#fff}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-body2-font-size, 14px);line-height:var(--mdc-typography-body2-line-height, 20px);font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:var(--mdc-typography-body2-text-transform, none)}.mdc-data-table__header-cell{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:var(--mdc-typography-subtitle2-font-size, 14px);line-height:var(--mdc-typography-subtitle2-line-height, 22px);font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, 0.0071428571em);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:var(--mdc-typography-subtitle2-text-transform, none)}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color:#3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color:#ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color:#f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:rgba(0,0,0,.38)}.mat-badge-content{font-weight:600;font-size:12px;font-family:Roboto, sans-serif}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, 0.87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:0.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-legacy-button-toggle-text-color:rgba(0, 0, 0, 0.38);--mat-legacy-button-toggle-state-layer-color:rgba(0, 0, 0, 0.12);--mat-legacy-button-toggle-selected-state-text-color:rgba(0, 0, 0, 0.54);--mat-legacy-button-toggle-selected-state-background-color:#e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-legacy-button-toggle-disabled-state-background-color:#eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-background-color:white;--mat-standard-button-toggle-state-layer-color:black;--mat-standard-button-toggle-selected-state-background-color:#e0e0e0;--mat-standard-button-toggle-selected-state-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-standard-button-toggle-disabled-state-background-color:white;--mat-standard-button-toggle-disabled-selected-state-text-color:rgba(0, 0, 0, 0.87);--mat-standard-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-divider-color:#e0e0e0}html{--mat-standard-button-toggle-height:48px}html{--mat-legacy-button-toggle-text-font:Roboto, sans-serif;--mat-standard-button-toggle-text-font:Roboto, sans-serif}.mat-calendar-arrow{fill:rgba(0,0,0,.54)}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:rgba(0,0,0,.54)}.mat-calendar-table-header-divider::after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:rgba(0,0,0,.54)}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:rgba(0,0,0,.87);border-color:rgba(0,0,0,0)}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:rgba(0,0,0,.38)}.mat-form-field-disabled .mat-date-range-input-separator{color:rgba(0,0,0,.38)}.mat-calendar-body-in-preview{color:rgba(0,0,0,.24)}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:rgba(0,0,0,.38)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:rgba(0,0,0,.18)}.mat-calendar-body-in-range::before{background:rgba(63,81,181,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(63, 81, 181, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(63, 81, 181, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(63,81,181,.4)}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(63,81,181,.3)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(63,81,181,.3)}}.mat-datepicker-content{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);background-color:#fff;color:rgba(0,0,0,.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before{background:rgba(255,64,129,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(255, 64, 129, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(255, 64, 129, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(255,64,129,.4)}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(255,64,129,.3)}@media(hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(255,64,129,.3)}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before{background:rgba(244,67,54,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, rgba(244, 67, 54, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, rgba(244, 67, 54, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(244,67,54,.4)}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(244,67,54,.3)}@media(hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:rgba(244,67,54,.3)}}.mat-datepicker-content-touch{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12)}.mat-datepicker-toggle-active{color:#3f51b5}.mat-datepicker-toggle-active.mat-accent{color:#ff4081}.mat-datepicker-toggle-active.mat-warn{color:#f44336}.mat-date-range-input-inner[disabled]{color:rgba(0,0,0,.38)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-calendar{font-family:Roboto, sans-serif}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}html{--mat-divider-color:rgba(0, 0, 0, 0.12)}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, 0.87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, 0.12);--mat-expansion-header-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-expansion-header-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-expansion-header-disabled-state-text-color:rgba(0, 0, 0, 0.26);--mat-expansion-header-text-color:rgba(0, 0, 0, 0.87);--mat-expansion-header-description-color:rgba(0, 0, 0, 0.54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, 0.54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:0.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}.mat-icon.mat-primary{color:#3f51b5}.mat-icon.mat-accent{color:#ff4081}.mat-icon.mat-warn{color:#f44336}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, 0.12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, 0.87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, 0.87);--mat-sidenav-scrim-color:rgba(0, 0, 0, 0.6)}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, 0.12);--mat-stepper-header-hover-state-layer-color:rgba(0, 0, 0, 0.04);--mat-stepper-header-focus-state-layer-color:rgba(0, 0, 0, 0.04);--mat-stepper-header-label-text-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, 0.87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, 0.54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#ff4081;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#ff4081;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#ff4081;--mat-stepper-header-edit-state-icon-foreground-color:white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#f44336;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#f44336;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#f44336;--mat-stepper-header-edit-state-icon-foreground-color:white}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color:whitesmoke;--mat-toolbar-container-text-color:rgba(0, 0, 0, 0.87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color:#3f51b5;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color:#ff4081;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color:#f44336;--mat-toolbar-container-text-color:white}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:0.0125em;--mat-toolbar-title-text-weight:500}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:rgba(0,0,0,.87)}.mat-tree-node{min-height:48px}.mat-tree{font-family:Roboto, sans-serif}.mat-tree-node,.mat-nested-tree-node{font-weight:400;font-size:14px}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font-size:24px;font-weight:400;line-height:32px;font-family:Roboto, sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font-size:20px;font-weight:500;line-height:32px;font-family:Roboto, sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font-size:16px;font-weight:400;line-height:28px;font-family:Roboto, sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font-size:16px;font-weight:400;line-height:24px;font-family:Roboto, sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 calc(14px * 0.83)/20px Roboto, sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 calc(14px * 0.67)/20px Roboto, sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font-size:14px;font-weight:500;line-height:22px;font-family:Roboto, sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font-size:14px;font-weight:400;line-height:20px;font-family:Roboto, sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font-size:12px;font-weight:400;line-height:20px;font-family:Roboto, sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font-size:96px;font-weight:300;line-height:96px;font-family:Roboto, sans-serif;letter-spacing:-0.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font-size:60px;font-weight:300;line-height:60px;font-family:Roboto, sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font-size:48px;font-weight:400;line-height:50px;font-family:Roboto, sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font-size:34px;font-weight:400;line-height:40px;font-family:Roboto, sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}","@import '@angular/material/prebuilt-themes/indigo-pink.css';\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n margin: 0;\n font-family: Roboto, sans-serif;\n}\n\nul {\n list-style-type: none;\n}\n","@font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src:\n local('Roboto Regular'),\n local('Roboto-Regular'),\n url('./assets/fonts/Roboto-Regular.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-weight: 600;\n font-style: normal;\n src:\n local('Roboto Medium'),\n local('Roboto-Medium'),\n url('./assets/fonts/Roboto-Medium.ttf') format('truetype');\n}\n\n@font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src:\n local('Roboto Bold'),\n local('Roboto-Bold'),\n url('./assets/fonts/Roboto-Bold.ttf') format('truetype');\n}\n"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/vendor.js b/vendor.js deleted file mode 100644 index fdd8dca9..00000000 --- a/vendor.js +++ /dev/null @@ -1,75387 +0,0 @@ -"use strict"; -(self["webpackChunkdemo"] = self["webpackChunkdemo"] || []).push([["vendor"],{ - -/***/ 462: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ BehaviorSubject: () => (/* binding */ BehaviorSubject) -/* harmony export */ }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subject */ 2484); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ 6950); - - -class BehaviorSubject extends _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject { - constructor(_value) { - super(); - this._value = _value; - } - get value() { - return this.getValue(); - } - _subscribe(subscriber) { - const subscription = super._subscribe(subscriber); - if (subscription && !subscription.closed) { - subscriber.next(this._value); - } - return subscription; - } - getValue() { - if (this.hasError) { - throw this.thrownError; - } else if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__.ObjectUnsubscribedError(); - } else { - return this._value; - } - } - next(value) { - super.next(this._value = value); - } -} - -/***/ }), - -/***/ 9807: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ InnerSubscriber: () => (/* binding */ InnerSubscriber) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscriber */ 5142); - -class InnerSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(parent, outerValue, outerIndex) { - super(); - this.parent = parent; - this.outerValue = outerValue; - this.outerIndex = outerIndex; - this.index = 0; - } - _next(value) { - this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); - } - _error(error) { - this.parent.notifyError(error, this); - this.unsubscribe(); - } - _complete() { - this.parent.notifyComplete(this); - this.unsubscribe(); - } -} - -/***/ }), - -/***/ 7618: -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Notification.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Notification: () => (/* binding */ Notification), -/* harmony export */ NotificationKind: () => (/* binding */ NotificationKind) -/* harmony export */ }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./observable/empty */ 506); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable/of */ 9681); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./observable/throwError */ 3994); - - - -var NotificationKind; -(function (NotificationKind) { - NotificationKind["NEXT"] = "N"; - NotificationKind["ERROR"] = "E"; - NotificationKind["COMPLETE"] = "C"; -})(NotificationKind || (NotificationKind = {})); -class Notification { - constructor(kind, value, error) { - this.kind = kind; - this.value = value; - this.error = error; - this.hasValue = kind === 'N'; - } - observe(observer) { - switch (this.kind) { - case 'N': - return observer.next && observer.next(this.value); - case 'E': - return observer.error && observer.error(this.error); - case 'C': - return observer.complete && observer.complete(); - } - } - do(next, error, complete) { - const kind = this.kind; - switch (kind) { - case 'N': - return next && next(this.value); - case 'E': - return error && error(this.error); - case 'C': - return complete && complete(); - } - } - accept(nextOrObserver, error, complete) { - if (nextOrObserver && typeof nextOrObserver.next === 'function') { - return this.observe(nextOrObserver); - } else { - return this.do(nextOrObserver, error, complete); - } - } - toObservable() { - const kind = this.kind; - switch (kind) { - case 'N': - return (0,_observable_of__WEBPACK_IMPORTED_MODULE_0__.of)(this.value); - case 'E': - return (0,_observable_throwError__WEBPACK_IMPORTED_MODULE_1__.throwError)(this.error); - case 'C': - return (0,_observable_empty__WEBPACK_IMPORTED_MODULE_2__.empty)(); - } - throw new Error('unexpected notification kind value'); - } - static createNext(value) { - if (typeof value !== 'undefined') { - return new Notification('N', value); - } - return Notification.undefinedValueNotification; - } - static createError(err) { - return new Notification('E', undefined, err); - } - static createComplete() { - return Notification.completeNotification; - } -} -Notification.completeNotification = new Notification('C'); -Notification.undefinedValueNotification = new Notification('N', undefined); - -/***/ }), - -/***/ 3064: -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Observable.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Observable: () => (/* binding */ Observable) -/* harmony export */ }); -/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/canReportError */ 3159); -/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/toSubscriber */ 6920); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/observable */ 5129); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/pipe */ 7734); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config */ 7329); - - - - - -class Observable { - constructor(subscribe) { - this._isScalar = false; - if (subscribe) { - this._subscribe = subscribe; - } - } - lift(operator) { - const observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - } - subscribe(observerOrNext, error, complete) { - const { - operator - } = this; - const sink = (0,_util_toSubscriber__WEBPACK_IMPORTED_MODULE_0__.toSubscriber)(observerOrNext, error, complete); - if (operator) { - sink.add(operator.call(sink, this.source)); - } else { - sink.add(this.source || _config__WEBPACK_IMPORTED_MODULE_1__.config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink)); - } - if (_config__WEBPACK_IMPORTED_MODULE_1__.config.useDeprecatedSynchronousErrorHandling) { - if (sink.syncErrorThrowable) { - sink.syncErrorThrowable = false; - if (sink.syncErrorThrown) { - throw sink.syncErrorValue; - } - } - } - return sink; - } - _trySubscribe(sink) { - try { - return this._subscribe(sink); - } catch (err) { - if (_config__WEBPACK_IMPORTED_MODULE_1__.config.useDeprecatedSynchronousErrorHandling) { - sink.syncErrorThrown = true; - sink.syncErrorValue = err; - } - if ((0,_util_canReportError__WEBPACK_IMPORTED_MODULE_2__.canReportError)(sink)) { - sink.error(err); - } else { - console.warn(err); - } - } - } - forEach(next, promiseCtor) { - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor((resolve, reject) => { - let subscription; - subscription = this.subscribe(value => { - try { - next(value); - } catch (err) { - reject(err); - if (subscription) { - subscription.unsubscribe(); - } - } - }, reject, resolve); - }); - } - _subscribe(subscriber) { - const { - source - } = this; - return source && source.subscribe(subscriber); - } - [_symbol_observable__WEBPACK_IMPORTED_MODULE_3__.observable]() { - return this; - } - pipe(...operations) { - if (operations.length === 0) { - return this; - } - return (0,_util_pipe__WEBPACK_IMPORTED_MODULE_4__.pipeFromArray)(operations)(this); - } - toPromise(promiseCtor) { - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor((resolve, reject) => { - let value; - this.subscribe(x => value = x, err => reject(err), () => resolve(value)); - }); - } -} -Observable.create = subscribe => { - return new Observable(subscribe); -}; -function getPromiseCtor(promiseCtor) { - if (!promiseCtor) { - promiseCtor = _config__WEBPACK_IMPORTED_MODULE_1__.config.Promise || Promise; - } - if (!promiseCtor) { - throw new Error('no Promise impl found'); - } - return promiseCtor; -} - -/***/ }), - -/***/ 6195: -/*!*********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Observer.js ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ empty: () => (/* binding */ empty) -/* harmony export */ }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ 7329); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/hostReportError */ 8722); - - -const empty = { - closed: true, - next(value) {}, - error(err) { - if (_config__WEBPACK_IMPORTED_MODULE_0__.config.useDeprecatedSynchronousErrorHandling) { - throw err; - } else { - (0,_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__.hostReportError)(err); - } - }, - complete() {} -}; - -/***/ }), - -/***/ 8369: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ OuterSubscriber: () => (/* binding */ OuterSubscriber) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscriber */ 5142); - -class OuterSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - } - notifyError(error, innerSub) { - this.destination.error(error); - } - notifyComplete(innerSub) { - this.destination.complete(); - } -} - -/***/ }), - -/***/ 6309: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/ReplaySubject.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ReplaySubject: () => (/* binding */ ReplaySubject) -/* harmony export */ }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subject */ 2484); -/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scheduler/queue */ 6948); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscription */ 4614); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operators/observeOn */ 8892); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ 6950); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./SubjectSubscription */ 1460); - - - - - - -class ReplaySubject extends _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject { - constructor(bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, scheduler) { - super(); - this.scheduler = scheduler; - this._events = []; - this._infiniteTimeWindow = false; - this._bufferSize = bufferSize < 1 ? 1 : bufferSize; - this._windowTime = windowTime < 1 ? 1 : windowTime; - if (windowTime === Number.POSITIVE_INFINITY) { - this._infiniteTimeWindow = true; - this.next = this.nextInfiniteTimeWindow; - } else { - this.next = this.nextTimeWindow; - } - } - nextInfiniteTimeWindow(value) { - if (!this.isStopped) { - const _events = this._events; - _events.push(value); - if (_events.length > this._bufferSize) { - _events.shift(); - } - } - super.next(value); - } - nextTimeWindow(value) { - if (!this.isStopped) { - this._events.push(new ReplayEvent(this._getNow(), value)); - this._trimBufferThenGetEvents(); - } - super.next(value); - } - _subscribe(subscriber) { - const _infiniteTimeWindow = this._infiniteTimeWindow; - const _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents(); - const scheduler = this.scheduler; - const len = _events.length; - let subscription; - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_1__.ObjectUnsubscribedError(); - } else if (this.isStopped || this.hasError) { - subscription = _Subscription__WEBPACK_IMPORTED_MODULE_2__.Subscription.EMPTY; - } else { - this.observers.push(subscriber); - subscription = new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_3__.SubjectSubscription(this, subscriber); - } - if (scheduler) { - subscriber.add(subscriber = new _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__.ObserveOnSubscriber(subscriber, scheduler)); - } - if (_infiniteTimeWindow) { - for (let i = 0; i < len && !subscriber.closed; i++) { - subscriber.next(_events[i]); - } - } else { - for (let i = 0; i < len && !subscriber.closed; i++) { - subscriber.next(_events[i].value); - } - } - if (this.hasError) { - subscriber.error(this.thrownError); - } else if (this.isStopped) { - subscriber.complete(); - } - return subscription; - } - _getNow() { - return (this.scheduler || _scheduler_queue__WEBPACK_IMPORTED_MODULE_5__.queue).now(); - } - _trimBufferThenGetEvents() { - const now = this._getNow(); - const _bufferSize = this._bufferSize; - const _windowTime = this._windowTime; - const _events = this._events; - const eventsCount = _events.length; - let spliceCount = 0; - while (spliceCount < eventsCount) { - if (now - _events[spliceCount].time < _windowTime) { - break; - } - spliceCount++; - } - if (eventsCount > _bufferSize) { - spliceCount = Math.max(spliceCount, eventsCount - _bufferSize); - } - if (spliceCount > 0) { - _events.splice(0, spliceCount); - } - return _events; - } -} -class ReplayEvent { - constructor(time, value) { - this.time = time; - this.value = value; - } -} - -/***/ }), - -/***/ 7792: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Scheduler.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Scheduler: () => (/* binding */ Scheduler) -/* harmony export */ }); -class Scheduler { - constructor(SchedulerAction, now = Scheduler.now) { - this.SchedulerAction = SchedulerAction; - this.now = now; - } - schedule(work, delay = 0, state) { - return new this.SchedulerAction(this, work).schedule(state, delay); - } -} -Scheduler.now = () => Date.now(); - -/***/ }), - -/***/ 2484: -/*!********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Subject.js ***! - \********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AnonymousSubject: () => (/* binding */ AnonymousSubject), -/* harmony export */ Subject: () => (/* binding */ Subject), -/* harmony export */ SubjectSubscriber: () => (/* binding */ SubjectSubscriber) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observable */ 3064); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscriber */ 5142); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Subscription */ 4614); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ 6950); -/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SubjectSubscription */ 1460); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ 1999); - - - - - - -class SubjectSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination) { - super(destination); - this.destination = destination; - } -} -class Subject extends _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable { - constructor() { - super(); - this.observers = []; - this.closed = false; - this.isStopped = false; - this.hasError = false; - this.thrownError = null; - } - [_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_2__.rxSubscriber]() { - return new SubjectSubscriber(this); - } - lift(operator) { - const subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - } - next(value) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__.ObjectUnsubscribedError(); - } - if (!this.isStopped) { - const { - observers - } = this; - const len = observers.length; - const copy = observers.slice(); - for (let i = 0; i < len; i++) { - copy[i].next(value); - } - } - } - error(err) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__.ObjectUnsubscribedError(); - } - this.hasError = true; - this.thrownError = err; - this.isStopped = true; - const { - observers - } = this; - const len = observers.length; - const copy = observers.slice(); - for (let i = 0; i < len; i++) { - copy[i].error(err); - } - this.observers.length = 0; - } - complete() { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__.ObjectUnsubscribedError(); - } - this.isStopped = true; - const { - observers - } = this; - const len = observers.length; - const copy = observers.slice(); - for (let i = 0; i < len; i++) { - copy[i].complete(); - } - this.observers.length = 0; - } - unsubscribe() { - this.isStopped = true; - this.closed = true; - this.observers = null; - } - _trySubscribe(subscriber) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__.ObjectUnsubscribedError(); - } else { - return super._trySubscribe(subscriber); - } - } - _subscribe(subscriber) { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__.ObjectUnsubscribedError(); - } else if (this.hasError) { - subscriber.error(this.thrownError); - return _Subscription__WEBPACK_IMPORTED_MODULE_4__.Subscription.EMPTY; - } else if (this.isStopped) { - subscriber.complete(); - return _Subscription__WEBPACK_IMPORTED_MODULE_4__.Subscription.EMPTY; - } else { - this.observers.push(subscriber); - return new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__.SubjectSubscription(this, subscriber); - } - } - asObservable() { - const observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable(); - observable.source = this; - return observable; - } -} -Subject.create = (destination, source) => { - return new AnonymousSubject(destination, source); -}; -class AnonymousSubject extends Subject { - constructor(destination, source) { - super(); - this.destination = destination; - this.source = source; - } - next(value) { - const { - destination - } = this; - if (destination && destination.next) { - destination.next(value); - } - } - error(err) { - const { - destination - } = this; - if (destination && destination.error) { - this.destination.error(err); - } - } - complete() { - const { - destination - } = this; - if (destination && destination.complete) { - this.destination.complete(); - } - } - _subscribe(subscriber) { - const { - source - } = this; - if (source) { - return this.source.subscribe(subscriber); - } else { - return _Subscription__WEBPACK_IMPORTED_MODULE_4__.Subscription.EMPTY; - } - } -} - -/***/ }), - -/***/ 1460: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ SubjectSubscription: () => (/* binding */ SubjectSubscription) -/* harmony export */ }); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscription */ 4614); - -class SubjectSubscription extends _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription { - constructor(subject, subscriber) { - super(); - this.subject = subject; - this.subscriber = subscriber; - this.closed = false; - } - unsubscribe() { - if (this.closed) { - return; - } - this.closed = true; - const subject = this.subject; - const observers = subject.observers; - this.subject = null; - if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { - return; - } - const subscriberIndex = observers.indexOf(this.subscriber); - if (subscriberIndex !== -1) { - observers.splice(subscriberIndex, 1); - } - } -} - -/***/ }), - -/***/ 5142: -/*!***********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Subscriber.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ SafeSubscriber: () => (/* binding */ SafeSubscriber), -/* harmony export */ Subscriber: () => (/* binding */ Subscriber) -/* harmony export */ }); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/isFunction */ 5251); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observer */ 6195); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscription */ 4614); -/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ 1999); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ 7329); -/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/hostReportError */ 8722); - - - - - - -class Subscriber extends _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription { - constructor(destinationOrNext, error, complete) { - super(); - this.syncErrorValue = null; - this.syncErrorThrown = false; - this.syncErrorThrowable = false; - this.isStopped = false; - switch (arguments.length) { - case 0: - this.destination = _Observer__WEBPACK_IMPORTED_MODULE_1__.empty; - break; - case 1: - if (!destinationOrNext) { - this.destination = _Observer__WEBPACK_IMPORTED_MODULE_1__.empty; - break; - } - if (typeof destinationOrNext === 'object') { - if (destinationOrNext instanceof Subscriber) { - this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; - this.destination = destinationOrNext; - destinationOrNext.add(this); - } else { - this.syncErrorThrowable = true; - this.destination = new SafeSubscriber(this, destinationOrNext); - } - break; - } - default: - this.syncErrorThrowable = true; - this.destination = new SafeSubscriber(this, destinationOrNext, error, complete); - break; - } - } - [_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_2__.rxSubscriber]() { - return this; - } - static create(next, error, complete) { - const subscriber = new Subscriber(next, error, complete); - subscriber.syncErrorThrowable = false; - return subscriber; - } - next(value) { - if (!this.isStopped) { - this._next(value); - } - } - error(err) { - if (!this.isStopped) { - this.isStopped = true; - this._error(err); - } - } - complete() { - if (!this.isStopped) { - this.isStopped = true; - this._complete(); - } - } - unsubscribe() { - if (this.closed) { - return; - } - this.isStopped = true; - super.unsubscribe(); - } - _next(value) { - this.destination.next(value); - } - _error(err) { - this.destination.error(err); - this.unsubscribe(); - } - _complete() { - this.destination.complete(); - this.unsubscribe(); - } - _unsubscribeAndRecycle() { - const { - _parentOrParents - } = this; - this._parentOrParents = null; - this.unsubscribe(); - this.closed = false; - this.isStopped = false; - this._parentOrParents = _parentOrParents; - return this; - } -} -class SafeSubscriber extends Subscriber { - constructor(_parentSubscriber, observerOrNext, error, complete) { - super(); - this._parentSubscriber = _parentSubscriber; - let next; - let context = this; - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_3__.isFunction)(observerOrNext)) { - next = observerOrNext; - } else if (observerOrNext) { - next = observerOrNext.next; - error = observerOrNext.error; - complete = observerOrNext.complete; - if (observerOrNext !== _Observer__WEBPACK_IMPORTED_MODULE_1__.empty) { - context = Object.create(observerOrNext); - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_3__.isFunction)(context.unsubscribe)) { - this.add(context.unsubscribe.bind(context)); - } - context.unsubscribe = this.unsubscribe.bind(this); - } - } - this._context = context; - this._next = next; - this._error = error; - this._complete = complete; - } - next(value) { - if (!this.isStopped && this._next) { - const { - _parentSubscriber - } = this; - if (!_config__WEBPACK_IMPORTED_MODULE_4__.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._next, value); - } else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { - this.unsubscribe(); - } - } - } - error(err) { - if (!this.isStopped) { - const { - _parentSubscriber - } = this; - const { - useDeprecatedSynchronousErrorHandling - } = _config__WEBPACK_IMPORTED_MODULE_4__.config; - if (this._error) { - if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._error, err); - this.unsubscribe(); - } else { - this.__tryOrSetError(_parentSubscriber, this._error, err); - this.unsubscribe(); - } - } else if (!_parentSubscriber.syncErrorThrowable) { - this.unsubscribe(); - if (useDeprecatedSynchronousErrorHandling) { - throw err; - } - (0,_util_hostReportError__WEBPACK_IMPORTED_MODULE_5__.hostReportError)(err); - } else { - if (useDeprecatedSynchronousErrorHandling) { - _parentSubscriber.syncErrorValue = err; - _parentSubscriber.syncErrorThrown = true; - } else { - (0,_util_hostReportError__WEBPACK_IMPORTED_MODULE_5__.hostReportError)(err); - } - this.unsubscribe(); - } - } - } - complete() { - if (!this.isStopped) { - const { - _parentSubscriber - } = this; - if (this._complete) { - const wrappedComplete = () => this._complete.call(this._context); - if (!_config__WEBPACK_IMPORTED_MODULE_4__.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(wrappedComplete); - this.unsubscribe(); - } else { - this.__tryOrSetError(_parentSubscriber, wrappedComplete); - this.unsubscribe(); - } - } else { - this.unsubscribe(); - } - } - } - __tryOrUnsub(fn, value) { - try { - fn.call(this._context, value); - } catch (err) { - this.unsubscribe(); - if (_config__WEBPACK_IMPORTED_MODULE_4__.config.useDeprecatedSynchronousErrorHandling) { - throw err; - } else { - (0,_util_hostReportError__WEBPACK_IMPORTED_MODULE_5__.hostReportError)(err); - } - } - } - __tryOrSetError(parent, fn, value) { - if (!_config__WEBPACK_IMPORTED_MODULE_4__.config.useDeprecatedSynchronousErrorHandling) { - throw new Error('bad call'); - } - try { - fn.call(this._context, value); - } catch (err) { - if (_config__WEBPACK_IMPORTED_MODULE_4__.config.useDeprecatedSynchronousErrorHandling) { - parent.syncErrorValue = err; - parent.syncErrorThrown = true; - return true; - } else { - (0,_util_hostReportError__WEBPACK_IMPORTED_MODULE_5__.hostReportError)(err); - return true; - } - } - return false; - } - _unsubscribe() { - const { - _parentSubscriber - } = this; - this._context = null; - this._parentSubscriber = null; - _parentSubscriber.unsubscribe(); - } -} - -/***/ }), - -/***/ 4614: -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/Subscription.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Subscription: () => (/* binding */ Subscription) -/* harmony export */ }); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/isArray */ 7264); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/isObject */ 7560); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/isFunction */ 5251); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/UnsubscriptionError */ 9164); - - - - -class Subscription { - constructor(unsubscribe) { - this.closed = false; - this._parentOrParents = null; - this._subscriptions = null; - if (unsubscribe) { - this._ctorUnsubscribe = true; - this._unsubscribe = unsubscribe; - } - } - unsubscribe() { - let errors; - if (this.closed) { - return; - } - let { - _parentOrParents, - _ctorUnsubscribe, - _unsubscribe, - _subscriptions - } = this; - this.closed = true; - this._parentOrParents = null; - this._subscriptions = null; - if (_parentOrParents instanceof Subscription) { - _parentOrParents.remove(this); - } else if (_parentOrParents !== null) { - for (let index = 0; index < _parentOrParents.length; ++index) { - const parent = _parentOrParents[index]; - parent.remove(this); - } - } - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(_unsubscribe)) { - if (_ctorUnsubscribe) { - this._unsubscribe = undefined; - } - try { - _unsubscribe.call(this); - } catch (e) { - errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e]; - } - } - if ((0,_util_isArray__WEBPACK_IMPORTED_MODULE_2__.isArray)(_subscriptions)) { - let index = -1; - let len = _subscriptions.length; - while (++index < len) { - const sub = _subscriptions[index]; - if ((0,_util_isObject__WEBPACK_IMPORTED_MODULE_3__.isObject)(sub)) { - try { - sub.unsubscribe(); - } catch (e) { - errors = errors || []; - if (e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError) { - errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); - } else { - errors.push(e); - } - } - } - } - } - if (errors) { - throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError(errors); - } - } - add(teardown) { - let subscription = teardown; - if (!teardown) { - return Subscription.EMPTY; - } - switch (typeof teardown) { - case 'function': - subscription = new Subscription(teardown); - case 'object': - if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') { - return subscription; - } else if (this.closed) { - subscription.unsubscribe(); - return subscription; - } else if (!(subscription instanceof Subscription)) { - const tmp = subscription; - subscription = new Subscription(); - subscription._subscriptions = [tmp]; - } - break; - default: - { - throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); - } - } - let { - _parentOrParents - } = subscription; - if (_parentOrParents === null) { - subscription._parentOrParents = this; - } else if (_parentOrParents instanceof Subscription) { - if (_parentOrParents === this) { - return subscription; - } - subscription._parentOrParents = [_parentOrParents, this]; - } else if (_parentOrParents.indexOf(this) === -1) { - _parentOrParents.push(this); - } else { - return subscription; - } - const subscriptions = this._subscriptions; - if (subscriptions === null) { - this._subscriptions = [subscription]; - } else { - subscriptions.push(subscription); - } - return subscription; - } - remove(subscription) { - const subscriptions = this._subscriptions; - if (subscriptions) { - const subscriptionIndex = subscriptions.indexOf(subscription); - if (subscriptionIndex !== -1) { - subscriptions.splice(subscriptionIndex, 1); - } - } - } -} -Subscription.EMPTY = function (empty) { - empty.closed = true; - return empty; -}(new Subscription()); -function flattenUnsubscriptionErrors(errors) { - return errors.reduce((errs, err) => errs.concat(err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_1__.UnsubscriptionError ? err.errors : err), []); -} - -/***/ }), - -/***/ 7329: -/*!*******************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/config.js ***! - \*******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ config: () => (/* binding */ config) -/* harmony export */ }); -let _enable_super_gross_mode_that_will_cause_bad_things = false; -const config = { - Promise: undefined, - set useDeprecatedSynchronousErrorHandling(value) { - if (value) { - const error = new Error(); - console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack); - } else if (_enable_super_gross_mode_that_will_cause_bad_things) { - console.log('RxJS: Back to a better error behavior. Thank you. <3'); - } - _enable_super_gross_mode_that_will_cause_bad_things = value; - }, - get useDeprecatedSynchronousErrorHandling() { - return _enable_super_gross_mode_that_will_cause_bad_things; - } -}; - -/***/ }), - -/***/ 6241: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/innerSubscribe.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ComplexInnerSubscriber: () => (/* binding */ ComplexInnerSubscriber), -/* harmony export */ ComplexOuterSubscriber: () => (/* binding */ ComplexOuterSubscriber), -/* harmony export */ SimpleInnerSubscriber: () => (/* binding */ SimpleInnerSubscriber), -/* harmony export */ SimpleOuterSubscriber: () => (/* binding */ SimpleOuterSubscriber), -/* harmony export */ innerSubscribe: () => (/* binding */ innerSubscribe) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Subscriber */ 5142); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observable */ 3064); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/subscribeTo */ 3787); - - - -class SimpleInnerSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(parent) { - super(); - this.parent = parent; - } - _next(value) { - this.parent.notifyNext(value); - } - _error(error) { - this.parent.notifyError(error); - this.unsubscribe(); - } - _complete() { - this.parent.notifyComplete(); - this.unsubscribe(); - } -} -class ComplexInnerSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(parent, outerValue, outerIndex) { - super(); - this.parent = parent; - this.outerValue = outerValue; - this.outerIndex = outerIndex; - } - _next(value) { - this.parent.notifyNext(this.outerValue, value, this.outerIndex, this); - } - _error(error) { - this.parent.notifyError(error); - this.unsubscribe(); - } - _complete() { - this.parent.notifyComplete(this); - this.unsubscribe(); - } -} -class SimpleOuterSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - notifyNext(innerValue) { - this.destination.next(innerValue); - } - notifyError(err) { - this.destination.error(err); - } - notifyComplete() { - this.destination.complete(); - } -} -class ComplexOuterSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) { - this.destination.next(innerValue); - } - notifyError(error) { - this.destination.error(error); - } - notifyComplete(_innerSub) { - this.destination.complete(); - } -} -function innerSubscribe(result, innerSubscriber) { - if (innerSubscriber.closed) { - return undefined; - } - if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable) { - return result.subscribe(innerSubscriber); - } - let subscription; - try { - subscription = (0,_util_subscribeTo__WEBPACK_IMPORTED_MODULE_2__.subscribeTo)(result)(innerSubscriber); - } catch (error) { - innerSubscriber.error(error); - } - return subscription; -} - -/***/ }), - -/***/ 9148: -/*!*********************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js ***! - \*********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ConnectableObservable: () => (/* binding */ ConnectableObservable), -/* harmony export */ connectableObservableDescriptor: () => (/* binding */ connectableObservableDescriptor) -/* harmony export */ }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subject */ 2484); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/refCount */ 6159); - - - - - -class ConnectableObservable extends _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable { - constructor(source, subjectFactory) { - super(); - this.source = source; - this.subjectFactory = subjectFactory; - this._refCount = 0; - this._isComplete = false; - } - _subscribe(subscriber) { - return this.getSubject().subscribe(subscriber); - } - getSubject() { - const subject = this._subject; - if (!subject || subject.isStopped) { - this._subject = this.subjectFactory(); - } - return this._subject; - } - connect() { - let connection = this._connection; - if (!connection) { - this._isComplete = false; - connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(); - connection.add(this.source.subscribe(new ConnectableSubscriber(this.getSubject(), this))); - if (connection.closed) { - this._connection = null; - connection = _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription.EMPTY; - } - } - return connection; - } - refCount() { - return (0,_operators_refCount__WEBPACK_IMPORTED_MODULE_2__.refCount)()(this); - } -} -const connectableObservableDescriptor = (() => { - const connectableProto = ConnectableObservable.prototype; - return { - operator: { - value: null - }, - _refCount: { - value: 0, - writable: true - }, - _subject: { - value: null, - writable: true - }, - _connection: { - value: null, - writable: true - }, - _subscribe: { - value: connectableProto._subscribe - }, - _isComplete: { - value: connectableProto._isComplete, - writable: true - }, - getSubject: { - value: connectableProto.getSubject - }, - connect: { - value: connectableProto.connect - }, - refCount: { - value: connectableProto.refCount - } - }; -})(); -class ConnectableSubscriber extends _Subject__WEBPACK_IMPORTED_MODULE_3__.SubjectSubscriber { - constructor(destination, connectable) { - super(destination); - this.connectable = connectable; - } - _error(err) { - this._unsubscribe(); - super._error(err); - } - _complete() { - this.connectable._isComplete = true; - this._unsubscribe(); - super._complete(); - } - _unsubscribe() { - const connectable = this.connectable; - if (connectable) { - this.connectable = null; - const connection = connectable._connection; - connectable._refCount = 0; - connectable._subject = null; - connectable._connection = null; - if (connection) { - connection.unsubscribe(); - } - } - } -} -class RefCountOperator { - constructor(connectable) { - this.connectable = connectable; - } - call(subscriber, source) { - const { - connectable - } = this; - connectable._refCount++; - const refCounter = new RefCountSubscriber(subscriber, connectable); - const subscription = source.subscribe(refCounter); - if (!refCounter.closed) { - refCounter.connection = connectable.connect(); - } - return subscription; - } -} -class RefCountSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_4__.Subscriber { - constructor(destination, connectable) { - super(destination); - this.connectable = connectable; - } - _unsubscribe() { - const { - connectable - } = this; - if (!connectable) { - this.connection = null; - return; - } - this.connectable = null; - const refCount = connectable._refCount; - if (refCount <= 0) { - this.connection = null; - return; - } - connectable._refCount = refCount - 1; - if (refCount > 1) { - this.connection = null; - return; - } - const { - connection - } = this; - const sharedConnection = connectable._connection; - this.connection = null; - if (sharedConnection && (!connection || sharedConnection === connection)) { - sharedConnection.unsubscribe(); - } - } -} - -/***/ }), - -/***/ 4555: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CombineLatestOperator: () => (/* binding */ CombineLatestOperator), -/* harmony export */ CombineLatestSubscriber: () => (/* binding */ CombineLatestSubscriber), -/* harmony export */ combineLatest: () => (/* binding */ combineLatest) -/* harmony export */ }); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ 9054); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ 7264); -/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ 8369); -/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ 4660); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fromArray */ 1155); - - - - - -const NONE = {}; -function combineLatest(...observables) { - let resultSelector = undefined; - let scheduler = undefined; - if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__.isScheduler)(observables[observables.length - 1])) { - scheduler = observables.pop(); - } - if (typeof observables[observables.length - 1] === 'function') { - resultSelector = observables.pop(); - } - if (observables.length === 1 && (0,_util_isArray__WEBPACK_IMPORTED_MODULE_1__.isArray)(observables[0])) { - observables = observables[0]; - } - return (0,_fromArray__WEBPACK_IMPORTED_MODULE_2__.fromArray)(observables, scheduler).lift(new CombineLatestOperator(resultSelector)); -} -class CombineLatestOperator { - constructor(resultSelector) { - this.resultSelector = resultSelector; - } - call(subscriber, source) { - return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector)); - } -} -class CombineLatestSubscriber extends _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__.OuterSubscriber { - constructor(destination, resultSelector) { - super(destination); - this.resultSelector = resultSelector; - this.active = 0; - this.values = []; - this.observables = []; - } - _next(observable) { - this.values.push(NONE); - this.observables.push(observable); - } - _complete() { - const observables = this.observables; - const len = observables.length; - if (len === 0) { - this.destination.complete(); - } else { - this.active = len; - this.toRespond = len; - for (let i = 0; i < len; i++) { - const observable = observables[i]; - this.add((0,_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__.subscribeToResult)(this, observable, undefined, i)); - } - } - } - notifyComplete(unused) { - if ((this.active -= 1) === 0) { - this.destination.complete(); - } - } - notifyNext(_outerValue, innerValue, outerIndex) { - const values = this.values; - const oldVal = values[outerIndex]; - const toRespond = !this.toRespond ? 0 : oldVal === NONE ? --this.toRespond : this.toRespond; - values[outerIndex] = innerValue; - if (toRespond === 0) { - if (this.resultSelector) { - this._tryResultSelector(values); - } else { - this.destination.next(values.slice()); - } - } - } - _tryResultSelector(values) { - let result; - try { - result = this.resultSelector.apply(this, values); - } catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - } -} - -/***/ }), - -/***/ 5774: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/concat.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concat: () => (/* binding */ concat) -/* harmony export */ }); -/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./of */ 9681); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../operators/concatAll */ 8106); - - -function concat(...observables) { - return (0,_operators_concatAll__WEBPACK_IMPORTED_MODULE_0__.concatAll)()((0,_of__WEBPACK_IMPORTED_MODULE_1__.of)(...observables)); -} - -/***/ }), - -/***/ 9531: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/defer.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ defer: () => (/* binding */ defer) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ 502); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ 506); - - - -function defer(observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - let input; - try { - input = observableFactory(); - } catch (err) { - subscriber.error(err); - return undefined; - } - const source = input ? (0,_from__WEBPACK_IMPORTED_MODULE_1__.from)(input) : (0,_empty__WEBPACK_IMPORTED_MODULE_2__.empty)(); - return source.subscribe(subscriber); - }); -} - -/***/ }), - -/***/ 506: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/empty.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EMPTY: () => (/* binding */ EMPTY), -/* harmony export */ empty: () => (/* binding */ empty) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); - -const EMPTY = new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => subscriber.complete()); -function empty(scheduler) { - return scheduler ? emptyScheduled(scheduler) : EMPTY; -} -function emptyScheduled(scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => scheduler.schedule(() => subscriber.complete())); -} - -/***/ }), - -/***/ 2130: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ forkJoin: () => (/* binding */ forkJoin) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isArray */ 7264); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ 7422); -/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isObject */ 7560); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./from */ 502); - - - - - -function forkJoin(...sources) { - if (sources.length === 1) { - const first = sources[0]; - if ((0,_util_isArray__WEBPACK_IMPORTED_MODULE_0__.isArray)(first)) { - return forkJoinInternal(first, null); - } - if ((0,_util_isObject__WEBPACK_IMPORTED_MODULE_1__.isObject)(first) && Object.getPrototypeOf(first) === Object.prototype) { - const keys = Object.keys(first); - return forkJoinInternal(keys.map(key => first[key]), keys); - } - } - if (typeof sources[sources.length - 1] === 'function') { - const resultSelector = sources.pop(); - sources = sources.length === 1 && (0,_util_isArray__WEBPACK_IMPORTED_MODULE_0__.isArray)(sources[0]) ? sources[0] : sources; - return forkJoinInternal(sources, null).pipe((0,_operators_map__WEBPACK_IMPORTED_MODULE_2__.map)(args => resultSelector(...args))); - } - return forkJoinInternal(sources, null); -} -function forkJoinInternal(sources, keys) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__.Observable(subscriber => { - const len = sources.length; - if (len === 0) { - subscriber.complete(); - return; - } - const values = new Array(len); - let completed = 0; - let emitted = 0; - for (let i = 0; i < len; i++) { - const source = (0,_from__WEBPACK_IMPORTED_MODULE_4__.from)(sources[i]); - let hasValue = false; - subscriber.add(source.subscribe({ - next: value => { - if (!hasValue) { - hasValue = true; - emitted++; - } - values[i] = value; - }, - error: err => subscriber.error(err), - complete: () => { - completed++; - if (completed === len || !hasValue) { - if (emitted === len) { - subscriber.next(keys ? keys.reduce((result, key, i) => (result[key] = values[i], result), {}) : values); - } - subscriber.complete(); - } - } - })); - } - }); -} - -/***/ }), - -/***/ 502: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/from.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ from: () => (/* binding */ from) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeTo */ 3787); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduled */ 6340); - - - -function from(input, scheduler) { - if (!scheduler) { - if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable) { - return input; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable((0,_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__.subscribeTo)(input)); - } else { - return (0,_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__.scheduled)(input, scheduler); - } -} - -/***/ }), - -/***/ 1155: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/fromArray.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ fromArray: () => (/* binding */ fromArray) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToArray */ 4491); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduleArray */ 8577); - - - -function fromArray(input, scheduler) { - if (!scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable((0,_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__.subscribeToArray)(input)); - } else { - return (0,_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__.scheduleArray)(input, scheduler); - } -} - -/***/ }), - -/***/ 3190: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ fromEvent: () => (/* binding */ fromEvent) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ 7264); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isFunction */ 5251); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../operators/map */ 7422); - - - - -const toString = (() => Object.prototype.toString)(); -function fromEvent(target, eventName, options, resultSelector) { - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_0__.isFunction)(options)) { - resultSelector = options; - options = undefined; - } - if (resultSelector) { - return fromEvent(target, eventName, options).pipe((0,_operators_map__WEBPACK_IMPORTED_MODULE_1__.map)(args => (0,_util_isArray__WEBPACK_IMPORTED_MODULE_2__.isArray)(args) ? resultSelector(...args) : resultSelector(args))); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_3__.Observable(subscriber => { - function handler(e) { - if (arguments.length > 1) { - subscriber.next(Array.prototype.slice.call(arguments)); - } else { - subscriber.next(e); - } - } - setupSubscription(target, eventName, handler, subscriber, options); - }); -} -function setupSubscription(sourceObj, eventName, handler, subscriber, options) { - let unsubscribe; - if (isEventTarget(sourceObj)) { - const source = sourceObj; - sourceObj.addEventListener(eventName, handler, options); - unsubscribe = () => source.removeEventListener(eventName, handler, options); - } else if (isJQueryStyleEventEmitter(sourceObj)) { - const source = sourceObj; - sourceObj.on(eventName, handler); - unsubscribe = () => source.off(eventName, handler); - } else if (isNodeStyleEventEmitter(sourceObj)) { - const source = sourceObj; - sourceObj.addListener(eventName, handler); - unsubscribe = () => source.removeListener(eventName, handler); - } else if (sourceObj && sourceObj.length) { - for (let i = 0, len = sourceObj.length; i < len; i++) { - setupSubscription(sourceObj[i], eventName, handler, subscriber, options); - } - } else { - throw new TypeError('Invalid event target'); - } - subscriber.add(unsubscribe); -} -function isNodeStyleEventEmitter(sourceObj) { - return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function'; -} -function isJQueryStyleEventEmitter(sourceObj) { - return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function'; -} -function isEventTarget(sourceObj) { - return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function'; -} - -/***/ }), - -/***/ 9718: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/merge.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ merge: () => (/* binding */ merge) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ 9054); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/mergeAll */ 2600); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromArray */ 1155); - - - - -function merge(...observables) { - let concurrent = Number.POSITIVE_INFINITY; - let scheduler = null; - let last = observables[observables.length - 1]; - if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__.isScheduler)(last)) { - scheduler = observables.pop(); - if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') { - concurrent = observables.pop(); - } - } else if (typeof last === 'number') { - concurrent = observables.pop(); - } - if (scheduler === null && observables.length === 1 && observables[0] instanceof _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable) { - return observables[0]; - } - return (0,_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__.mergeAll)(concurrent)((0,_fromArray__WEBPACK_IMPORTED_MODULE_3__.fromArray)(observables, scheduler)); -} - -/***/ }), - -/***/ 9681: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/of.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ of: () => (/* binding */ of) -/* harmony export */ }); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ 9054); -/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fromArray */ 1155); -/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduled/scheduleArray */ 8577); - - - -function of(...args) { - let scheduler = args[args.length - 1]; - if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__.isScheduler)(scheduler)) { - args.pop(); - return (0,_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_1__.scheduleArray)(args, scheduler); - } else { - return (0,_fromArray__WEBPACK_IMPORTED_MODULE_2__.fromArray)(args); - } -} - -/***/ }), - -/***/ 3994: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/throwError.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ throwError: () => (/* binding */ throwError) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); - -function throwError(error, scheduler) { - if (!scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => subscriber.error(error)); - } else { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => scheduler.schedule(dispatch, 0, { - error, - subscriber - })); - } -} -function dispatch({ - error, - subscriber -}) { - subscriber.error(error); -} - -/***/ }), - -/***/ 8435: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/observable/timer.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ timer: () => (/* binding */ timer) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ 1432); -/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isNumeric */ 240); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ 9054); - - - - -function timer(dueTime = 0, periodOrScheduler, scheduler) { - let period = -1; - if ((0,_util_isNumeric__WEBPACK_IMPORTED_MODULE_0__.isNumeric)(periodOrScheduler)) { - period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler); - } else if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__.isScheduler)(periodOrScheduler)) { - scheduler = periodOrScheduler; - } - if (!(0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__.isScheduler)(scheduler)) { - scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__.async; - } - return new _Observable__WEBPACK_IMPORTED_MODULE_3__.Observable(subscriber => { - const due = (0,_util_isNumeric__WEBPACK_IMPORTED_MODULE_0__.isNumeric)(dueTime) ? dueTime : +dueTime - scheduler.now(); - return scheduler.schedule(dispatch, due, { - index: 0, - period, - subscriber - }); - }); -} -function dispatch(state) { - const { - index, - period, - subscriber - } = state; - subscriber.next(index); - if (subscriber.closed) { - return; - } else if (period === -1) { - return subscriber.complete(); - } - state.index = index + 1; - this.schedule(state, period); -} - -/***/ }), - -/***/ 702: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/audit.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ audit: () => (/* binding */ audit) -/* harmony export */ }); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../innerSubscribe */ 6241); - -function audit(durationSelector) { - return function auditOperatorFunction(source) { - return source.lift(new AuditOperator(durationSelector)); - }; -} -class AuditOperator { - constructor(durationSelector) { - this.durationSelector = durationSelector; - } - call(subscriber, source) { - return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector)); - } -} -class AuditSubscriber extends _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleOuterSubscriber { - constructor(destination, durationSelector) { - super(destination); - this.durationSelector = durationSelector; - this.hasValue = false; - } - _next(value) { - this.value = value; - this.hasValue = true; - if (!this.throttled) { - let duration; - try { - const { - durationSelector - } = this; - duration = durationSelector(value); - } catch (err) { - return this.destination.error(err); - } - const innerSubscription = (0,_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.innerSubscribe)(duration, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleInnerSubscriber(this)); - if (!innerSubscription || innerSubscription.closed) { - this.clearThrottle(); - } else { - this.add(this.throttled = innerSubscription); - } - } - } - clearThrottle() { - const { - value, - hasValue, - throttled - } = this; - if (throttled) { - this.remove(throttled); - this.throttled = undefined; - throttled.unsubscribe(); - } - if (hasValue) { - this.value = undefined; - this.hasValue = false; - this.destination.next(value); - } - } - notifyNext() { - this.clearThrottle(); - } - notifyComplete() { - this.clearThrottle(); - } -} - -/***/ }), - -/***/ 1270: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/auditTime.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ auditTime: () => (/* binding */ auditTime) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 1432); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audit */ 702); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/timer */ 8435); - - - -function auditTime(duration, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.async) { - return (0,_audit__WEBPACK_IMPORTED_MODULE_1__.audit)(() => (0,_observable_timer__WEBPACK_IMPORTED_MODULE_2__.timer)(duration, scheduler)); -} - -/***/ }), - -/***/ 8175: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/catchError.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ catchError: () => (/* binding */ catchError) -/* harmony export */ }); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../innerSubscribe */ 6241); - -function catchError(selector) { - return function catchErrorOperatorFunction(source) { - const operator = new CatchOperator(selector); - const caught = source.lift(operator); - return operator.caught = caught; - }; -} -class CatchOperator { - constructor(selector) { - this.selector = selector; - } - call(subscriber, source) { - return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught)); - } -} -class CatchSubscriber extends _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleOuterSubscriber { - constructor(destination, selector, caught) { - super(destination); - this.selector = selector; - this.caught = caught; - } - error(err) { - if (!this.isStopped) { - let result; - try { - result = this.selector(err, this.caught); - } catch (err2) { - super.error(err2); - return; - } - this._unsubscribeAndRecycle(); - const innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleInnerSubscriber(this); - this.add(innerSubscriber); - const innerSubscription = (0,_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.innerSubscribe)(result, innerSubscriber); - if (innerSubscription !== innerSubscriber) { - this.add(innerSubscription); - } - } - } -} - -/***/ }), - -/***/ 8106: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/concatAll.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concatAll: () => (/* binding */ concatAll) -/* harmony export */ }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeAll */ 2600); - -function concatAll() { - return (0,_mergeAll__WEBPACK_IMPORTED_MODULE_0__.mergeAll)(1); -} - -/***/ }), - -/***/ 7293: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/concatMap.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ concatMap: () => (/* binding */ concatMap) -/* harmony export */ }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ 7965); - -function concatMap(project, resultSelector) { - return (0,_mergeMap__WEBPACK_IMPORTED_MODULE_0__.mergeMap)(project, resultSelector, 1); -} - -/***/ }), - -/***/ 5933: -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ debounceTime: () => (/* binding */ debounceTime) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 1432); - - -function debounceTime(dueTime, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.async) { - return source => source.lift(new DebounceTimeOperator(dueTime, scheduler)); -} -class DebounceTimeOperator { - constructor(dueTime, scheduler) { - this.dueTime = dueTime; - this.scheduler = scheduler; - } - call(subscriber, source) { - return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler)); - } -} -class DebounceTimeSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_1__.Subscriber { - constructor(destination, dueTime, scheduler) { - super(destination); - this.dueTime = dueTime; - this.scheduler = scheduler; - this.debouncedSubscription = null; - this.lastValue = null; - this.hasValue = false; - } - _next(value) { - this.clearDebounce(); - this.lastValue = value; - this.hasValue = true; - this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this)); - } - _complete() { - this.debouncedNext(); - this.destination.complete(); - } - debouncedNext() { - this.clearDebounce(); - if (this.hasValue) { - const { - lastValue - } = this; - this.lastValue = null; - this.hasValue = false; - this.destination.next(lastValue); - } - } - clearDebounce() { - const debouncedSubscription = this.debouncedSubscription; - if (debouncedSubscription !== null) { - this.remove(debouncedSubscription); - debouncedSubscription.unsubscribe(); - this.debouncedSubscription = null; - } - } -} -function dispatchNext(subscriber) { - subscriber.debouncedNext(); -} - -/***/ }), - -/***/ 2345: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ defaultIfEmpty: () => (/* binding */ defaultIfEmpty) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function defaultIfEmpty(defaultValue = null) { - return source => source.lift(new DefaultIfEmptyOperator(defaultValue)); -} -class DefaultIfEmptyOperator { - constructor(defaultValue) { - this.defaultValue = defaultValue; - } - call(subscriber, source) { - return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); - } -} -class DefaultIfEmptySubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, defaultValue) { - super(destination); - this.defaultValue = defaultValue; - this.isEmpty = true; - } - _next(value) { - this.isEmpty = false; - this.destination.next(value); - } - _complete() { - if (this.isEmpty) { - this.destination.next(this.defaultValue); - } - this.destination.complete(); - } -} - -/***/ }), - -/***/ 5617: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/delay.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ delay: () => (/* binding */ delay) -/* harmony export */ }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ 1432); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isDate */ 9607); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Notification */ 7618); - - - - -function delay(delay, scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__.async) { - const absoluteDelay = (0,_util_isDate__WEBPACK_IMPORTED_MODULE_1__.isDate)(delay); - const delayFor = absoluteDelay ? +delay - scheduler.now() : Math.abs(delay); - return source => source.lift(new DelayOperator(delayFor, scheduler)); -} -class DelayOperator { - constructor(delay, scheduler) { - this.delay = delay; - this.scheduler = scheduler; - } - call(subscriber, source) { - return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler)); - } -} -class DelaySubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_2__.Subscriber { - constructor(destination, delay, scheduler) { - super(destination); - this.delay = delay; - this.scheduler = scheduler; - this.queue = []; - this.active = false; - this.errored = false; - } - static dispatch(state) { - const source = state.source; - const queue = source.queue; - const scheduler = state.scheduler; - const destination = state.destination; - while (queue.length > 0 && queue[0].time - scheduler.now() <= 0) { - queue.shift().notification.observe(destination); - } - if (queue.length > 0) { - const delay = Math.max(0, queue[0].time - scheduler.now()); - this.schedule(state, delay); - } else { - this.unsubscribe(); - source.active = false; - } - } - _schedule(scheduler) { - this.active = true; - const destination = this.destination; - destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, { - source: this, - destination: this.destination, - scheduler: scheduler - })); - } - scheduleNotification(notification) { - if (this.errored === true) { - return; - } - const scheduler = this.scheduler; - const message = new DelayMessage(scheduler.now() + this.delay, notification); - this.queue.push(message); - if (this.active === false) { - this._schedule(scheduler); - } - } - _next(value) { - this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_3__.Notification.createNext(value)); - } - _error(err) { - this.errored = true; - this.queue = []; - this.destination.error(err); - this.unsubscribe(); - } - _complete() { - this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_3__.Notification.createComplete()); - this.unsubscribe(); - } -} -class DelayMessage { - constructor(time, notification) { - this.time = time; - this.notification = notification; - } -} - -/***/ }), - -/***/ 5083: -/*!*******************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ distinctUntilChanged: () => (/* binding */ distinctUntilChanged) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function distinctUntilChanged(compare, keySelector) { - return source => source.lift(new DistinctUntilChangedOperator(compare, keySelector)); -} -class DistinctUntilChangedOperator { - constructor(compare, keySelector) { - this.compare = compare; - this.keySelector = keySelector; - } - call(subscriber, source) { - return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector)); - } -} -class DistinctUntilChangedSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, compare, keySelector) { - super(destination); - this.keySelector = keySelector; - this.hasKey = false; - if (typeof compare === 'function') { - this.compare = compare; - } - } - compare(x, y) { - return x === y; - } - _next(value) { - let key; - try { - const { - keySelector - } = this; - key = keySelector ? keySelector(value) : value; - } catch (err) { - return this.destination.error(err); - } - let result = false; - if (this.hasKey) { - try { - const { - compare - } = this; - result = compare(this.key, key); - } catch (err) { - return this.destination.error(err); - } - } else { - this.hasKey = true; - } - if (!result) { - this.key = key; - this.destination.next(value); - } - } -} - -/***/ }), - -/***/ 5046: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/filter.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ filter: () => (/* binding */ filter) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function filter(predicate, thisArg) { - return function filterOperatorFunction(source) { - return source.lift(new FilterOperator(predicate, thisArg)); - }; -} -class FilterOperator { - constructor(predicate, thisArg) { - this.predicate = predicate; - this.thisArg = thisArg; - } - call(subscriber, source) { - return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); - } -} -class FilterSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, predicate, thisArg) { - super(destination); - this.predicate = predicate; - this.thisArg = thisArg; - this.count = 0; - } - _next(value) { - let result; - try { - result = this.predicate.call(this.thisArg, value, this.count++); - } catch (err) { - this.destination.error(err); - return; - } - if (result) { - this.destination.next(value); - } - } -} - -/***/ }), - -/***/ 786: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/finalize.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ finalize: () => (/* binding */ finalize) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); - - -function finalize(callback) { - return source => source.lift(new FinallyOperator(callback)); -} -class FinallyOperator { - constructor(callback) { - this.callback = callback; - } - call(subscriber, source) { - return source.subscribe(new FinallySubscriber(subscriber, this.callback)); - } -} -class FinallySubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, callback) { - super(destination); - this.add(new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(callback)); - } -} - -/***/ }), - -/***/ 7627: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/first.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ first: () => (/* binding */ first) -/* harmony export */ }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/EmptyError */ 1742); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter */ 5046); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take */ 6939); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ 2345); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwIfEmpty */ 1620); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ 6361); - - - - - - -function first(predicate, defaultValue) { - const hasDefaultValue = arguments.length >= 2; - return source => source.pipe(predicate ? (0,_filter__WEBPACK_IMPORTED_MODULE_0__.filter)((v, i) => predicate(v, i, source)) : _util_identity__WEBPACK_IMPORTED_MODULE_1__.identity, (0,_take__WEBPACK_IMPORTED_MODULE_2__.take)(1), hasDefaultValue ? (0,_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__.defaultIfEmpty)(defaultValue) : (0,_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__.throwIfEmpty)(() => new _util_EmptyError__WEBPACK_IMPORTED_MODULE_5__.EmptyError())); -} - -/***/ }), - -/***/ 7422: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/map.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MapOperator: () => (/* binding */ MapOperator), -/* harmony export */ map: () => (/* binding */ map) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function map(project, thisArg) { - return function mapOperation(source) { - if (typeof project !== 'function') { - throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); - } - return source.lift(new MapOperator(project, thisArg)); - }; -} -class MapOperator { - constructor(project, thisArg) { - this.project = project; - this.thisArg = thisArg; - } - call(subscriber, source) { - return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); - } -} -class MapSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, project, thisArg) { - super(destination); - this.project = project; - this.count = 0; - this.thisArg = thisArg || this; - } - _next(value) { - let result; - try { - result = this.project.call(this.thisArg, value, this.count++); - } catch (err) { - this.destination.error(err); - return; - } - this.destination.next(result); - } -} - -/***/ }), - -/***/ 2600: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ mergeAll: () => (/* binding */ mergeAll) -/* harmony export */ }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ 7965); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ 6361); - - -function mergeAll(concurrent = Number.POSITIVE_INFINITY) { - return (0,_mergeMap__WEBPACK_IMPORTED_MODULE_0__.mergeMap)(_util_identity__WEBPACK_IMPORTED_MODULE_1__.identity, concurrent); -} - -/***/ }), - -/***/ 7965: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MergeMapOperator: () => (/* binding */ MergeMapOperator), -/* harmony export */ MergeMapSubscriber: () => (/* binding */ MergeMapSubscriber), -/* harmony export */ flatMap: () => (/* binding */ flatMap), -/* harmony export */ mergeMap: () => (/* binding */ mergeMap) -/* harmony export */ }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map */ 7422); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/from */ 502); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../innerSubscribe */ 6241); - - - -function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) { - if (typeof resultSelector === 'function') { - return source => source.pipe(mergeMap((a, i) => (0,_observable_from__WEBPACK_IMPORTED_MODULE_0__.from)(project(a, i)).pipe((0,_map__WEBPACK_IMPORTED_MODULE_1__.map)((b, ii) => resultSelector(a, b, i, ii))), concurrent)); - } else if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return source => source.lift(new MergeMapOperator(project, concurrent)); -} -class MergeMapOperator { - constructor(project, concurrent = Number.POSITIVE_INFINITY) { - this.project = project; - this.concurrent = concurrent; - } - call(observer, source) { - return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent)); - } -} -class MergeMapSubscriber extends _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.SimpleOuterSubscriber { - constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) { - super(destination); - this.project = project; - this.concurrent = concurrent; - this.hasCompleted = false; - this.buffer = []; - this.active = 0; - this.index = 0; - } - _next(value) { - if (this.active < this.concurrent) { - this._tryNext(value); - } else { - this.buffer.push(value); - } - } - _tryNext(value) { - let result; - const index = this.index++; - try { - result = this.project(value, index); - } catch (err) { - this.destination.error(err); - return; - } - this.active++; - this._innerSub(result); - } - _innerSub(ish) { - const innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.SimpleInnerSubscriber(this); - const destination = this.destination; - destination.add(innerSubscriber); - const innerSubscription = (0,_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.innerSubscribe)(ish, innerSubscriber); - if (innerSubscription !== innerSubscriber) { - destination.add(innerSubscription); - } - } - _complete() { - this.hasCompleted = true; - if (this.active === 0 && this.buffer.length === 0) { - this.destination.complete(); - } - this.unsubscribe(); - } - notifyNext(innerValue) { - this.destination.next(innerValue); - } - notifyComplete() { - const buffer = this.buffer; - this.active--; - if (buffer.length > 0) { - this._next(buffer.shift()); - } else if (this.active === 0 && this.hasCompleted) { - this.destination.complete(); - } - } -} -const flatMap = mergeMap; - -/***/ }), - -/***/ 202: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/multicast.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ MulticastOperator: () => (/* binding */ MulticastOperator), -/* harmony export */ multicast: () => (/* binding */ multicast) -/* harmony export */ }); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/ConnectableObservable */ 9148); - -function multicast(subjectOrSubjectFactory, selector) { - return function multicastOperatorFunction(source) { - let subjectFactory; - if (typeof subjectOrSubjectFactory === 'function') { - subjectFactory = subjectOrSubjectFactory; - } else { - subjectFactory = function subjectFactory() { - return subjectOrSubjectFactory; - }; - } - if (typeof selector === 'function') { - return source.lift(new MulticastOperator(subjectFactory, selector)); - } - const connectable = Object.create(source, _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__.connectableObservableDescriptor); - connectable.source = source; - connectable.subjectFactory = subjectFactory; - return connectable; - }; -} -class MulticastOperator { - constructor(subjectFactory, selector) { - this.subjectFactory = subjectFactory; - this.selector = selector; - } - call(subscriber, source) { - const { - selector - } = this; - const subject = this.subjectFactory(); - const subscription = selector(subject).subscribe(subscriber); - subscription.add(source.subscribe(subject)); - return subscription; - } -} - -/***/ }), - -/***/ 8892: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/observeOn.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ObserveOnMessage: () => (/* binding */ ObserveOnMessage), -/* harmony export */ ObserveOnOperator: () => (/* binding */ ObserveOnOperator), -/* harmony export */ ObserveOnSubscriber: () => (/* binding */ ObserveOnSubscriber), -/* harmony export */ observeOn: () => (/* binding */ observeOn) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Notification */ 7618); - - -function observeOn(scheduler, delay = 0) { - return function observeOnOperatorFunction(source) { - return source.lift(new ObserveOnOperator(scheduler, delay)); - }; -} -class ObserveOnOperator { - constructor(scheduler, delay = 0) { - this.scheduler = scheduler; - this.delay = delay; - } - call(subscriber, source) { - return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay)); - } -} -class ObserveOnSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, scheduler, delay = 0) { - super(destination); - this.scheduler = scheduler; - this.delay = delay; - } - static dispatch(arg) { - const { - notification, - destination - } = arg; - notification.observe(destination); - this.unsubscribe(); - } - scheduleMessage(notification) { - const destination = this.destination; - destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination))); - } - _next(value) { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_1__.Notification.createNext(value)); - } - _error(err) { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_1__.Notification.createError(err)); - this.unsubscribe(); - } - _complete() { - this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_1__.Notification.createComplete()); - this.unsubscribe(); - } -} -class ObserveOnMessage { - constructor(notification, destination) { - this.notification = notification; - this.destination = destination; - } -} - -/***/ }), - -/***/ 6159: -/*!*******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/refCount.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ refCount: () => (/* binding */ refCount) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function refCount() { - return function refCountOperatorFunction(source) { - return source.lift(new RefCountOperator(source)); - }; -} -class RefCountOperator { - constructor(connectable) { - this.connectable = connectable; - } - call(subscriber, source) { - const { - connectable - } = this; - connectable._refCount++; - const refCounter = new RefCountSubscriber(subscriber, connectable); - const subscription = source.subscribe(refCounter); - if (!refCounter.closed) { - refCounter.connection = connectable.connect(); - } - return subscription; - } -} -class RefCountSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, connectable) { - super(destination); - this.connectable = connectable; - } - _unsubscribe() { - const { - connectable - } = this; - if (!connectable) { - this.connection = null; - return; - } - this.connectable = null; - const refCount = connectable._refCount; - if (refCount <= 0) { - this.connection = null; - return; - } - connectable._refCount = refCount - 1; - if (refCount > 1) { - this.connection = null; - return; - } - const { - connection - } = this; - const sharedConnection = connectable._connection; - this.connection = null; - if (sharedConnection && (!connection || sharedConnection === connection)) { - sharedConnection.unsubscribe(); - } - } -} - -/***/ }), - -/***/ 1272: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/share.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ share: () => (/* binding */ share) -/* harmony export */ }); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./multicast */ 202); -/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./refCount */ 6159); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ 2484); - - - -function shareSubjectFactory() { - return new _Subject__WEBPACK_IMPORTED_MODULE_0__.Subject(); -} -function share() { - return source => (0,_refCount__WEBPACK_IMPORTED_MODULE_1__.refCount)()((0,_multicast__WEBPACK_IMPORTED_MODULE_2__.multicast)(shareSubjectFactory)(source)); -} - -/***/ }), - -/***/ 680: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ shareReplay: () => (/* binding */ shareReplay) -/* harmony export */ }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ReplaySubject */ 6309); - -function shareReplay(configOrBufferSize, windowTime, scheduler) { - let config; - if (configOrBufferSize && typeof configOrBufferSize === 'object') { - config = configOrBufferSize; - } else { - config = { - bufferSize: configOrBufferSize, - windowTime, - refCount: false, - scheduler - }; - } - return source => source.lift(shareReplayOperator(config)); -} -function shareReplayOperator({ - bufferSize = Number.POSITIVE_INFINITY, - windowTime = Number.POSITIVE_INFINITY, - refCount: useRefCount, - scheduler -}) { - let subject; - let refCount = 0; - let subscription; - let hasError = false; - let isComplete = false; - return function shareReplayOperation(source) { - refCount++; - let innerSub; - if (!subject || hasError) { - hasError = false; - subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__.ReplaySubject(bufferSize, windowTime, scheduler); - innerSub = subject.subscribe(this); - subscription = source.subscribe({ - next(value) { - subject.next(value); - }, - error(err) { - hasError = true; - subject.error(err); - }, - complete() { - isComplete = true; - subscription = undefined; - subject.complete(); - } - }); - if (isComplete) { - subscription = undefined; - } - } else { - innerSub = subject.subscribe(this); - } - this.add(() => { - refCount--; - innerSub.unsubscribe(); - innerSub = undefined; - if (subscription && !isComplete && useRefCount && refCount === 0) { - subscription.unsubscribe(); - subscription = undefined; - subject = undefined; - } - }); - }; -} - -/***/ }), - -/***/ 1063: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/skip.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ skip: () => (/* binding */ skip) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function skip(count) { - return source => source.lift(new SkipOperator(count)); -} -class SkipOperator { - constructor(total) { - this.total = total; - } - call(subscriber, source) { - return source.subscribe(new SkipSubscriber(subscriber, this.total)); - } -} -class SkipSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, total) { - super(destination); - this.total = total; - this.count = 0; - } - _next(x) { - if (++this.count > this.total) { - this.destination.next(x); - } - } -} - -/***/ }), - -/***/ 1062: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/startWith.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ startWith: () => (/* binding */ startWith) -/* harmony export */ }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/concat */ 5774); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ 9054); - - -function startWith(...array) { - const scheduler = array[array.length - 1]; - if ((0,_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__.isScheduler)(scheduler)) { - array.pop(); - return source => (0,_observable_concat__WEBPACK_IMPORTED_MODULE_1__.concat)(array, source, scheduler); - } else { - return source => (0,_observable_concat__WEBPACK_IMPORTED_MODULE_1__.concat)(array, source); - } -} - -/***/ }), - -/***/ 6520: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/switchMap.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ switchMap: () => (/* binding */ switchMap) -/* harmony export */ }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map */ 7422); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/from */ 502); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../innerSubscribe */ 6241); - - - -function switchMap(project, resultSelector) { - if (typeof resultSelector === 'function') { - return source => source.pipe(switchMap((a, i) => (0,_observable_from__WEBPACK_IMPORTED_MODULE_0__.from)(project(a, i)).pipe((0,_map__WEBPACK_IMPORTED_MODULE_1__.map)((b, ii) => resultSelector(a, b, i, ii))))); - } - return source => source.lift(new SwitchMapOperator(project)); -} -class SwitchMapOperator { - constructor(project) { - this.project = project; - } - call(subscriber, source) { - return source.subscribe(new SwitchMapSubscriber(subscriber, this.project)); - } -} -class SwitchMapSubscriber extends _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.SimpleOuterSubscriber { - constructor(destination, project) { - super(destination); - this.project = project; - this.index = 0; - } - _next(value) { - let result; - const index = this.index++; - try { - result = this.project(value, index); - } catch (error) { - this.destination.error(error); - return; - } - this._innerSub(result); - } - _innerSub(result) { - const innerSubscription = this.innerSubscription; - if (innerSubscription) { - innerSubscription.unsubscribe(); - } - const innerSubscriber = new _innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.SimpleInnerSubscriber(this); - const destination = this.destination; - destination.add(innerSubscriber); - this.innerSubscription = (0,_innerSubscribe__WEBPACK_IMPORTED_MODULE_2__.innerSubscribe)(result, innerSubscriber); - if (this.innerSubscription !== innerSubscriber) { - destination.add(this.innerSubscription); - } - } - _complete() { - const { - innerSubscription - } = this; - if (!innerSubscription || innerSubscription.closed) { - super._complete(); - } - this.unsubscribe(); - } - _unsubscribe() { - this.innerSubscription = undefined; - } - notifyComplete() { - this.innerSubscription = undefined; - if (this.isStopped) { - super._complete(); - } - } - notifyNext(innerValue) { - this.destination.next(innerValue); - } -} - -/***/ }), - -/***/ 6939: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/take.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ take: () => (/* binding */ take) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ 2081); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/empty */ 506); - - - -function take(count) { - return source => { - if (count === 0) { - return (0,_observable_empty__WEBPACK_IMPORTED_MODULE_0__.empty)(); - } else { - return source.lift(new TakeOperator(count)); - } - }; -} -class TakeOperator { - constructor(total) { - this.total = total; - if (this.total < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_1__.ArgumentOutOfRangeError(); - } - } - call(subscriber, source) { - return source.subscribe(new TakeSubscriber(subscriber, this.total)); - } -} -class TakeSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_2__.Subscriber { - constructor(destination, total) { - super(destination); - this.total = total; - this.count = 0; - } - _next(value) { - const total = this.total; - const count = ++this.count; - if (count <= total) { - this.destination.next(value); - if (count === total) { - this.destination.complete(); - this.unsubscribe(); - } - } - } -} - -/***/ }), - -/***/ 3303: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ takeUntil: () => (/* binding */ takeUntil) -/* harmony export */ }); -/* harmony import */ var _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../innerSubscribe */ 6241); - -function takeUntil(notifier) { - return source => source.lift(new TakeUntilOperator(notifier)); -} -class TakeUntilOperator { - constructor(notifier) { - this.notifier = notifier; - } - call(subscriber, source) { - const takeUntilSubscriber = new TakeUntilSubscriber(subscriber); - const notifierSubscription = (0,_innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.innerSubscribe)(this.notifier, new _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleInnerSubscriber(takeUntilSubscriber)); - if (notifierSubscription && !takeUntilSubscriber.seenValue) { - takeUntilSubscriber.add(notifierSubscription); - return source.subscribe(takeUntilSubscriber); - } - return takeUntilSubscriber; - } -} -class TakeUntilSubscriber extends _innerSubscribe__WEBPACK_IMPORTED_MODULE_0__.SimpleOuterSubscriber { - constructor(destination) { - super(destination); - this.seenValue = false; - } - notifyNext() { - this.seenValue = true; - this.complete(); - } - notifyComplete() {} -} - -/***/ }), - -/***/ 5746: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/tap.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ tap: () => (/* binding */ tap) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/noop */ 5717); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ 5251); - - - -function tap(nextOrObserver, error, complete) { - return function tapOperatorFunction(source) { - return source.lift(new DoOperator(nextOrObserver, error, complete)); - }; -} -class DoOperator { - constructor(nextOrObserver, error, complete) { - this.nextOrObserver = nextOrObserver; - this.error = error; - this.complete = complete; - } - call(subscriber, source) { - return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete)); - } -} -class TapSubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, observerOrNext, error, complete) { - super(destination); - this._tapNext = _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapError = _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapComplete = _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapError = error || _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapComplete = complete || _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - if ((0,_util_isFunction__WEBPACK_IMPORTED_MODULE_2__.isFunction)(observerOrNext)) { - this._context = this; - this._tapNext = observerOrNext; - } else if (observerOrNext) { - this._context = observerOrNext; - this._tapNext = observerOrNext.next || _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapError = observerOrNext.error || _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - this._tapComplete = observerOrNext.complete || _util_noop__WEBPACK_IMPORTED_MODULE_1__.noop; - } - } - _next(value) { - try { - this._tapNext.call(this._context, value); - } catch (err) { - this.destination.error(err); - return; - } - this.destination.next(value); - } - _error(err) { - try { - this._tapError.call(this._context, err); - } catch (err) { - this.destination.error(err); - return; - } - this.destination.error(err); - } - _complete() { - try { - this._tapComplete.call(this._context); - } catch (err) { - this.destination.error(err); - return; - } - return this.destination.complete(); - } -} - -/***/ }), - -/***/ 1620: -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ throwIfEmpty: () => (/* binding */ throwIfEmpty) -/* harmony export */ }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/EmptyError */ 1742); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - - -function throwIfEmpty(errorFactory = defaultErrorFactory) { - return source => { - return source.lift(new ThrowIfEmptyOperator(errorFactory)); - }; -} -class ThrowIfEmptyOperator { - constructor(errorFactory) { - this.errorFactory = errorFactory; - } - call(subscriber, source) { - return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory)); - } -} -class ThrowIfEmptySubscriber extends _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber { - constructor(destination, errorFactory) { - super(destination); - this.errorFactory = errorFactory; - this.hasValue = false; - } - _next(value) { - this.hasValue = true; - this.destination.next(value); - } - _complete() { - if (!this.hasValue) { - let err; - try { - err = this.errorFactory(); - } catch (e) { - err = e; - } - this.destination.error(err); - } else { - return this.destination.complete(); - } - } -} -function defaultErrorFactory() { - return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__.EmptyError(); -} - -/***/ }), - -/***/ 8577: -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleArray: () => (/* binding */ scheduleArray) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); - - -function scheduleArray(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - const sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(); - let i = 0; - sub.add(scheduler.schedule(function () { - if (i === input.length) { - subscriber.complete(); - return; - } - subscriber.next(input[i++]); - if (!subscriber.closed) { - sub.add(this.schedule()); - } - })); - return sub; - }); -} - -/***/ }), - -/***/ 5299: -/*!***************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleIterable: () => (/* binding */ scheduleIterable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/iterator */ 6603); - - - -function scheduleIterable(input, scheduler) { - if (!input) { - throw new Error('Iterable cannot be null'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - const sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(); - let iterator; - sub.add(() => { - if (iterator && typeof iterator.return === 'function') { - iterator.return(); - } - }); - sub.add(scheduler.schedule(() => { - iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__.iterator](); - sub.add(scheduler.schedule(function () { - if (subscriber.closed) { - return; - } - let value; - let done; - try { - const result = iterator.next(); - value = result.value; - done = result.done; - } catch (err) { - subscriber.error(err); - return; - } - if (done) { - subscriber.complete(); - } else { - subscriber.next(value); - this.schedule(); - } - })); - })); - return sub; - }); -} - -/***/ }), - -/***/ 8275: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduleObservable: () => (/* binding */ scheduleObservable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/observable */ 5129); - - - -function scheduleObservable(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - const sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(); - sub.add(scheduler.schedule(() => { - const observable = input[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__.observable](); - sub.add(observable.subscribe({ - next(value) { - sub.add(scheduler.schedule(() => subscriber.next(value))); - }, - error(err) { - sub.add(scheduler.schedule(() => subscriber.error(err))); - }, - complete() { - sub.add(scheduler.schedule(() => subscriber.complete())); - } - })); - })); - return sub; - }); -} - -/***/ }), - -/***/ 5576: -/*!**************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ schedulePromise: () => (/* binding */ schedulePromise) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ 4614); - - -function schedulePromise(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable(subscriber => { - const sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__.Subscription(); - sub.add(scheduler.schedule(() => input.then(value => { - sub.add(scheduler.schedule(() => { - subscriber.next(value); - sub.add(scheduler.schedule(() => subscriber.complete())); - })); - }, err => { - sub.add(scheduler.schedule(() => subscriber.error(err))); - }))); - return sub; - }); -} - -/***/ }), - -/***/ 6340: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ scheduled: () => (/* binding */ scheduled) -/* harmony export */ }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scheduleObservable */ 8275); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./schedulePromise */ 5576); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scheduleArray */ 8577); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scheduleIterable */ 5299); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isInteropObservable */ 9428); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isPromise */ 8290); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isArrayLike */ 4361); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isIterable */ 5540); - - - - - - - - -function scheduled(input, scheduler) { - if (input != null) { - if ((0,_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_0__.isInteropObservable)(input)) { - return (0,_scheduleObservable__WEBPACK_IMPORTED_MODULE_1__.scheduleObservable)(input, scheduler); - } else if ((0,_util_isPromise__WEBPACK_IMPORTED_MODULE_2__.isPromise)(input)) { - return (0,_schedulePromise__WEBPACK_IMPORTED_MODULE_3__.schedulePromise)(input, scheduler); - } else if ((0,_util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__.isArrayLike)(input)) { - return (0,_scheduleArray__WEBPACK_IMPORTED_MODULE_5__.scheduleArray)(input, scheduler); - } else if ((0,_util_isIterable__WEBPACK_IMPORTED_MODULE_6__.isIterable)(input) || typeof input === 'string') { - return (0,_scheduleIterable__WEBPACK_IMPORTED_MODULE_7__.scheduleIterable)(input, scheduler); - } - } - throw new TypeError((input !== null && typeof input || input) + ' is not observable'); -} - -/***/ }), - -/***/ 8674: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/Action.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Action: () => (/* binding */ Action) -/* harmony export */ }); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscription */ 4614); - -class Action extends _Subscription__WEBPACK_IMPORTED_MODULE_0__.Subscription { - constructor(scheduler, work) { - super(); - } - schedule(state, delay = 0) { - return this; - } -} - -/***/ }), - -/***/ 5610: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsyncAction: () => (/* binding */ AsyncAction) -/* harmony export */ }); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Action */ 8674); - -class AsyncAction extends _Action__WEBPACK_IMPORTED_MODULE_0__.Action { - constructor(scheduler, work) { - super(scheduler, work); - this.scheduler = scheduler; - this.work = work; - this.pending = false; - } - schedule(state, delay = 0) { - if (this.closed) { - return this; - } - this.state = state; - const id = this.id; - const scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); - } - this.pending = true; - this.delay = delay; - this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); - return this; - } - requestAsyncId(scheduler, id, delay = 0) { - return setInterval(scheduler.flush.bind(scheduler, this), delay); - } - recycleAsyncId(scheduler, id, delay = 0) { - if (delay !== null && this.delay === delay && this.pending === false) { - return id; - } - clearInterval(id); - return undefined; - } - execute(state, delay) { - if (this.closed) { - return new Error('executing a cancelled action'); - } - this.pending = false; - const error = this._execute(state, delay); - if (error) { - return error; - } else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - } - _execute(state, delay) { - let errored = false; - let errorValue = undefined; - try { - this.work(state); - } catch (e) { - errored = true; - errorValue = !!e && e || new Error(e); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - } - _unsubscribe() { - const id = this.id; - const scheduler = this.scheduler; - const actions = scheduler.actions; - const index = actions.indexOf(this); - this.work = null; - this.state = null; - this.pending = false; - this.scheduler = null; - if (index !== -1) { - actions.splice(index, 1); - } - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - } -} - -/***/ }), - -/***/ 7203: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AsyncScheduler: () => (/* binding */ AsyncScheduler) -/* harmony export */ }); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Scheduler */ 7792); - -class AsyncScheduler extends _Scheduler__WEBPACK_IMPORTED_MODULE_0__.Scheduler { - constructor(SchedulerAction, now = _Scheduler__WEBPACK_IMPORTED_MODULE_0__.Scheduler.now) { - super(SchedulerAction, () => { - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { - return AsyncScheduler.delegate.now(); - } else { - return now(); - } - }); - this.actions = []; - this.active = false; - this.scheduled = undefined; - } - schedule(work, delay = 0, state) { - if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { - return AsyncScheduler.delegate.schedule(work, delay, state); - } else { - return super.schedule(work, delay, state); - } - } - flush(action) { - const { - actions - } = this; - if (this.active) { - actions.push(action); - return; - } - let error; - this.active = true; - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (action = actions.shift()); - this.active = false; - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - } -} - -/***/ }), - -/***/ 5586: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ QueueAction: () => (/* binding */ QueueAction) -/* harmony export */ }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ 5610); - -class QueueAction extends _AsyncAction__WEBPACK_IMPORTED_MODULE_0__.AsyncAction { - constructor(scheduler, work) { - super(scheduler, work); - this.scheduler = scheduler; - this.work = work; - } - schedule(state, delay = 0) { - if (delay > 0) { - return super.schedule(state, delay); - } - this.delay = delay; - this.state = state; - this.scheduler.flush(this); - return this; - } - execute(state, delay) { - return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay); - } - requestAsyncId(scheduler, id, delay = 0) { - if (delay !== null && delay > 0 || delay === null && this.delay > 0) { - return super.requestAsyncId(scheduler, id, delay); - } - return scheduler.flush(this); - } -} - -/***/ }), - -/***/ 4942: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ QueueScheduler: () => (/* binding */ QueueScheduler) -/* harmony export */ }); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncScheduler */ 7203); - -class QueueScheduler extends _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__.AsyncScheduler {} - -/***/ }), - -/***/ 1432: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/async.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ async: () => (/* binding */ async), -/* harmony export */ asyncScheduler: () => (/* binding */ asyncScheduler) -/* harmony export */ }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ 5610); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncScheduler */ 7203); - - -const asyncScheduler = new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_0__.AsyncScheduler(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__.AsyncAction); -const async = asyncScheduler; - -/***/ }), - -/***/ 6948: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/scheduler/queue.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ queue: () => (/* binding */ queue), -/* harmony export */ queueScheduler: () => (/* binding */ queueScheduler) -/* harmony export */ }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueueAction */ 5586); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QueueScheduler */ 4942); - - -const queueScheduler = new _QueueScheduler__WEBPACK_IMPORTED_MODULE_0__.QueueScheduler(_QueueAction__WEBPACK_IMPORTED_MODULE_1__.QueueAction); -const queue = queueScheduler; - -/***/ }), - -/***/ 6603: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/symbol/iterator.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ $$iterator: () => (/* binding */ $$iterator), -/* harmony export */ getSymbolIterator: () => (/* binding */ getSymbolIterator), -/* harmony export */ iterator: () => (/* binding */ iterator) -/* harmony export */ }); -function getSymbolIterator() { - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return '@@iterator'; - } - return Symbol.iterator; -} -const iterator = getSymbolIterator(); -const $$iterator = iterator; - -/***/ }), - -/***/ 5129: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/symbol/observable.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ observable: () => (/* binding */ observable) -/* harmony export */ }); -const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')(); - -/***/ }), - -/***/ 1999: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ $$rxSubscriber: () => (/* binding */ $$rxSubscriber), -/* harmony export */ rxSubscriber: () => (/* binding */ rxSubscriber) -/* harmony export */ }); -const rxSubscriber = (() => typeof Symbol === 'function' ? Symbol('rxSubscriber') : '@@rxSubscriber_' + Math.random())(); -const $$rxSubscriber = rxSubscriber; - -/***/ }), - -/***/ 2081: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ArgumentOutOfRangeError: () => (/* binding */ ArgumentOutOfRangeError) -/* harmony export */ }); -const ArgumentOutOfRangeErrorImpl = (() => { - function ArgumentOutOfRangeErrorImpl() { - Error.call(this); - this.message = 'argument out of range'; - this.name = 'ArgumentOutOfRangeError'; - return this; - } - ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype); - return ArgumentOutOfRangeErrorImpl; -})(); -const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; - -/***/ }), - -/***/ 1742: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/EmptyError.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EmptyError: () => (/* binding */ EmptyError) -/* harmony export */ }); -const EmptyErrorImpl = (() => { - function EmptyErrorImpl() { - Error.call(this); - this.message = 'no elements in sequence'; - this.name = 'EmptyError'; - return this; - } - EmptyErrorImpl.prototype = Object.create(Error.prototype); - return EmptyErrorImpl; -})(); -const EmptyError = EmptyErrorImpl; - -/***/ }), - -/***/ 6950: -/*!*****************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ObjectUnsubscribedError: () => (/* binding */ ObjectUnsubscribedError) -/* harmony export */ }); -const ObjectUnsubscribedErrorImpl = (() => { - function ObjectUnsubscribedErrorImpl() { - Error.call(this); - this.message = 'object unsubscribed'; - this.name = 'ObjectUnsubscribedError'; - return this; - } - ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype); - return ObjectUnsubscribedErrorImpl; -})(); -const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; - -/***/ }), - -/***/ 9164: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ UnsubscriptionError: () => (/* binding */ UnsubscriptionError) -/* harmony export */ }); -const UnsubscriptionErrorImpl = (() => { - function UnsubscriptionErrorImpl(errors) { - Error.call(this); - this.message = errors ? `${errors.length} errors occurred during unsubscription: -${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\n ')}` : ''; - this.name = 'UnsubscriptionError'; - this.errors = errors; - return this; - } - UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype); - return UnsubscriptionErrorImpl; -})(); -const UnsubscriptionError = UnsubscriptionErrorImpl; - -/***/ }), - -/***/ 3159: -/*!********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/canReportError.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ canReportError: () => (/* binding */ canReportError) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); - -function canReportError(observer) { - while (observer) { - const { - closed, - destination, - isStopped - } = observer; - if (closed || isStopped) { - return false; - } else if (destination && destination instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber) { - observer = destination; - } else { - observer = null; - } - } - return true; -} - -/***/ }), - -/***/ 8722: -/*!*********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/hostReportError.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ hostReportError: () => (/* binding */ hostReportError) -/* harmony export */ }); -function hostReportError(err) { - setTimeout(() => { - throw err; - }, 0); -} - -/***/ }), - -/***/ 6361: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/identity.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ identity: () => (/* binding */ identity) -/* harmony export */ }); -function identity(x) { - return x; -} - -/***/ }), - -/***/ 7264: -/*!*************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isArray.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isArray: () => (/* binding */ isArray) -/* harmony export */ }); -const isArray = (() => Array.isArray || (x => x && typeof x.length === 'number'))(); - -/***/ }), - -/***/ 4361: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isArrayLike: () => (/* binding */ isArrayLike) -/* harmony export */ }); -const isArrayLike = x => x && typeof x.length === 'number' && typeof x !== 'function'; - -/***/ }), - -/***/ 9607: -/*!************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isDate.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isDate: () => (/* binding */ isDate) -/* harmony export */ }); -function isDate(value) { - return value instanceof Date && !isNaN(+value); -} - -/***/ }), - -/***/ 5251: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isFunction.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isFunction: () => (/* binding */ isFunction) -/* harmony export */ }); -function isFunction(x) { - return typeof x === 'function'; -} - -/***/ }), - -/***/ 9428: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isInteropObservable: () => (/* binding */ isInteropObservable) -/* harmony export */ }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ 5129); - -function isInteropObservable(input) { - return input && typeof input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__.observable] === 'function'; -} - -/***/ }), - -/***/ 5540: -/*!****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isIterable.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isIterable: () => (/* binding */ isIterable) -/* harmony export */ }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ 6603); - -function isIterable(input) { - return input && typeof input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__.iterator] === 'function'; -} - -/***/ }), - -/***/ 240: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isNumeric.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isNumeric: () => (/* binding */ isNumeric) -/* harmony export */ }); -/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray */ 7264); - -function isNumeric(val) { - return !(0,_isArray__WEBPACK_IMPORTED_MODULE_0__.isArray)(val) && val - parseFloat(val) + 1 >= 0; -} - -/***/ }), - -/***/ 7560: -/*!**************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isObject.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isObject: () => (/* binding */ isObject) -/* harmony export */ }); -function isObject(x) { - return x !== null && typeof x === 'object'; -} - -/***/ }), - -/***/ 2450: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isObservable.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isObservable: () => (/* binding */ isObservable) -/* harmony export */ }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ 3064); - -function isObservable(obj) { - return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__.Observable || typeof obj.lift === 'function' && typeof obj.subscribe === 'function'); -} - -/***/ }), - -/***/ 8290: -/*!***************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isPromise.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isPromise: () => (/* binding */ isPromise) -/* harmony export */ }); -function isPromise(value) { - return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function'; -} - -/***/ }), - -/***/ 9054: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/isScheduler.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ isScheduler: () => (/* binding */ isScheduler) -/* harmony export */ }); -function isScheduler(value) { - return value && typeof value.schedule === 'function'; -} - -/***/ }), - -/***/ 5717: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/noop.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ noop: () => (/* binding */ noop) -/* harmony export */ }); -function noop() {} - -/***/ }), - -/***/ 7734: -/*!**********************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/pipe.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ pipe: () => (/* binding */ pipe), -/* harmony export */ pipeFromArray: () => (/* binding */ pipeFromArray) -/* harmony export */ }); -/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity */ 6361); - -function pipe(...fns) { - return pipeFromArray(fns); -} -function pipeFromArray(fns) { - if (fns.length === 0) { - return _identity__WEBPACK_IMPORTED_MODULE_0__.identity; - } - if (fns.length === 1) { - return fns[0]; - } - return function piped(input) { - return fns.reduce((prev, fn) => fn(prev), input); - }; -} - -/***/ }), - -/***/ 3787: -/*!*****************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeTo: () => (/* binding */ subscribeTo) -/* harmony export */ }); -/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./subscribeToArray */ 4491); -/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./subscribeToPromise */ 9757); -/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./subscribeToIterable */ 8883); -/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeToObservable */ 3746); -/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isArrayLike */ 4361); -/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isPromise */ 8290); -/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./isObject */ 7560); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../symbol/iterator */ 6603); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ 5129); - - - - - - - - - -const subscribeTo = result => { - if (!!result && typeof result[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__.observable] === 'function') { - return (0,_subscribeToObservable__WEBPACK_IMPORTED_MODULE_1__.subscribeToObservable)(result); - } else if ((0,_isArrayLike__WEBPACK_IMPORTED_MODULE_2__.isArrayLike)(result)) { - return (0,_subscribeToArray__WEBPACK_IMPORTED_MODULE_3__.subscribeToArray)(result); - } else if ((0,_isPromise__WEBPACK_IMPORTED_MODULE_4__.isPromise)(result)) { - return (0,_subscribeToPromise__WEBPACK_IMPORTED_MODULE_5__.subscribeToPromise)(result); - } else if (!!result && typeof result[_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__.iterator] === 'function') { - return (0,_subscribeToIterable__WEBPACK_IMPORTED_MODULE_7__.subscribeToIterable)(result); - } else { - const value = (0,_isObject__WEBPACK_IMPORTED_MODULE_8__.isObject)(result) ? 'an invalid object' : `'${result}'`; - const msg = `You provided ${value} where a stream was expected.` + ' You can provide an Observable, Promise, Array, or Iterable.'; - throw new TypeError(msg); - } -}; - -/***/ }), - -/***/ 4491: -/*!**********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeToArray: () => (/* binding */ subscribeToArray) -/* harmony export */ }); -const subscribeToArray = array => subscriber => { - for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) { - subscriber.next(array[i]); - } - subscriber.complete(); -}; - -/***/ }), - -/***/ 8883: -/*!*************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeToIterable: () => (/* binding */ subscribeToIterable) -/* harmony export */ }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ 6603); - -const subscribeToIterable = iterable => subscriber => { - const iterator = iterable[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__.iterator](); - do { - let item; - try { - item = iterator.next(); - } catch (err) { - subscriber.error(err); - return subscriber; - } - if (item.done) { - subscriber.complete(); - break; - } - subscriber.next(item.value); - if (subscriber.closed) { - break; - } - } while (true); - if (typeof iterator.return === 'function') { - subscriber.add(() => { - if (iterator.return) { - iterator.return(); - } - }); - } - return subscriber; -}; - -/***/ }), - -/***/ 3746: -/*!***************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeToObservable: () => (/* binding */ subscribeToObservable) -/* harmony export */ }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ 5129); - -const subscribeToObservable = obj => subscriber => { - const obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__.observable](); - if (typeof obs.subscribe !== 'function') { - throw new TypeError('Provided object does not correctly implement Symbol.observable'); - } else { - return obs.subscribe(subscriber); - } -}; - -/***/ }), - -/***/ 9757: -/*!************************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeToPromise: () => (/* binding */ subscribeToPromise) -/* harmony export */ }); -/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hostReportError */ 8722); - -const subscribeToPromise = promise => subscriber => { - promise.then(value => { - if (!subscriber.closed) { - subscriber.next(value); - subscriber.complete(); - } - }, err => subscriber.error(err)).then(null, _hostReportError__WEBPACK_IMPORTED_MODULE_0__.hostReportError); - return subscriber; -}; - -/***/ }), - -/***/ 4660: -/*!***********************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ subscribeToResult: () => (/* binding */ subscribeToResult) -/* harmony export */ }); -/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../InnerSubscriber */ 9807); -/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribeTo */ 3787); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ 3064); - - - -function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__.InnerSubscriber(outerSubscriber, outerValue, outerIndex)) { - if (innerSubscriber.closed) { - return undefined; - } - if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_1__.Observable) { - return result.subscribe(innerSubscriber); - } - return (0,_subscribeTo__WEBPACK_IMPORTED_MODULE_2__.subscribeTo)(result)(innerSubscriber); -} - -/***/ }), - -/***/ 6920: -/*!******************************************************************!*\ - !*** ./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ toSubscriber: () => (/* binding */ toSubscriber) -/* harmony export */ }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ 5142); -/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/rxSubscriber */ 1999); -/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observer */ 6195); - - - -function toSubscriber(nextOrObserver, error, complete) { - if (nextOrObserver) { - if (nextOrObserver instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber) { - return nextOrObserver; - } - if (nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__.rxSubscriber]) { - return nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__.rxSubscriber](); - } - } - if (!nextOrObserver && !error && !complete) { - return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber(_Observer__WEBPACK_IMPORTED_MODULE_2__.empty); - } - return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__.Subscriber(nextOrObserver, error, complete); -} - -/***/ }), - -/***/ 2501: -/*!******************************************************************!*\ - !*** ./node_modules/@angular/animations/fesm2022/animations.mjs ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AUTO_STYLE: () => (/* binding */ AUTO_STYLE), -/* harmony export */ AnimationBuilder: () => (/* binding */ AnimationBuilder), -/* harmony export */ AnimationFactory: () => (/* binding */ AnimationFactory), -/* harmony export */ NoopAnimationPlayer: () => (/* binding */ NoopAnimationPlayer), -/* harmony export */ animate: () => (/* binding */ animate), -/* harmony export */ animateChild: () => (/* binding */ animateChild), -/* harmony export */ animation: () => (/* binding */ animation), -/* harmony export */ group: () => (/* binding */ group), -/* harmony export */ keyframes: () => (/* binding */ keyframes), -/* harmony export */ query: () => (/* binding */ query), -/* harmony export */ sequence: () => (/* binding */ sequence), -/* harmony export */ stagger: () => (/* binding */ stagger), -/* harmony export */ state: () => (/* binding */ state), -/* harmony export */ style: () => (/* binding */ style), -/* harmony export */ transition: () => (/* binding */ transition), -/* harmony export */ trigger: () => (/* binding */ trigger), -/* harmony export */ useAnimation: () => (/* binding */ useAnimation), -/* harmony export */ "ɵAnimationGroupPlayer": () => (/* binding */ AnimationGroupPlayer), -/* harmony export */ "ɵPRE_STYLE": () => (/* binding */ ɵPRE_STYLE) -/* harmony export */ }); -/** - * @license Angular v16.1.8 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ - -/** - * An injectable service that produces an animation sequence programmatically within an - * Angular component or directive. - * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`. - * - * @usageNotes - * - * To use this service, add it to your component or directive as a dependency. - * The service is instantiated along with your component. - * - * Apps do not typically need to create their own animation players, but if you - * do need to, follow these steps: - * - * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method - * to create a programmatic animation. The method returns an `AnimationFactory` instance. - * - * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element. - * - * 3. Use the player object to control the animation programmatically. - * - * For example: - * - * ```ts - * // import the service from BrowserAnimationsModule - * import {AnimationBuilder} from '@angular/animations'; - * // require the service as a dependency - * class MyCmp { - * constructor(private _builder: AnimationBuilder) {} - * - * makeAnimation(element: any) { - * // first define a reusable animation - * const myAnimation = this._builder.build([ - * style({ width: 0 }), - * animate(1000, style({ width: '100px' })) - * ]); - * - * // use the returned factory object to create a player - * const player = myAnimation.create(element); - * - * player.play(); - * } - * } - * ``` - * - * @publicApi - */ -class AnimationBuilder {} -/** - * A factory object returned from the - * [AnimationBuilder.build](api/animations/AnimationBuilder#build)() - * method. - * - * @publicApi - */ -class AnimationFactory {} - -/** - * Specifies automatic styling. - * - * @publicApi - */ -const AUTO_STYLE = '*'; -/** - * Creates a named animation trigger, containing a list of [`state()`](api/animations/state) - * and `transition()` entries to be evaluated when the expression - * bound to the trigger changes. - * - * @param name An identifying string. - * @param definitions An animation definition object, containing an array of - * [`state()`](api/animations/state) and `transition()` declarations. - * - * @return An object that encapsulates the trigger data. - * - * @usageNotes - * Define an animation trigger in the `animations` section of `@Component` metadata. - * In the template, reference the trigger by name and bind it to a trigger expression that - * evaluates to a defined animation state, using the following format: - * - * `[@triggerName]="expression"` - * - * Animation trigger bindings convert all values to strings, and then match the - * previous and current values against any linked transitions. - * Booleans can be specified as `1` or `true` and `0` or `false`. - * - * ### Usage Example - * - * The following example creates an animation trigger reference based on the provided - * name value. - * The provided animation value is expected to be an array consisting of state and - * transition declarations. - * - * ```typescript - * @Component({ - * selector: "my-component", - * templateUrl: "my-component-tpl.html", - * animations: [ - * trigger("myAnimationTrigger", [ - * state(...), - * state(...), - * transition(...), - * transition(...) - * ]) - * ] - * }) - * class MyComponent { - * myStatusExp = "something"; - * } - * ``` - * - * The template associated with this component makes use of the defined trigger - * by binding to an element within its template code. - * - * ```html - * - *
...
- * ``` - * - * ### Using an inline function - * The `transition` animation method also supports reading an inline function which can decide - * if its associated animation should be run. - * - * ```typescript - * // this method is run each time the `myAnimationTrigger` trigger value changes. - * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key: - string]: any}): boolean { - * // notice that `element` and `params` are also available here - * return toState == 'yes-please-animate'; - * } - * - * @Component({ - * selector: 'my-component', - * templateUrl: 'my-component-tpl.html', - * animations: [ - * trigger('myAnimationTrigger', [ - * transition(myInlineMatcherFn, [ - * // the animation sequence code - * ]), - * ]) - * ] - * }) - * class MyComponent { - * myStatusExp = "yes-please-animate"; - * } - * ``` - * - * ### Disabling Animations - * When true, the special animation control binding `@.disabled` binding prevents - * all animations from rendering. - * Place the `@.disabled` binding on an element to disable - * animations on the element itself, as well as any inner animation triggers - * within the element. - * - * The following example shows how to use this feature: - * - * ```typescript - * @Component({ - * selector: 'my-component', - * template: ` - *
- *
- *
- * `, - * animations: [ - * trigger("childAnimation", [ - * // ... - * ]) - * ] - * }) - * class MyComponent { - * isDisabled = true; - * exp = '...'; - * } - * ``` - * - * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating, - * along with any inner animations. - * - * ### Disable animations application-wide - * When an area of the template is set to have animations disabled, - * **all** inner components have their animations disabled as well. - * This means that you can disable all animations for an app - * by placing a host binding set on `@.disabled` on the topmost Angular component. - * - * ```typescript - * import {Component, HostBinding} from '@angular/core'; - * - * @Component({ - * selector: 'app-component', - * templateUrl: 'app.component.html', - * }) - * class AppComponent { - * @HostBinding('@.disabled') - * public animationsDisabled = true; - * } - * ``` - * - * ### Overriding disablement of inner animations - * Despite inner animations being disabled, a parent animation can `query()` - * for inner elements located in disabled areas of the template and still animate - * them if needed. This is also the case for when a sub animation is - * queried by a parent and then later animated using `animateChild()`. - * - * ### Detecting when an animation is disabled - * If a region of the DOM (or the entire application) has its animations disabled, the animation - * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides - * an instance of an `AnimationEvent`. If animations are disabled, - * the `.disabled` flag on the event is true. - * - * @publicApi - */ -function trigger(name, definitions) { - return { - type: 7 /* AnimationMetadataType.Trigger */, - name, - definitions, - options: {} - }; -} -/** - * Defines an animation step that combines styling information with timing information. - * - * @param timings Sets `AnimateTimings` for the parent animation. - * A string in the format "duration [delay] [easing]". - * - Duration and delay are expressed as a number and optional time unit, - * such as "1s" or "10ms" for one second and 10 milliseconds, respectively. - * The default unit is milliseconds. - * - The easing value controls how the animation accelerates and decelerates - * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`, - * `ease-in-out`, or a `cubic-bezier()` function call. - * If not supplied, no easing is applied. - * - * For example, the string "1s 100ms ease-out" specifies a duration of - * 1000 milliseconds, and delay of 100 ms, and the "ease-out" easing style, - * which decelerates near the end of the duration. - * @param styles Sets AnimationStyles for the parent animation. - * A function call to either `style()` or `keyframes()` - * that returns a collection of CSS style entries to be applied to the parent animation. - * When null, uses the styles from the destination state. - * This is useful when describing an animation step that will complete an animation; - * see "Animating to the final state" in `transitions()`. - * @returns An object that encapsulates the animation step. - * - * @usageNotes - * Call within an animation `sequence()`, `{@link animations/group group()}`, or - * `transition()` call to specify an animation step - * that applies given style data to the parent animation for a given amount of time. - * - * ### Syntax Examples - * **Timing examples** - * - * The following examples show various `timings` specifications. - * - `animate(500)` : Duration is 500 milliseconds. - * - `animate("1s")` : Duration is 1000 milliseconds. - * - `animate("100ms 0.5s")` : Duration is 100 milliseconds, delay is 500 milliseconds. - * - `animate("5s ease-in")` : Duration is 5000 milliseconds, easing in. - * - `animate("5s 10ms cubic-bezier(.17,.67,.88,.1)")` : Duration is 5000 milliseconds, delay is 10 - * milliseconds, easing according to a bezier curve. - * - * **Style examples** - * - * The following example calls `style()` to set a single CSS style. - * ```typescript - * animate(500, style({ background: "red" })) - * ``` - * The following example calls `keyframes()` to set a CSS style - * to different values for successive keyframes. - * ```typescript - * animate(500, keyframes( - * [ - * style({ background: "blue" }), - * style({ background: "red" }) - * ]) - * ``` - * - * @publicApi - */ -function animate(timings, styles = null) { - return { - type: 4 /* AnimationMetadataType.Animate */, - styles, - timings - }; -} -/** - * @description Defines a list of animation steps to be run in parallel. - * - * @param steps An array of animation step objects. - * - When steps are defined by `style()` or `animate()` - * function calls, each call within the group is executed instantly. - * - To specify offset styles to be applied at a later time, define steps with - * `keyframes()`, or use `animate()` calls with a delay value. - * For example: - * - * ```typescript - * group([ - * animate("1s", style({ background: "black" })), - * animate("2s", style({ color: "white" })) - * ]) - * ``` - * - * @param options An options object containing a delay and - * developer-defined parameters that provide styling defaults and - * can be overridden on invocation. - * - * @return An object that encapsulates the group data. - * - * @usageNotes - * Grouped animations are useful when a series of styles must be - * animated at different starting times and closed off at different ending times. - * - * When called within a `sequence()` or a - * `transition()` call, does not continue to the next - * instruction until all of the inner animation steps have completed. - * - * @publicApi - */ -function group(steps, options = null) { - return { - type: 3 /* AnimationMetadataType.Group */, - steps, - options - }; -} -/** - * Defines a list of animation steps to be run sequentially, one by one. - * - * @param steps An array of animation step objects. - * - Steps defined by `style()` calls apply the styling data immediately. - * - Steps defined by `animate()` calls apply the styling data over time - * as specified by the timing data. - * - * ```typescript - * sequence([ - * style({ opacity: 0 }), - * animate("1s", style({ opacity: 1 })) - * ]) - * ``` - * - * @param options An options object containing a delay and - * developer-defined parameters that provide styling defaults and - * can be overridden on invocation. - * - * @return An object that encapsulates the sequence data. - * - * @usageNotes - * When you pass an array of steps to a - * `transition()` call, the steps run sequentially by default. - * Compare this to the `{@link animations/group group()}` call, which runs animation steps in - *parallel. - * - * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call, - * execution continues to the next instruction only after each of the inner animation - * steps have completed. - * - * @publicApi - **/ -function sequence(steps, options = null) { - return { - type: 2 /* AnimationMetadataType.Sequence */, - steps, - options - }; -} -/** - * Declares a key/value object containing CSS properties/styles that - * can then be used for an animation [`state`](api/animations/state), within an animation - *`sequence`, or as styling data for calls to `animate()` and `keyframes()`. - * - * @param tokens A set of CSS styles or HTML styles associated with an animation state. - * The value can be any of the following: - * - A key-value style pair associating a CSS property with a value. - * - An array of key-value style pairs. - * - An asterisk (*), to use auto-styling, where styles are derived from the element - * being animated and applied to the animation when it starts. - * - * Auto-styling can be used to define a state that depends on layout or other - * environmental factors. - * - * @return An object that encapsulates the style data. - * - * @usageNotes - * The following examples create animation styles that collect a set of - * CSS property values: - * - * ```typescript - * // string values for CSS properties - * style({ background: "red", color: "blue" }) - * - * // numerical pixel values - * style({ width: 100, height: 0 }) - * ``` - * - * The following example uses auto-styling to allow an element to animate from - * a height of 0 up to its full height: - * - * ``` - * style({ height: 0 }), - * animate("1s", style({ height: "*" })) - * ``` - * - * @publicApi - **/ -function style(tokens) { - return { - type: 6 /* AnimationMetadataType.Style */, - styles: tokens, - offset: null - }; -} -/** - * Declares an animation state within a trigger attached to an element. - * - * @param name One or more names for the defined state in a comma-separated string. - * The following reserved state names can be supplied to define a style for specific use - * cases: - * - * - `void` You can associate styles with this name to be used when - * the element is detached from the application. For example, when an `ngIf` evaluates - * to false, the state of the associated element is void. - * - `*` (asterisk) Indicates the default state. You can associate styles with this name - * to be used as the fallback when the state that is being animated is not declared - * within the trigger. - * - * @param styles A set of CSS styles associated with this state, created using the - * `style()` function. - * This set of styles persists on the element once the state has been reached. - * @param options Parameters that can be passed to the state when it is invoked. - * 0 or more key-value pairs. - * @return An object that encapsulates the new state data. - * - * @usageNotes - * Use the `trigger()` function to register states to an animation trigger. - * Use the `transition()` function to animate between states. - * When a state is active within a component, its associated styles persist on the element, - * even when the animation ends. - * - * @publicApi - **/ -function state(name, styles, options) { - return { - type: 0 /* AnimationMetadataType.State */, - name, - styles, - options - }; -} -/** - * Defines a set of animation styles, associating each style with an optional `offset` value. - * - * @param steps A set of animation styles with optional offset data. - * The optional `offset` value for a style specifies a percentage of the total animation - * time at which that style is applied. - * @returns An object that encapsulates the keyframes data. - * - * @usageNotes - * Use with the `animate()` call. Instead of applying animations - * from the current state - * to the destination state, keyframes describe how each style entry is applied and at what point - * within the animation arc. - * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp). - * - * ### Usage - * - * In the following example, the offset values describe - * when each `backgroundColor` value is applied. The color is red at the start, and changes to - * blue when 20% of the total time has elapsed. - * - * ```typescript - * // the provided offset values - * animate("5s", keyframes([ - * style({ backgroundColor: "red", offset: 0 }), - * style({ backgroundColor: "blue", offset: 0.2 }), - * style({ backgroundColor: "orange", offset: 0.3 }), - * style({ backgroundColor: "black", offset: 1 }) - * ])) - * ``` - * - * If there are no `offset` values specified in the style entries, the offsets - * are calculated automatically. - * - * ```typescript - * animate("5s", keyframes([ - * style({ backgroundColor: "red" }) // offset = 0 - * style({ backgroundColor: "blue" }) // offset = 0.33 - * style({ backgroundColor: "orange" }) // offset = 0.66 - * style({ backgroundColor: "black" }) // offset = 1 - * ])) - *``` - - * @publicApi - */ -function keyframes(steps) { - return { - type: 5 /* AnimationMetadataType.Keyframes */, - steps - }; -} -/** - * Declares an animation transition which is played when a certain specified condition is met. - * - * @param stateChangeExpr A string with a specific format or a function that specifies when the - * animation transition should occur (see [State Change Expression](#state-change-expression)). - * - * @param steps One or more animation objects that represent the animation's instructions. - * - * @param options An options object that can be used to specify a delay for the animation or provide - * custom parameters for it. - * - * @returns An object that encapsulates the transition data. - * - * @usageNotes - * - * ### State Change Expression - * - * The State Change Expression instructs Angular when to run the transition's animations, it can - *either be - * - a string with a specific syntax - * - or a function that compares the previous and current state (value of the expression bound to - * the element's trigger) and returns `true` if the transition should occur or `false` otherwise - * - * The string format can be: - * - `fromState => toState`, which indicates that the transition's animations should occur then the - * expression bound to the trigger's element goes from `fromState` to `toState` - * - * _Example:_ - * ```typescript - * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) )) - * ``` - * - * - `fromState <=> toState`, which indicates that the transition's animations should occur then - * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa - * - * _Example:_ - * ```typescript - * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)')) - * ``` - * - * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the - * element enters or exists the DOM - * - * _Example:_ - * ```typescript - * transition(':enter', [ - * style({ opacity: 0 }), - * animate('500ms', style({ opacity: 1 })) - * ]) - * ``` - * - * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when - * the numerical expression bound to the trigger's element has increased in value or decreased - * - * _Example:_ - * ```typescript - * transition(':increment', query('@counter', animateChild())) - * ``` - * - * - a sequence of any of the above divided by commas, which indicates that transition's animations - * should occur whenever one of the state change expressions matches - * - * _Example:_ - * ```typescript - * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([ - * style({ transform: 'scale(1)', offset: 0}), - * style({ transform: 'scale(1.1)', offset: 0.7}), - * style({ transform: 'scale(1)', offset: 1}) - * ]))), - * ``` - * - * Also note that in such context: - * - `void` can be used to indicate the absence of the element - * - asterisks can be used as wildcards that match any state - * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is - * equivalent to `:leave`) - * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match - * _truthy_ and _falsy_ values) - * - *
- * - * Be careful about entering end leaving elements as their transitions present a common - * pitfall for developers. - * - * Note that when an element with a trigger enters the DOM its `:enter` transition always - * gets executed, but its `:leave` transition will not be executed if the element is removed - * alongside its parent (as it will be removed "without warning" before its transition has - * a chance to be executed, the only way that such transition can occur is if the element - * is exiting the DOM on its own). - * - * - *
- * - * ### Animating to a Final State - * - * If the final step in a transition is a call to `animate()` that uses a timing value - * with no `style` data, that step is automatically considered the final animation arc, - * for the element to reach the final state, in such case Angular automatically adds or removes - * CSS styles to ensure that the element is in the correct final state. - * - * - * ### Usage Examples - * - * - Transition animations applied based on - * the trigger's expression value - * - * ```HTML - *
- * ... - *
- * ``` - * - * ```typescript - * trigger("myAnimationTrigger", [ - * ..., // states - * transition("on => off, open => closed", animate(500)), - * transition("* <=> error", query('.indicator', animateChild())) - * ]) - * ``` - * - * - Transition animations applied based on custom logic dependent - * on the trigger's expression value and provided parameters - * - * ```HTML - *
- * ... - *
- * ``` - * - * ```typescript - * trigger("myAnimationTrigger", [ - * ..., // states - * transition( - * (fromState, toState, _element, params) => - * ['firststep', 'laststep'].includes(fromState.toLowerCase()) - * && toState === params?.['target'], - * animate('1s') - * ) - * ]) - * ``` - * - * @publicApi - **/ -function transition(stateChangeExpr, steps, options = null) { - return { - type: 1 /* AnimationMetadataType.Transition */, - expr: stateChangeExpr, - animation: steps, - options - }; -} -/** - * Produces a reusable animation that can be invoked in another animation or sequence, - * by calling the `useAnimation()` function. - * - * @param steps One or more animation objects, as returned by the `animate()` - * or `sequence()` function, that form a transformation from one state to another. - * A sequence is used by default when you pass an array. - * @param options An options object that can contain a delay value for the start of the - * animation, and additional developer-defined parameters. - * Provided values for additional parameters are used as defaults, - * and override values can be passed to the caller on invocation. - * @returns An object that encapsulates the animation data. - * - * @usageNotes - * The following example defines a reusable animation, providing some default parameter - * values. - * - * ```typescript - * var fadeAnimation = animation([ - * style({ opacity: '{{ start }}' }), - * animate('{{ time }}', - * style({ opacity: '{{ end }}'})) - * ], - * { params: { time: '1000ms', start: 0, end: 1 }}); - * ``` - * - * The following invokes the defined animation with a call to `useAnimation()`, - * passing in override parameter values. - * - * ```js - * useAnimation(fadeAnimation, { - * params: { - * time: '2s', - * start: 1, - * end: 0 - * } - * }) - * ``` - * - * If any of the passed-in parameter values are missing from this call, - * the default values are used. If one or more parameter values are missing before a step is - * animated, `useAnimation()` throws an error. - * - * @publicApi - */ -function animation(steps, options = null) { - return { - type: 8 /* AnimationMetadataType.Reference */, - animation: steps, - options - }; -} -/** - * Executes a queried inner animation element within an animation sequence. - * - * @param options An options object that can contain a delay value for the start of the - * animation, and additional override values for developer-defined parameters. - * @return An object that encapsulates the child animation data. - * - * @usageNotes - * Each time an animation is triggered in Angular, the parent animation - * has priority and any child animations are blocked. In order - * for a child animation to run, the parent animation must query each of the elements - * containing child animations, and run them using this function. - * - * Note that this feature is designed to be used with `query()` and it will only work - * with animations that are assigned using the Angular animation library. CSS keyframes - * and transitions are not handled by this API. - * - * @publicApi - */ -function animateChild(options = null) { - return { - type: 9 /* AnimationMetadataType.AnimateChild */, - options - }; -} -/** - * Starts a reusable animation that is created using the `animation()` function. - * - * @param animation The reusable animation to start. - * @param options An options object that can contain a delay value for the start of - * the animation, and additional override values for developer-defined parameters. - * @return An object that contains the animation parameters. - * - * @publicApi - */ -function useAnimation(animation, options = null) { - return { - type: 10 /* AnimationMetadataType.AnimateRef */, - animation, - options - }; -} -/** - * Finds one or more inner elements within the current element that is - * being animated within a sequence. Use with `animate()`. - * - * @param selector The element to query, or a set of elements that contain Angular-specific - * characteristics, specified with one or more of the following tokens. - * - `query(":enter")` or `query(":leave")` : Query for newly inserted/removed elements (not - * all elements can be queried via these tokens, see - * [Entering and Leaving Elements](#entering-and-leaving-elements)) - * - `query(":animating")` : Query all currently animating elements. - * - `query("@triggerName")` : Query elements that contain an animation trigger. - * - `query("@*")` : Query all elements that contain an animation triggers. - * - `query(":self")` : Include the current element into the animation sequence. - * - * @param animation One or more animation steps to apply to the queried element or elements. - * An array is treated as an animation sequence. - * @param options An options object. Use the 'limit' field to limit the total number of - * items to collect. - * @return An object that encapsulates the query data. - * - * @usageNotes - * - * ### Multiple Tokens - * - * Tokens can be merged into a combined query selector string. For example: - * - * ```typescript - * query(':self, .record:enter, .record:leave, @subTrigger', [...]) - * ``` - * - * The `query()` function collects multiple elements and works internally by using - * `element.querySelectorAll`. Use the `limit` field of an options object to limit - * the total number of items to be collected. For example: - * - * ```js - * query('div', [ - * animate(...), - * animate(...) - * ], { limit: 1 }) - * ``` - * - * By default, throws an error when zero items are found. Set the - * `optional` flag to ignore this error. For example: - * - * ```js - * query('.some-element-that-may-not-be-there', [ - * animate(...), - * animate(...) - * ], { optional: true }) - * ``` - * - * ### Entering and Leaving Elements - * - * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones - * that can are those that Angular assumes can enter/leave based on their own logic - * (if their insertion/removal is simply a consequence of that of their parent they - * should be queried via a different token in their parent's `:enter`/`:leave` transitions). - * - * The only elements Angular assumes can enter/leave based on their own logic (thus the only - * ones that can be queried via the `:enter` and `:leave` tokens) are: - * - Those inserted dynamically (via `ViewContainerRef`) - * - Those that have a structural directive (which, under the hood, are a subset of the above ones) - * - *
- * - * Note that elements will be successfully queried via `:enter`/`:leave` even if their - * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural - * directive (e.g. they enter/exit alongside their parent). - * - *
- * - *
- * - * There is an exception to what previously mentioned, besides elements entering/leaving based on - * their own logic, elements with an animation trigger can always be queried via `:leave` when - * their parent is also leaving. - * - *
- * - * ### Usage Example - * - * The following example queries for inner elements and animates them - * individually using `animate()`. - * - * ```typescript - * @Component({ - * selector: 'inner', - * template: ` - *
- *

Title

- *
- * Blah blah blah - *
- *
- * `, - * animations: [ - * trigger('queryAnimation', [ - * transition('* => goAnimate', [ - * // hide the inner elements - * query('h1', style({ opacity: 0 })), - * query('.content', style({ opacity: 0 })), - * - * // animate the inner elements in, one by one - * query('h1', animate(1000, style({ opacity: 1 }))), - * query('.content', animate(1000, style({ opacity: 1 }))), - * ]) - * ]) - * ] - * }) - * class Cmp { - * exp = ''; - * - * goAnimate() { - * this.exp = 'goAnimate'; - * } - * } - * ``` - * - * @publicApi - */ -function query(selector, animation, options = null) { - return { - type: 11 /* AnimationMetadataType.Query */, - selector, - animation, - options - }; -} -/** - * Use within an animation `query()` call to issue a timing gap after - * each queried item is animated. - * - * @param timings A delay value. - * @param animation One ore more animation steps. - * @returns An object that encapsulates the stagger data. - * - * @usageNotes - * In the following example, a container element wraps a list of items stamped out - * by an `ngFor`. The container element contains an animation trigger that will later be set - * to query for each of the inner items. - * - * Each time items are added, the opacity fade-in animation runs, - * and each removed item is faded out. - * When either of these animations occur, the stagger effect is - * applied after each item's animation is started. - * - * ```html - * - * - *
- *
- *
- * {{ item }} - *
- *
- * ``` - * - * Here is the component code: - * - * ```typescript - * import {trigger, transition, style, animate, query, stagger} from '@angular/animations'; - * @Component({ - * templateUrl: 'list.component.html', - * animations: [ - * trigger('listAnimation', [ - * ... - * ]) - * ] - * }) - * class ListComponent { - * items = []; - * - * showItems() { - * this.items = [0,1,2,3,4]; - * } - * - * hideItems() { - * this.items = []; - * } - * - * toggle() { - * this.items.length ? this.hideItems() : this.showItems(); - * } - * } - * ``` - * - * Here is the animation trigger code: - * - * ```typescript - * trigger('listAnimation', [ - * transition('* => *', [ // each time the binding value changes - * query(':leave', [ - * stagger(100, [ - * animate('0.5s', style({ opacity: 0 })) - * ]) - * ]), - * query(':enter', [ - * style({ opacity: 0 }), - * stagger(100, [ - * animate('0.5s', style({ opacity: 1 })) - * ]) - * ]) - * ]) - * ]) - * ``` - * - * @publicApi - */ -function stagger(timings, animation) { - return { - type: 12 /* AnimationMetadataType.Stagger */, - timings, - animation - }; -} - -/** - * An empty programmatic controller for reusable animations. - * Used internally when animations are disabled, to avoid - * checking for the null case when an animation player is expected. - * - * @see {@link animate} - * @see {@link AnimationPlayer} - * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer} - * - * @publicApi - */ -class NoopAnimationPlayer { - constructor(duration = 0, delay = 0) { - this._onDoneFns = []; - this._onStartFns = []; - this._onDestroyFns = []; - this._originalOnDoneFns = []; - this._originalOnStartFns = []; - this._started = false; - this._destroyed = false; - this._finished = false; - this._position = 0; - this.parentPlayer = null; - this.totalTime = duration + delay; - } - _onFinish() { - if (!this._finished) { - this._finished = true; - this._onDoneFns.forEach(fn => fn()); - this._onDoneFns = []; - } - } - onStart(fn) { - this._originalOnStartFns.push(fn); - this._onStartFns.push(fn); - } - onDone(fn) { - this._originalOnDoneFns.push(fn); - this._onDoneFns.push(fn); - } - onDestroy(fn) { - this._onDestroyFns.push(fn); - } - hasStarted() { - return this._started; - } - init() {} - play() { - if (!this.hasStarted()) { - this._onStart(); - this.triggerMicrotask(); - } - this._started = true; - } - /** @internal */ - triggerMicrotask() { - queueMicrotask(() => this._onFinish()); - } - _onStart() { - this._onStartFns.forEach(fn => fn()); - this._onStartFns = []; - } - pause() {} - restart() {} - finish() { - this._onFinish(); - } - destroy() { - if (!this._destroyed) { - this._destroyed = true; - if (!this.hasStarted()) { - this._onStart(); - } - this.finish(); - this._onDestroyFns.forEach(fn => fn()); - this._onDestroyFns = []; - } - } - reset() { - this._started = false; - this._finished = false; - this._onStartFns = this._originalOnStartFns; - this._onDoneFns = this._originalOnDoneFns; - } - setPosition(position) { - this._position = this.totalTime ? position * this.totalTime : 1; - } - getPosition() { - return this.totalTime ? this._position / this.totalTime : 1; - } - /** @internal */ - triggerCallback(phaseName) { - const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns; - methods.forEach(fn => fn()); - methods.length = 0; - } -} - -/** - * A programmatic controller for a group of reusable animations. - * Used internally to control animations. - * - * @see {@link AnimationPlayer} - * @see {@link animations/group group} - * - */ -class AnimationGroupPlayer { - constructor(_players) { - this._onDoneFns = []; - this._onStartFns = []; - this._finished = false; - this._started = false; - this._destroyed = false; - this._onDestroyFns = []; - this.parentPlayer = null; - this.totalTime = 0; - this.players = _players; - let doneCount = 0; - let destroyCount = 0; - let startCount = 0; - const total = this.players.length; - if (total == 0) { - queueMicrotask(() => this._onFinish()); - } else { - this.players.forEach(player => { - player.onDone(() => { - if (++doneCount == total) { - this._onFinish(); - } - }); - player.onDestroy(() => { - if (++destroyCount == total) { - this._onDestroy(); - } - }); - player.onStart(() => { - if (++startCount == total) { - this._onStart(); - } - }); - }); - } - this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0); - } - _onFinish() { - if (!this._finished) { - this._finished = true; - this._onDoneFns.forEach(fn => fn()); - this._onDoneFns = []; - } - } - init() { - this.players.forEach(player => player.init()); - } - onStart(fn) { - this._onStartFns.push(fn); - } - _onStart() { - if (!this.hasStarted()) { - this._started = true; - this._onStartFns.forEach(fn => fn()); - this._onStartFns = []; - } - } - onDone(fn) { - this._onDoneFns.push(fn); - } - onDestroy(fn) { - this._onDestroyFns.push(fn); - } - hasStarted() { - return this._started; - } - play() { - if (!this.parentPlayer) { - this.init(); - } - this._onStart(); - this.players.forEach(player => player.play()); - } - pause() { - this.players.forEach(player => player.pause()); - } - restart() { - this.players.forEach(player => player.restart()); - } - finish() { - this._onFinish(); - this.players.forEach(player => player.finish()); - } - destroy() { - this._onDestroy(); - } - _onDestroy() { - if (!this._destroyed) { - this._destroyed = true; - this._onFinish(); - this.players.forEach(player => player.destroy()); - this._onDestroyFns.forEach(fn => fn()); - this._onDestroyFns = []; - } - } - reset() { - this.players.forEach(player => player.reset()); - this._destroyed = false; - this._finished = false; - this._started = false; - } - setPosition(p) { - const timeAtPosition = p * this.totalTime; - this.players.forEach(player => { - const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1; - player.setPosition(position); - }); - } - getPosition() { - const longestPlayer = this.players.reduce((longestSoFar, player) => { - const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime; - return newPlayerIsLongest ? player : longestSoFar; - }, null); - return longestPlayer != null ? longestPlayer.getPosition() : 0; - } - beforeDestroy() { - this.players.forEach(player => { - if (player.beforeDestroy) { - player.beforeDestroy(); - } - }); - } - /** @internal */ - triggerCallback(phaseName) { - const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns; - methods.forEach(fn => fn()); - methods.length = 0; - } -} -const ɵPRE_STYLE = '!'; - -/** - * @module - * @description - * Entry point for all animation APIs of the animation package. - */ - -/** - * @module - * @description - * Entry point for all public APIs of this package. - */ - -// This file is not used to build this module. It is only used during editing - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 570: -/*!***************************************************************!*\ - !*** ./node_modules/@angular/animations/fesm2022/browser.mjs ***! - \***************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AnimationDriver: () => (/* binding */ AnimationDriver), -/* harmony export */ "ɵAnimation": () => (/* binding */ Animation), -/* harmony export */ "ɵAnimationEngine": () => (/* binding */ AnimationEngine), -/* harmony export */ "ɵAnimationStyleNormalizer": () => (/* binding */ AnimationStyleNormalizer), -/* harmony export */ "ɵNoopAnimationDriver": () => (/* binding */ NoopAnimationDriver), -/* harmony export */ "ɵNoopAnimationStyleNormalizer": () => (/* binding */ NoopAnimationStyleNormalizer), -/* harmony export */ "ɵWebAnimationsDriver": () => (/* binding */ WebAnimationsDriver), -/* harmony export */ "ɵWebAnimationsPlayer": () => (/* binding */ WebAnimationsPlayer), -/* harmony export */ "ɵWebAnimationsStyleNormalizer": () => (/* binding */ WebAnimationsStyleNormalizer), -/* harmony export */ "ɵallowPreviousPlayerStylesMerge": () => (/* binding */ allowPreviousPlayerStylesMerge), -/* harmony export */ "ɵcontainsElement": () => (/* binding */ containsElement), -/* harmony export */ "ɵgetParentElement": () => (/* binding */ getParentElement), -/* harmony export */ "ɵinvokeQuery": () => (/* binding */ invokeQuery), -/* harmony export */ "ɵnormalizeKeyframes": () => (/* binding */ normalizeKeyframes), -/* harmony export */ "ɵvalidateStyleProperty": () => (/* binding */ validateStyleProperty) -/* harmony export */ }); -/* harmony import */ var _angular_animations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/animations */ 2501); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/** - * @license Angular v16.1.8 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ - - - - -const LINE_START = '\n - '; -function invalidTimingValue(exp) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value "${exp}" is invalid.`); -} -function negativeStepValue() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.'); -} -function negativeDelayValue() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.'); -} -function invalidStyleParams(varName) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode && `Unable to resolve the local animation param ${varName} in the given list of values`); -} -function invalidParamValue(varName) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`); -} -function invalidNodeType(nodeType) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`); -} -function invalidCssUnitValue(userProvidedProperty, value) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`); -} -function invalidTrigger() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode && 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\'@foo\', [...]))'); -} -function invalidDefinition() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()'); -} -function invalidState(metadataName, missingSubs) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode && `state("${metadataName}", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`); -} -function invalidStyleValue(value) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`); -} -function invalidProperty(prop) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode && `The provided animation property "${prop}" is not a supported CSS property for animations`); -} -function invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode && `The CSS property "${prop}" that exists between the times of "${firstStart}ms" and "${firstEnd}ms" is also being animated in a parallel animation between the times of "${secondStart}ms" and "${secondEnd}ms"`); -} -function invalidKeyframes() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`); -} -function invalidOffset() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`); -} -function keyframeOffsetsOutOfOrder() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`); -} -function keyframesMissingOffsets() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`); -} -function invalidStagger() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`); -} -function invalidQuery(selector) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode && `\`query("${selector}")\` returned zero elements. (Use \`query("${selector}", { optional: true })\` if you wish to allow this.)`); -} -function invalidExpression(expr) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression "${expr}" is not supported`); -} -function invalidTransitionAlias(alias) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value "${alias}" is not supported`); -} -function validationFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\n${errors.map(err => err.message).join('\n')}`); -} -function buildingFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\n${errors.map(err => err.message).join('\n')}`); -} -function triggerBuildFailed(name, errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode && `The animation trigger "${name}" has failed to build due to the following errors:\n - ${errors.map(err => err.message).join('\n - ')}`); -} -function animationFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode && `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`); -} -function registerFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode && `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\n')}`); -} -function missingOrDestroyedAnimation() { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\'t exist or has already been destroyed'); -} -function createAnimationFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode && `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\n')}`); -} -function missingPlayer(id) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`); -} -function missingTrigger(phase, name) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode && `Unable to listen on the animation trigger event "${phase}" because the animation trigger "${name}" doesn\'t exist!`); -} -function missingEvent(name) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode && `Unable to listen on the animation trigger "${name}" because the provided event is undefined!`); -} -function unsupportedTriggerEvent(phase, name) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode && `The provided animation trigger event "${phase}" for the animation trigger "${name}" is not supported!`); -} -function unregisteredTrigger(name) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger "${name}" has not been registered!`); -} -function triggerTransitionsFailed(errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode && `Unable to process animations due to the following failed trigger transitions\n ${errors.map(err => err.message).join('\n')}`); -} -function triggerParsingFailed(name, errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode && `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`); -} -function transitionFailed(name, errors) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\n ${errors.map(err => err.message).join('\n- ')}`); -} - -/** - * Set of all animatable CSS properties - * - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties - */ -const ANIMATABLE_PROP_SET = new Set(['-moz-outline-radius', '-moz-outline-radius-bottomleft', '-moz-outline-radius-bottomright', '-moz-outline-radius-topleft', '-moz-outline-radius-topright', '-ms-grid-columns', '-ms-grid-rows', '-webkit-line-clamp', '-webkit-text-fill-color', '-webkit-text-stroke', '-webkit-text-stroke-color', 'accent-color', 'all', 'backdrop-filter', 'background', 'background-color', 'background-position', 'background-size', 'block-size', 'border', 'border-block-end', 'border-block-end-color', 'border-block-end-width', 'border-block-start', 'border-block-start-color', 'border-block-start-width', 'border-bottom', 'border-bottom-color', 'border-bottom-left-radius', 'border-bottom-right-radius', 'border-bottom-width', 'border-color', 'border-end-end-radius', 'border-end-start-radius', 'border-image-outset', 'border-image-slice', 'border-image-width', 'border-inline-end', 'border-inline-end-color', 'border-inline-end-width', 'border-inline-start', 'border-inline-start-color', 'border-inline-start-width', 'border-left', 'border-left-color', 'border-left-width', 'border-radius', 'border-right', 'border-right-color', 'border-right-width', 'border-start-end-radius', 'border-start-start-radius', 'border-top', 'border-top-color', 'border-top-left-radius', 'border-top-right-radius', 'border-top-width', 'border-width', 'bottom', 'box-shadow', 'caret-color', 'clip', 'clip-path', 'color', 'column-count', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', 'column-width', 'columns', 'filter', 'flex', 'flex-basis', 'flex-grow', 'flex-shrink', 'font', 'font-size', 'font-size-adjust', 'font-stretch', 'font-variation-settings', 'font-weight', 'gap', 'grid-column-gap', 'grid-gap', 'grid-row-gap', 'grid-template-columns', 'grid-template-rows', 'height', 'inline-size', 'input-security', 'inset', 'inset-block', 'inset-block-end', 'inset-block-start', 'inset-inline', 'inset-inline-end', 'inset-inline-start', 'left', 'letter-spacing', 'line-clamp', 'line-height', 'margin', 'margin-block-end', 'margin-block-start', 'margin-bottom', 'margin-inline-end', 'margin-inline-start', 'margin-left', 'margin-right', 'margin-top', 'mask', 'mask-border', 'mask-position', 'mask-size', 'max-block-size', 'max-height', 'max-inline-size', 'max-lines', 'max-width', 'min-block-size', 'min-height', 'min-inline-size', 'min-width', 'object-position', 'offset', 'offset-anchor', 'offset-distance', 'offset-path', 'offset-position', 'offset-rotate', 'opacity', 'order', 'outline', 'outline-color', 'outline-offset', 'outline-width', 'padding', 'padding-block-end', 'padding-block-start', 'padding-bottom', 'padding-inline-end', 'padding-inline-start', 'padding-left', 'padding-right', 'padding-top', 'perspective', 'perspective-origin', 'right', 'rotate', 'row-gap', 'scale', 'scroll-margin', 'scroll-margin-block', 'scroll-margin-block-end', 'scroll-margin-block-start', 'scroll-margin-bottom', 'scroll-margin-inline', 'scroll-margin-inline-end', 'scroll-margin-inline-start', 'scroll-margin-left', 'scroll-margin-right', 'scroll-margin-top', 'scroll-padding', 'scroll-padding-block', 'scroll-padding-block-end', 'scroll-padding-block-start', 'scroll-padding-bottom', 'scroll-padding-inline', 'scroll-padding-inline-end', 'scroll-padding-inline-start', 'scroll-padding-left', 'scroll-padding-right', 'scroll-padding-top', 'scroll-snap-coordinate', 'scroll-snap-destination', 'scrollbar-color', 'shape-image-threshold', 'shape-margin', 'shape-outside', 'tab-size', 'text-decoration', 'text-decoration-color', 'text-decoration-thickness', 'text-emphasis', 'text-emphasis-color', 'text-indent', 'text-shadow', 'text-underline-offset', 'top', 'transform', 'transform-origin', 'translate', 'vertical-align', 'visibility', 'width', 'word-spacing', 'z-index', 'zoom']); -function optimizeGroupPlayer(players) { - switch (players.length) { - case 0: - return new _angular_animations__WEBPACK_IMPORTED_MODULE_1__.NoopAnimationPlayer(); - case 1: - return players[0]; - default: - return new _angular_animations__WEBPACK_IMPORTED_MODULE_1__["ɵAnimationGroupPlayer"](players); - } -} -function normalizeKeyframes$1(normalizer, keyframes, preStyles = new Map(), postStyles = new Map()) { - const errors = []; - const normalizedKeyframes = []; - let previousOffset = -1; - let previousKeyframe = null; - keyframes.forEach(kf => { - const offset = kf.get('offset'); - const isSameOffset = offset == previousOffset; - const normalizedKeyframe = isSameOffset && previousKeyframe || new Map(); - kf.forEach((val, prop) => { - let normalizedProp = prop; - let normalizedValue = val; - if (prop !== 'offset') { - normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors); - switch (normalizedValue) { - case _angular_animations__WEBPACK_IMPORTED_MODULE_1__["ɵPRE_STYLE"]: - normalizedValue = preStyles.get(prop); - break; - case _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE: - normalizedValue = postStyles.get(prop); - break; - default: - normalizedValue = normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors); - break; - } - } - normalizedKeyframe.set(normalizedProp, normalizedValue); - }); - if (!isSameOffset) { - normalizedKeyframes.push(normalizedKeyframe); - } - previousKeyframe = normalizedKeyframe; - previousOffset = offset; - }); - if (errors.length) { - throw animationFailed(errors); - } - return normalizedKeyframes; -} -function listenOnPlayer(player, eventName, event, callback) { - switch (eventName) { - case 'start': - player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player))); - break; - case 'done': - player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player))); - break; - case 'destroy': - player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player))); - break; - } -} -function copyAnimationEvent(e, phaseName, player) { - const totalTime = player.totalTime; - const disabled = player.disabled ? true : false; - const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled); - const data = e['_data']; - if (data != null) { - event['_data'] = data; - } - return event; -} -function makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) { - return { - element, - triggerName, - fromState, - toState, - phaseName, - totalTime, - disabled: !!disabled - }; -} -function getOrSetDefaultValue(map, key, defaultValue) { - let value = map.get(key); - if (!value) { - map.set(key, value = defaultValue); - } - return value; -} -function parseTimelineCommand(command) { - const separatorPos = command.indexOf(':'); - const id = command.substring(1, separatorPos); - const action = command.slice(separatorPos + 1); - return [id, action]; -} -const documentElement = /* @__PURE__ */(() => typeof document === 'undefined' ? null : document.documentElement)(); -function getParentElement(element) { - const parent = element.parentNode || element.host || null; // consider host to support shadow DOM - if (parent === documentElement) { - return null; - } - return parent; -} -function containsVendorPrefix(prop) { - // Webkit is the only real popular vendor prefix nowadays - // cc: http://shouldiprefix.com/ - return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit -} - -let _CACHED_BODY = null; -let _IS_WEBKIT = false; -function validateStyleProperty(prop) { - if (!_CACHED_BODY) { - _CACHED_BODY = getBodyNode() || {}; - _IS_WEBKIT = _CACHED_BODY.style ? 'WebkitAppearance' in _CACHED_BODY.style : false; - } - let result = true; - if (_CACHED_BODY.style && !containsVendorPrefix(prop)) { - result = prop in _CACHED_BODY.style; - if (!result && _IS_WEBKIT) { - const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1); - result = camelProp in _CACHED_BODY.style; - } - } - return result; -} -function validateWebAnimatableStyleProperty(prop) { - return ANIMATABLE_PROP_SET.has(prop); -} -function getBodyNode() { - if (typeof document != 'undefined') { - return document.body; - } - return null; -} -function containsElement(elm1, elm2) { - while (elm2) { - if (elm2 === elm1) { - return true; - } - elm2 = getParentElement(elm2); - } - return false; -} -function invokeQuery(element, selector, multi) { - if (multi) { - return Array.from(element.querySelectorAll(selector)); - } - const elem = element.querySelector(selector); - return elem ? [elem] : []; -} -function hypenatePropsKeys(original) { - const newMap = new Map(); - original.forEach((val, prop) => { - const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2'); - newMap.set(newProp, val); - }); - return newMap; -} - -/** - * @publicApi - */ -class NoopAnimationDriver { - validateStyleProperty(prop) { - return validateStyleProperty(prop); - } - matchesElement(_element, _selector) { - // This method is deprecated and no longer in use so we return false. - return false; - } - containsElement(elm1, elm2) { - return containsElement(elm1, elm2); - } - getParentElement(element) { - return getParentElement(element); - } - query(element, selector, multi) { - return invokeQuery(element, selector, multi); - } - computeStyle(element, prop, defaultValue) { - return defaultValue || ''; - } - animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) { - return new _angular_animations__WEBPACK_IMPORTED_MODULE_1__.NoopAnimationPlayer(duration, delay); - } -} -NoopAnimationDriver.ɵfac = function NoopAnimationDriver_Factory(t) { - return new (t || NoopAnimationDriver)(); -}; -NoopAnimationDriver.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: NoopAnimationDriver, - factory: NoopAnimationDriver.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NoopAnimationDriver, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable - }], null, null); -})(); -/** - * @publicApi - */ -class AnimationDriver {} -AnimationDriver.NOOP = /* @__PURE__ */new NoopAnimationDriver(); -const ONE_SECOND = 1000; -const SUBSTITUTION_EXPR_START = '{{'; -const SUBSTITUTION_EXPR_END = '}}'; -const ENTER_CLASSNAME = 'ng-enter'; -const LEAVE_CLASSNAME = 'ng-leave'; -const NG_TRIGGER_CLASSNAME = 'ng-trigger'; -const NG_TRIGGER_SELECTOR = '.ng-trigger'; -const NG_ANIMATING_CLASSNAME = 'ng-animating'; -const NG_ANIMATING_SELECTOR = '.ng-animating'; -function resolveTimingValue(value) { - if (typeof value == 'number') return value; - const matches = value.match(/^(-?[\.\d]+)(m?s)/); - if (!matches || matches.length < 2) return 0; - return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); -} -function _convertTimeValueToMS(value, unit) { - switch (unit) { - case 's': - return value * ONE_SECOND; - default: - // ms or something else - return value; - } -} -function resolveTiming(timings, errors, allowNegativeValues) { - return timings.hasOwnProperty('duration') ? timings : parseTimeExpression(timings, errors, allowNegativeValues); -} -function parseTimeExpression(exp, errors, allowNegativeValues) { - const regex = /^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i; - let duration; - let delay = 0; - let easing = ''; - if (typeof exp === 'string') { - const matches = exp.match(regex); - if (matches === null) { - errors.push(invalidTimingValue(exp)); - return { - duration: 0, - delay: 0, - easing: '' - }; - } - duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]); - const delayMatch = matches[3]; - if (delayMatch != null) { - delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]); - } - const easingVal = matches[5]; - if (easingVal) { - easing = easingVal; - } - } else { - duration = exp; - } - if (!allowNegativeValues) { - let containsErrors = false; - let startIndex = errors.length; - if (duration < 0) { - errors.push(negativeStepValue()); - containsErrors = true; - } - if (delay < 0) { - errors.push(negativeDelayValue()); - containsErrors = true; - } - if (containsErrors) { - errors.splice(startIndex, 0, invalidTimingValue(exp)); - } - } - return { - duration, - delay, - easing - }; -} -function copyObj(obj, destination = {}) { - Object.keys(obj).forEach(prop => { - destination[prop] = obj[prop]; - }); - return destination; -} -function convertToMap(obj) { - const styleMap = new Map(); - Object.keys(obj).forEach(prop => { - const val = obj[prop]; - styleMap.set(prop, val); - }); - return styleMap; -} -function normalizeKeyframes(keyframes) { - if (!keyframes.length) { - return []; - } - if (keyframes[0] instanceof Map) { - return keyframes; - } - return keyframes.map(kf => convertToMap(kf)); -} -function normalizeStyles(styles) { - const normalizedStyles = new Map(); - if (Array.isArray(styles)) { - styles.forEach(data => copyStyles(data, normalizedStyles)); - } else { - copyStyles(styles, normalizedStyles); - } - return normalizedStyles; -} -function copyStyles(styles, destination = new Map(), backfill) { - if (backfill) { - for (let [prop, val] of backfill) { - destination.set(prop, val); - } - } - for (let [prop, val] of styles) { - destination.set(prop, val); - } - return destination; -} -function setStyles(element, styles, formerStyles) { - styles.forEach((val, prop) => { - const camelProp = dashCaseToCamelCase(prop); - if (formerStyles && !formerStyles.has(prop)) { - formerStyles.set(prop, element.style[camelProp]); - } - element.style[camelProp] = val; - }); -} -function eraseStyles(element, styles) { - styles.forEach((_, prop) => { - const camelProp = dashCaseToCamelCase(prop); - element.style[camelProp] = ''; - }); -} -function normalizeAnimationEntry(steps) { - if (Array.isArray(steps)) { - if (steps.length == 1) return steps[0]; - return (0,_angular_animations__WEBPACK_IMPORTED_MODULE_1__.sequence)(steps); - } - return steps; -} -function validateStyleParams(value, options, errors) { - const params = options.params || {}; - const matches = extractStyleParams(value); - if (matches.length) { - matches.forEach(varName => { - if (!params.hasOwnProperty(varName)) { - errors.push(invalidStyleParams(varName)); - } - }); - } -} -const PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\s*(.+?)\\s*${SUBSTITUTION_EXPR_END}`, 'g'); -function extractStyleParams(value) { - let params = []; - if (typeof value === 'string') { - let match; - while (match = PARAM_REGEX.exec(value)) { - params.push(match[1]); - } - PARAM_REGEX.lastIndex = 0; - } - return params; -} -function interpolateParams(value, params, errors) { - const original = value.toString(); - const str = original.replace(PARAM_REGEX, (_, varName) => { - let localVal = params[varName]; - // this means that the value was never overridden by the data passed in by the user - if (localVal == null) { - errors.push(invalidParamValue(varName)); - localVal = ''; - } - return localVal.toString(); - }); - // we do this to assert that numeric values stay as they are - return str == original ? value : str; -} -function iteratorToArray(iterator) { - const arr = []; - let item = iterator.next(); - while (!item.done) { - arr.push(item.value); - item = iterator.next(); - } - return arr; -} -const DASH_CASE_REGEXP = /-+([a-z0-9])/g; -function dashCaseToCamelCase(input) { - return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase()); -} -function camelCaseToDashCase(input) { - return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); -} -function allowPreviousPlayerStylesMerge(duration, delay) { - return duration === 0 || delay === 0; -} -function balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) { - if (previousStyles.size && keyframes.length) { - let startingKeyframe = keyframes[0]; - let missingStyleProps = []; - previousStyles.forEach((val, prop) => { - if (!startingKeyframe.has(prop)) { - missingStyleProps.push(prop); - } - startingKeyframe.set(prop, val); - }); - if (missingStyleProps.length) { - for (let i = 1; i < keyframes.length; i++) { - let kf = keyframes[i]; - missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop))); - } - } - } - return keyframes; -} -function visitDslNode(visitor, node, context) { - switch (node.type) { - case 7 /* AnimationMetadataType.Trigger */: - return visitor.visitTrigger(node, context); - case 0 /* AnimationMetadataType.State */: - return visitor.visitState(node, context); - case 1 /* AnimationMetadataType.Transition */: - return visitor.visitTransition(node, context); - case 2 /* AnimationMetadataType.Sequence */: - return visitor.visitSequence(node, context); - case 3 /* AnimationMetadataType.Group */: - return visitor.visitGroup(node, context); - case 4 /* AnimationMetadataType.Animate */: - return visitor.visitAnimate(node, context); - case 5 /* AnimationMetadataType.Keyframes */: - return visitor.visitKeyframes(node, context); - case 6 /* AnimationMetadataType.Style */: - return visitor.visitStyle(node, context); - case 8 /* AnimationMetadataType.Reference */: - return visitor.visitReference(node, context); - case 9 /* AnimationMetadataType.AnimateChild */: - return visitor.visitAnimateChild(node, context); - case 10 /* AnimationMetadataType.AnimateRef */: - return visitor.visitAnimateRef(node, context); - case 11 /* AnimationMetadataType.Query */: - return visitor.visitQuery(node, context); - case 12 /* AnimationMetadataType.Stagger */: - return visitor.visitStagger(node, context); - default: - throw invalidNodeType(node.type); - } -} -function computeStyle(element, prop) { - return window.getComputedStyle(element)[prop]; -} -function createListOfWarnings(warnings) { - const LINE_START = '\n - '; - return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`; -} -function warnValidation(warnings) { - (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`); -} -function warnTriggerBuild(name, warnings) { - (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`The animation trigger "${name}" has built with the following warnings:${createListOfWarnings(warnings)}`); -} -function warnRegister(warnings) { - (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`); -} -function triggerParsingWarnings(name, warnings) { - (typeof ngDevMode === 'undefined' || ngDevMode) && console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`); -} -function pushUnrecognizedPropertiesWarning(warnings, props) { - if (props.length) { - warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`); - } -} -const ANY_STATE = '*'; -function parseTransitionExpr(transitionValue, errors) { - const expressions = []; - if (typeof transitionValue == 'string') { - transitionValue.split(/\s*,\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors)); - } else { - expressions.push(transitionValue); - } - return expressions; -} -function parseInnerTransitionStr(eventStr, expressions, errors) { - if (eventStr[0] == ':') { - const result = parseAnimationAlias(eventStr, errors); - if (typeof result == 'function') { - expressions.push(result); - return; - } - eventStr = result; - } - const match = eventStr.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/); - if (match == null || match.length < 4) { - errors.push(invalidExpression(eventStr)); - return expressions; - } - const fromState = match[1]; - const separator = match[2]; - const toState = match[3]; - expressions.push(makeLambdaFromStates(fromState, toState)); - const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE; - if (separator[0] == '<' && !isFullAnyStateExpr) { - expressions.push(makeLambdaFromStates(toState, fromState)); - } -} -function parseAnimationAlias(alias, errors) { - switch (alias) { - case ':enter': - return 'void => *'; - case ':leave': - return '* => void'; - case ':increment': - return (fromState, toState) => parseFloat(toState) > parseFloat(fromState); - case ':decrement': - return (fromState, toState) => parseFloat(toState) < parseFloat(fromState); - default: - errors.push(invalidTransitionAlias(alias)); - return '* => *'; - } -} -// DO NOT REFACTOR ... keep the follow set instantiations -// with the values intact (closure compiler for some reason -// removes follow-up lines that add the values outside of -// the constructor... -const TRUE_BOOLEAN_VALUES = new Set(['true', '1']); -const FALSE_BOOLEAN_VALUES = new Set(['false', '0']); -function makeLambdaFromStates(lhs, rhs) { - const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs); - const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs); - return (fromState, toState) => { - let lhsMatch = lhs == ANY_STATE || lhs == fromState; - let rhsMatch = rhs == ANY_STATE || rhs == toState; - if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') { - lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs); - } - if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') { - rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs); - } - return lhsMatch && rhsMatch; - }; -} -const SELF_TOKEN = ':self'; -const SELF_TOKEN_REGEX = new RegExp(`\s*${SELF_TOKEN}\s*,?`, 'g'); -/* - * [Validation] - * The visitor code below will traverse the animation AST generated by the animation verb functions - * (the output is a tree of objects) and attempt to perform a series of validations on the data. The - * following corner-cases will be validated: - * - * 1. Overlap of animations - * Given that a CSS property cannot be animated in more than one place at the same time, it's - * important that this behavior is detected and validated. The way in which this occurs is that - * each time a style property is examined, a string-map containing the property will be updated with - * the start and end times for when the property is used within an animation step. - * - * If there are two or more parallel animations that are currently running (these are invoked by the - * group()) on the same element then the validator will throw an error. Since the start/end timing - * values are collected for each property then if the current animation step is animating the same - * property and its timing values fall anywhere into the window of time that the property is - * currently being animated within then this is what causes an error. - * - * 2. Timing values - * The validator will validate to see if a timing value of `duration delay easing` or - * `durationNumber` is valid or not. - * - * (note that upon validation the code below will replace the timing data with an object containing - * {duration,delay,easing}. - * - * 3. Offset Validation - * Each of the style() calls are allowed to have an offset value when placed inside of keyframes(). - * Offsets within keyframes() are considered valid when: - * - * - No offsets are used at all - * - Each style() entry contains an offset value - * - Each offset is between 0 and 1 - * - Each offset is greater to or equal than the previous one - * - * Otherwise an error will be thrown. - */ -function buildAnimationAst(driver, metadata, errors, warnings) { - return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings); -} -const ROOT_SELECTOR = ''; -class AnimationAstBuilderVisitor { - constructor(_driver) { - this._driver = _driver; - } - build(metadata, errors, warnings) { - const context = new AnimationAstBuilderContext(errors); - this._resetContextStyleTimingState(context); - const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context); - if (typeof ngDevMode === 'undefined' || ngDevMode) { - if (context.unsupportedCSSPropertiesFound.size) { - pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]); - } - } - return ast; - } - _resetContextStyleTimingState(context) { - context.currentQuerySelector = ROOT_SELECTOR; - context.collectedStyles = new Map(); - context.collectedStyles.set(ROOT_SELECTOR, new Map()); - context.currentTime = 0; - } - visitTrigger(metadata, context) { - let queryCount = context.queryCount = 0; - let depCount = context.depCount = 0; - const states = []; - const transitions = []; - if (metadata.name.charAt(0) == '@') { - context.errors.push(invalidTrigger()); - } - metadata.definitions.forEach(def => { - this._resetContextStyleTimingState(context); - if (def.type == 0 /* AnimationMetadataType.State */) { - const stateDef = def; - const name = stateDef.name; - name.toString().split(/\s*,\s*/).forEach(n => { - stateDef.name = n; - states.push(this.visitState(stateDef, context)); - }); - stateDef.name = name; - } else if (def.type == 1 /* AnimationMetadataType.Transition */) { - const transition = this.visitTransition(def, context); - queryCount += transition.queryCount; - depCount += transition.depCount; - transitions.push(transition); - } else { - context.errors.push(invalidDefinition()); - } - }); - return { - type: 7 /* AnimationMetadataType.Trigger */, - name: metadata.name, - states, - transitions, - queryCount, - depCount, - options: null - }; - } - visitState(metadata, context) { - const styleAst = this.visitStyle(metadata.styles, context); - const astParams = metadata.options && metadata.options.params || null; - if (styleAst.containsDynamicStyles) { - const missingSubs = new Set(); - const params = astParams || {}; - styleAst.styles.forEach(style => { - if (style instanceof Map) { - style.forEach(value => { - extractStyleParams(value).forEach(sub => { - if (!params.hasOwnProperty(sub)) { - missingSubs.add(sub); - } - }); - }); - } - }); - if (missingSubs.size) { - const missingSubsArr = iteratorToArray(missingSubs.values()); - context.errors.push(invalidState(metadata.name, missingSubsArr)); - } - } - return { - type: 0 /* AnimationMetadataType.State */, - name: metadata.name, - style: styleAst, - options: astParams ? { - params: astParams - } : null - }; - } - visitTransition(metadata, context) { - context.queryCount = 0; - context.depCount = 0; - const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context); - const matchers = parseTransitionExpr(metadata.expr, context.errors); - return { - type: 1 /* AnimationMetadataType.Transition */, - matchers, - animation, - queryCount: context.queryCount, - depCount: context.depCount, - options: normalizeAnimationOptions(metadata.options) - }; - } - visitSequence(metadata, context) { - return { - type: 2 /* AnimationMetadataType.Sequence */, - steps: metadata.steps.map(s => visitDslNode(this, s, context)), - options: normalizeAnimationOptions(metadata.options) - }; - } - visitGroup(metadata, context) { - const currentTime = context.currentTime; - let furthestTime = 0; - const steps = metadata.steps.map(step => { - context.currentTime = currentTime; - const innerAst = visitDslNode(this, step, context); - furthestTime = Math.max(furthestTime, context.currentTime); - return innerAst; - }); - context.currentTime = furthestTime; - return { - type: 3 /* AnimationMetadataType.Group */, - steps, - options: normalizeAnimationOptions(metadata.options) - }; - } - visitAnimate(metadata, context) { - const timingAst = constructTimingAst(metadata.timings, context.errors); - context.currentAnimateTimings = timingAst; - let styleAst; - let styleMetadata = metadata.styles ? metadata.styles : (0,_angular_animations__WEBPACK_IMPORTED_MODULE_1__.style)({}); - if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) { - styleAst = this.visitKeyframes(styleMetadata, context); - } else { - let styleMetadata = metadata.styles; - let isEmpty = false; - if (!styleMetadata) { - isEmpty = true; - const newStyleData = {}; - if (timingAst.easing) { - newStyleData['easing'] = timingAst.easing; - } - styleMetadata = (0,_angular_animations__WEBPACK_IMPORTED_MODULE_1__.style)(newStyleData); - } - context.currentTime += timingAst.duration + timingAst.delay; - const _styleAst = this.visitStyle(styleMetadata, context); - _styleAst.isEmptyStep = isEmpty; - styleAst = _styleAst; - } - context.currentAnimateTimings = null; - return { - type: 4 /* AnimationMetadataType.Animate */, - timings: timingAst, - style: styleAst, - options: null - }; - } - visitStyle(metadata, context) { - const ast = this._makeStyleAst(metadata, context); - this._validateStyleAst(ast, context); - return ast; - } - _makeStyleAst(metadata, context) { - const styles = []; - const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles]; - for (let styleTuple of metadataStyles) { - if (typeof styleTuple === 'string') { - if (styleTuple === _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE) { - styles.push(styleTuple); - } else { - context.errors.push(invalidStyleValue(styleTuple)); - } - } else { - styles.push(convertToMap(styleTuple)); - } - } - let containsDynamicStyles = false; - let collectedEasing = null; - styles.forEach(styleData => { - if (styleData instanceof Map) { - if (styleData.has('easing')) { - collectedEasing = styleData.get('easing'); - styleData.delete('easing'); - } - if (!containsDynamicStyles) { - for (let value of styleData.values()) { - if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) { - containsDynamicStyles = true; - break; - } - } - } - } - }); - return { - type: 6 /* AnimationMetadataType.Style */, - styles, - easing: collectedEasing, - offset: metadata.offset, - containsDynamicStyles, - options: null - }; - } - _validateStyleAst(ast, context) { - const timings = context.currentAnimateTimings; - let endTime = context.currentTime; - let startTime = context.currentTime; - if (timings && startTime > 0) { - startTime -= timings.duration + timings.delay; - } - ast.styles.forEach(tuple => { - if (typeof tuple === 'string') return; - tuple.forEach((value, prop) => { - if (typeof ngDevMode === 'undefined' || ngDevMode) { - if (!this._driver.validateStyleProperty(prop)) { - tuple.delete(prop); - context.unsupportedCSSPropertiesFound.add(prop); - return; - } - } - // This is guaranteed to have a defined Map at this querySelector location making it - // safe to add the assertion here. It is set as a default empty map in prior methods. - const collectedStyles = context.collectedStyles.get(context.currentQuerySelector); - const collectedEntry = collectedStyles.get(prop); - let updateCollectedStyle = true; - if (collectedEntry) { - if (startTime != endTime && startTime >= collectedEntry.startTime && endTime <= collectedEntry.endTime) { - context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime)); - updateCollectedStyle = false; - } - // we always choose the smaller start time value since we - // want to have a record of the entire animation window where - // the style property is being animated in between - startTime = collectedEntry.startTime; - } - if (updateCollectedStyle) { - collectedStyles.set(prop, { - startTime, - endTime - }); - } - if (context.options) { - validateStyleParams(value, context.options, context.errors); - } - }); - }); - } - visitKeyframes(metadata, context) { - const ast = { - type: 5 /* AnimationMetadataType.Keyframes */, - styles: [], - options: null - }; - if (!context.currentAnimateTimings) { - context.errors.push(invalidKeyframes()); - return ast; - } - const MAX_KEYFRAME_OFFSET = 1; - let totalKeyframesWithOffsets = 0; - const offsets = []; - let offsetsOutOfOrder = false; - let keyframesOutOfRange = false; - let previousOffset = 0; - const keyframes = metadata.steps.map(styles => { - const style = this._makeStyleAst(styles, context); - let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles); - let offset = 0; - if (offsetVal != null) { - totalKeyframesWithOffsets++; - offset = style.offset = offsetVal; - } - keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1; - offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset; - previousOffset = offset; - offsets.push(offset); - return style; - }); - if (keyframesOutOfRange) { - context.errors.push(invalidOffset()); - } - if (offsetsOutOfOrder) { - context.errors.push(keyframeOffsetsOutOfOrder()); - } - const length = metadata.steps.length; - let generatedOffset = 0; - if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) { - context.errors.push(keyframesMissingOffsets()); - } else if (totalKeyframesWithOffsets == 0) { - generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1); - } - const limit = length - 1; - const currentTime = context.currentTime; - const currentAnimateTimings = context.currentAnimateTimings; - const animateDuration = currentAnimateTimings.duration; - keyframes.forEach((kf, i) => { - const offset = generatedOffset > 0 ? i == limit ? 1 : generatedOffset * i : offsets[i]; - const durationUpToThisFrame = offset * animateDuration; - context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame; - currentAnimateTimings.duration = durationUpToThisFrame; - this._validateStyleAst(kf, context); - kf.offset = offset; - ast.styles.push(kf); - }); - return ast; - } - visitReference(metadata, context) { - return { - type: 8 /* AnimationMetadataType.Reference */, - animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context), - options: normalizeAnimationOptions(metadata.options) - }; - } - visitAnimateChild(metadata, context) { - context.depCount++; - return { - type: 9 /* AnimationMetadataType.AnimateChild */, - options: normalizeAnimationOptions(metadata.options) - }; - } - visitAnimateRef(metadata, context) { - return { - type: 10 /* AnimationMetadataType.AnimateRef */, - animation: this.visitReference(metadata.animation, context), - options: normalizeAnimationOptions(metadata.options) - }; - } - visitQuery(metadata, context) { - const parentSelector = context.currentQuerySelector; - const options = metadata.options || {}; - context.queryCount++; - context.currentQuery = metadata; - const [selector, includeSelf] = normalizeSelector(metadata.selector); - context.currentQuerySelector = parentSelector.length ? parentSelector + ' ' + selector : selector; - getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map()); - const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context); - context.currentQuery = null; - context.currentQuerySelector = parentSelector; - return { - type: 11 /* AnimationMetadataType.Query */, - selector, - limit: options.limit || 0, - optional: !!options.optional, - includeSelf, - animation, - originalSelector: metadata.selector, - options: normalizeAnimationOptions(metadata.options) - }; - } - visitStagger(metadata, context) { - if (!context.currentQuery) { - context.errors.push(invalidStagger()); - } - const timings = metadata.timings === 'full' ? { - duration: 0, - delay: 0, - easing: 'full' - } : resolveTiming(metadata.timings, context.errors, true); - return { - type: 12 /* AnimationMetadataType.Stagger */, - animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context), - timings, - options: null - }; - } -} -function normalizeSelector(selector) { - const hasAmpersand = selector.split(/\s*,\s*/).find(token => token == SELF_TOKEN) ? true : false; - if (hasAmpersand) { - selector = selector.replace(SELF_TOKEN_REGEX, ''); - } - // Note: the :enter and :leave aren't normalized here since those - // selectors are filled in at runtime during timeline building - selector = selector.replace(/@\*/g, NG_TRIGGER_SELECTOR).replace(/@\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1)).replace(/:animating/g, NG_ANIMATING_SELECTOR); - return [selector, hasAmpersand]; -} -function normalizeParams(obj) { - return obj ? copyObj(obj) : null; -} -class AnimationAstBuilderContext { - constructor(errors) { - this.errors = errors; - this.queryCount = 0; - this.depCount = 0; - this.currentTransition = null; - this.currentQuery = null; - this.currentQuerySelector = null; - this.currentAnimateTimings = null; - this.currentTime = 0; - this.collectedStyles = new Map(); - this.options = null; - this.unsupportedCSSPropertiesFound = new Set(); - } -} -function consumeOffset(styles) { - if (typeof styles == 'string') return null; - let offset = null; - if (Array.isArray(styles)) { - styles.forEach(styleTuple => { - if (styleTuple instanceof Map && styleTuple.has('offset')) { - const obj = styleTuple; - offset = parseFloat(obj.get('offset')); - obj.delete('offset'); - } - }); - } else if (styles instanceof Map && styles.has('offset')) { - const obj = styles; - offset = parseFloat(obj.get('offset')); - obj.delete('offset'); - } - return offset; -} -function constructTimingAst(value, errors) { - if (value.hasOwnProperty('duration')) { - return value; - } - if (typeof value == 'number') { - const duration = resolveTiming(value, errors).duration; - return makeTimingAst(duration, 0, ''); - } - const strValue = value; - const isDynamic = strValue.split(/\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{'); - if (isDynamic) { - const ast = makeTimingAst(0, 0, ''); - ast.dynamic = true; - ast.strValue = strValue; - return ast; - } - const timings = resolveTiming(strValue, errors); - return makeTimingAst(timings.duration, timings.delay, timings.easing); -} -function normalizeAnimationOptions(options) { - if (options) { - options = copyObj(options); - if (options['params']) { - options['params'] = normalizeParams(options['params']); - } - } else { - options = {}; - } - return options; -} -function makeTimingAst(duration, delay, easing) { - return { - duration, - delay, - easing - }; -} -function createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) { - return { - type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */, - element, - keyframes, - preStyleProps, - postStyleProps, - duration, - delay, - totalTime: duration + delay, - easing, - subTimeline - }; -} -class ElementInstructionMap { - constructor() { - this._map = new Map(); - } - get(element) { - return this._map.get(element) || []; - } - append(element, instructions) { - let existingInstructions = this._map.get(element); - if (!existingInstructions) { - this._map.set(element, existingInstructions = []); - } - existingInstructions.push(...instructions); - } - has(element) { - return this._map.has(element); - } - clear() { - this._map.clear(); - } -} -const ONE_FRAME_IN_MILLISECONDS = 1; -const ENTER_TOKEN = ':enter'; -const ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g'); -const LEAVE_TOKEN = ':leave'; -const LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g'); -/* - * The code within this file aims to generate web-animations-compatible keyframes from Angular's - * animation DSL code. - * - * The code below will be converted from: - * - * ``` - * sequence([ - * style({ opacity: 0 }), - * animate(1000, style({ opacity: 0 })) - * ]) - * ``` - * - * To: - * ``` - * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }] - * duration = 1000 - * delay = 0 - * easing = '' - * ``` - * - * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a - * combination of AST traversal and merge-sort-like algorithms are used. - * - * [AST Traversal] - * Each of the animation verbs, when executed, will return an string-map object representing what - * type of action it is (style, animate, group, etc...) and the data associated with it. This means - * that when functional composition mix of these functions is evaluated (like in the example above) - * then it will end up producing a tree of objects representing the animation itself. - * - * When this animation object tree is processed by the visitor code below it will visit each of the - * verb statements within the visitor. And during each visit it will build the context of the - * animation keyframes by interacting with the `TimelineBuilder`. - * - * [TimelineBuilder] - * This class is responsible for tracking the styles and building a series of keyframe objects for a - * timeline between a start and end time. The builder starts off with an initial timeline and each - * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a - * `sequence()` then it will generate a sub timeline for each step as well as a new one after - * they are complete. - * - * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub - * timeline was created (based on one of the cases above) then the parent timeline will attempt to - * merge the styles used within the sub timelines into itself (only with group() this will happen). - * This happens with a merge operation (much like how the merge works in mergeSort) and it will only - * copy the most recently used styles from the sub timelines into the parent timeline. This ensures - * that if the styles are used later on in another phase of the animation then they will be the most - * up-to-date values. - * - * [How Missing Styles Are Updated] - * Each timeline has a `backFill` property which is responsible for filling in new styles into - * already processed keyframes if a new style shows up later within the animation sequence. - * - * ``` - * sequence([ - * style({ width: 0 }), - * animate(1000, style({ width: 100 })), - * animate(1000, style({ width: 200 })), - * animate(1000, style({ width: 300 })) - * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere - * else - * ]) - * ``` - * - * What is happening here is that the `height` value is added later in the sequence, but is missing - * from all previous animation steps. Therefore when a keyframe is created it would also be missing - * from all previous keyframes up until where it is first used. For the timeline keyframe generation - * to properly fill in the style it will place the previous value (the value from the parent - * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts - * handles propagating that backfill map to the styles object. - * - * When a sub-timeline is created it will have its own backFill property. This is done so that - * styles present within the sub-timeline do not accidentally seep into the previous/future timeline - * keyframes - * - * [Validation] - * The code in this file is not responsible for validation. That functionality happens with within - * the `AnimationValidatorVisitor` code. - */ -function buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) { - return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors); -} -class AnimationTimelineBuilderVisitor { - buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) { - subInstructions = subInstructions || new ElementInstructionMap(); - const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []); - context.options = options; - const delay = options.delay ? resolveTimingValue(options.delay) : 0; - context.currentTimeline.delayNextStep(delay); - context.currentTimeline.setStyles([startingStyles], null, context.errors, options); - visitDslNode(this, ast, context); - // this checks to see if an actual animation happened - const timelines = context.timelines.filter(timeline => timeline.containsAnimation()); - // note: we just want to apply the final styles for the rootElement, so we do not - // just apply the styles to the last timeline but the last timeline which - // element is the root one (basically `*`-styles are replaced with the actual - // state style values only for the root element) - if (timelines.length && finalStyles.size) { - let lastRootTimeline; - for (let i = timelines.length - 1; i >= 0; i--) { - const timeline = timelines[i]; - if (timeline.element === rootElement) { - lastRootTimeline = timeline; - break; - } - } - if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) { - lastRootTimeline.setStyles([finalStyles], null, context.errors, options); - } - } - return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) : [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)]; - } - visitTrigger(ast, context) { - // these values are not visited in this AST - } - visitState(ast, context) { - // these values are not visited in this AST - } - visitTransition(ast, context) { - // these values are not visited in this AST - } - visitAnimateChild(ast, context) { - const elementInstructions = context.subInstructions.get(context.element); - if (elementInstructions) { - const innerContext = context.createSubContext(ast.options); - const startTime = context.currentTimeline.currentTime; - const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options); - if (startTime != endTime) { - // we do this on the upper context because we created a sub context for - // the sub child animations - context.transformIntoNewTimeline(endTime); - } - } - context.previousNode = ast; - } - visitAnimateRef(ast, context) { - const innerContext = context.createSubContext(ast.options); - innerContext.transformIntoNewTimeline(); - this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext); - this.visitReference(ast.animation, innerContext); - context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime); - context.previousNode = ast; - } - _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) { - for (const animationRefOptions of animationsRefsOptions) { - const animationDelay = animationRefOptions?.delay; - if (animationDelay) { - const animationDelayValue = typeof animationDelay === 'number' ? animationDelay : resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors)); - innerContext.delayNextStep(animationDelayValue); - } - } - } - _visitSubInstructions(instructions, context, options) { - const startTime = context.currentTimeline.currentTime; - let furthestTime = startTime; - // this is a special-case for when a user wants to skip a sub - // animation from being fired entirely. - const duration = options.duration != null ? resolveTimingValue(options.duration) : null; - const delay = options.delay != null ? resolveTimingValue(options.delay) : null; - if (duration !== 0) { - instructions.forEach(instruction => { - const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay); - furthestTime = Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay); - }); - } - return furthestTime; - } - visitReference(ast, context) { - context.updateOptions(ast.options, true); - visitDslNode(this, ast.animation, context); - context.previousNode = ast; - } - visitSequence(ast, context) { - const subContextCount = context.subContextCount; - let ctx = context; - const options = ast.options; - if (options && (options.params || options.delay)) { - ctx = context.createSubContext(options); - ctx.transformIntoNewTimeline(); - if (options.delay != null) { - if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) { - ctx.currentTimeline.snapshotCurrentStyles(); - ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE; - } - const delay = resolveTimingValue(options.delay); - ctx.delayNextStep(delay); - } - } - if (ast.steps.length) { - ast.steps.forEach(s => visitDslNode(this, s, ctx)); - // this is here just in case the inner steps only contain or end with a style() call - ctx.currentTimeline.applyStylesToKeyframe(); - // this means that some animation function within the sequence - // ended up creating a sub timeline (which means the current - // timeline cannot overlap with the contents of the sequence) - if (ctx.subContextCount > subContextCount) { - ctx.transformIntoNewTimeline(); - } - } - context.previousNode = ast; - } - visitGroup(ast, context) { - const innerTimelines = []; - let furthestTime = context.currentTimeline.currentTime; - const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0; - ast.steps.forEach(s => { - const innerContext = context.createSubContext(ast.options); - if (delay) { - innerContext.delayNextStep(delay); - } - visitDslNode(this, s, innerContext); - furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime); - innerTimelines.push(innerContext.currentTimeline); - }); - // this operation is run after the AST loop because otherwise - // if the parent timeline's collected styles were updated then - // it would pass in invalid data into the new-to-be forked items - innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline)); - context.transformIntoNewTimeline(furthestTime); - context.previousNode = ast; - } - _visitTiming(ast, context) { - if (ast.dynamic) { - const strValue = ast.strValue; - const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue; - return resolveTiming(timingValue, context.errors); - } else { - return { - duration: ast.duration, - delay: ast.delay, - easing: ast.easing - }; - } - } - visitAnimate(ast, context) { - const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context); - const timeline = context.currentTimeline; - if (timings.delay) { - context.incrementTime(timings.delay); - timeline.snapshotCurrentStyles(); - } - const style = ast.style; - if (style.type == 5 /* AnimationMetadataType.Keyframes */) { - this.visitKeyframes(style, context); - } else { - context.incrementTime(timings.duration); - this.visitStyle(style, context); - timeline.applyStylesToKeyframe(); - } - context.currentAnimateTimings = null; - context.previousNode = ast; - } - visitStyle(ast, context) { - const timeline = context.currentTimeline; - const timings = context.currentAnimateTimings; - // this is a special case for when a style() call - // directly follows an animate() call (but not inside of an animate() call) - if (!timings && timeline.hasCurrentStyleProperties()) { - timeline.forwardFrame(); - } - const easing = timings && timings.easing || ast.easing; - if (ast.isEmptyStep) { - timeline.applyEmptyStep(easing); - } else { - timeline.setStyles(ast.styles, easing, context.errors, context.options); - } - context.previousNode = ast; - } - visitKeyframes(ast, context) { - const currentAnimateTimings = context.currentAnimateTimings; - const startTime = context.currentTimeline.duration; - const duration = currentAnimateTimings.duration; - const innerContext = context.createSubContext(); - const innerTimeline = innerContext.currentTimeline; - innerTimeline.easing = currentAnimateTimings.easing; - ast.styles.forEach(step => { - const offset = step.offset || 0; - innerTimeline.forwardTime(offset * duration); - innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options); - innerTimeline.applyStylesToKeyframe(); - }); - // this will ensure that the parent timeline gets all the styles from - // the child even if the new timeline below is not used - context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline); - // we do this because the window between this timeline and the sub timeline - // should ensure that the styles within are exactly the same as they were before - context.transformIntoNewTimeline(startTime + duration); - context.previousNode = ast; - } - visitQuery(ast, context) { - // in the event that the first step before this is a style step we need - // to ensure the styles are applied before the children are animated - const startTime = context.currentTimeline.currentTime; - const options = ast.options || {}; - const delay = options.delay ? resolveTimingValue(options.delay) : 0; - if (delay && (context.previousNode.type === 6 /* AnimationMetadataType.Style */ || startTime == 0 && context.currentTimeline.hasCurrentStyleProperties())) { - context.currentTimeline.snapshotCurrentStyles(); - context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE; - } - let furthestTime = startTime; - const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors); - context.currentQueryTotal = elms.length; - let sameElementTimeline = null; - elms.forEach((element, i) => { - context.currentQueryIndex = i; - const innerContext = context.createSubContext(ast.options, element); - if (delay) { - innerContext.delayNextStep(delay); - } - if (element === context.element) { - sameElementTimeline = innerContext.currentTimeline; - } - visitDslNode(this, ast.animation, innerContext); - // this is here just incase the inner steps only contain or end - // with a style() call (which is here to signal that this is a preparatory - // call to style an element before it is animated again) - innerContext.currentTimeline.applyStylesToKeyframe(); - const endTime = innerContext.currentTimeline.currentTime; - furthestTime = Math.max(furthestTime, endTime); - }); - context.currentQueryIndex = 0; - context.currentQueryTotal = 0; - context.transformIntoNewTimeline(furthestTime); - if (sameElementTimeline) { - context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline); - context.currentTimeline.snapshotCurrentStyles(); - } - context.previousNode = ast; - } - visitStagger(ast, context) { - const parentContext = context.parentContext; - const tl = context.currentTimeline; - const timings = ast.timings; - const duration = Math.abs(timings.duration); - const maxTime = duration * (context.currentQueryTotal - 1); - let delay = duration * context.currentQueryIndex; - let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing; - switch (staggerTransformer) { - case 'reverse': - delay = maxTime - delay; - break; - case 'full': - delay = parentContext.currentStaggerTime; - break; - } - const timeline = context.currentTimeline; - if (delay) { - timeline.delayNextStep(delay); - } - const startingTime = timeline.currentTime; - visitDslNode(this, ast.animation, context); - context.previousNode = ast; - // time = duration + delay - // the reason why this computation is so complex is because - // the inner timeline may either have a delay value or a stretched - // keyframe depending on if a subtimeline is not used or is used. - parentContext.currentStaggerTime = tl.currentTime - startingTime + (tl.startTime - parentContext.currentTimeline.startTime); - } -} -const DEFAULT_NOOP_PREVIOUS_NODE = {}; -class AnimationTimelineContext { - constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) { - this._driver = _driver; - this.element = element; - this.subInstructions = subInstructions; - this._enterClassName = _enterClassName; - this._leaveClassName = _leaveClassName; - this.errors = errors; - this.timelines = timelines; - this.parentContext = null; - this.currentAnimateTimings = null; - this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE; - this.subContextCount = 0; - this.options = {}; - this.currentQueryIndex = 0; - this.currentQueryTotal = 0; - this.currentStaggerTime = 0; - this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0); - timelines.push(this.currentTimeline); - } - get params() { - return this.options.params; - } - updateOptions(options, skipIfExists) { - if (!options) return; - const newOptions = options; - let optionsToUpdate = this.options; - // NOTE: this will get patched up when other animation methods support duration overrides - if (newOptions.duration != null) { - optionsToUpdate.duration = resolveTimingValue(newOptions.duration); - } - if (newOptions.delay != null) { - optionsToUpdate.delay = resolveTimingValue(newOptions.delay); - } - const newParams = newOptions.params; - if (newParams) { - let paramsToUpdate = optionsToUpdate.params; - if (!paramsToUpdate) { - paramsToUpdate = this.options.params = {}; - } - Object.keys(newParams).forEach(name => { - if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) { - paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors); - } - }); - } - } - _copyOptions() { - const options = {}; - if (this.options) { - const oldParams = this.options.params; - if (oldParams) { - const params = options['params'] = {}; - Object.keys(oldParams).forEach(name => { - params[name] = oldParams[name]; - }); - } - } - return options; - } - createSubContext(options = null, element, newTime) { - const target = element || this.element; - const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0)); - context.previousNode = this.previousNode; - context.currentAnimateTimings = this.currentAnimateTimings; - context.options = this._copyOptions(); - context.updateOptions(options); - context.currentQueryIndex = this.currentQueryIndex; - context.currentQueryTotal = this.currentQueryTotal; - context.parentContext = this; - this.subContextCount++; - return context; - } - transformIntoNewTimeline(newTime) { - this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE; - this.currentTimeline = this.currentTimeline.fork(this.element, newTime); - this.timelines.push(this.currentTimeline); - return this.currentTimeline; - } - appendInstructionToTimeline(instruction, duration, delay) { - const updatedTimings = { - duration: duration != null ? duration : instruction.duration, - delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay, - easing: '' - }; - const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe); - this.timelines.push(builder); - return updatedTimings; - } - incrementTime(time) { - this.currentTimeline.forwardTime(this.currentTimeline.duration + time); - } - delayNextStep(delay) { - // negative delays are not yet supported - if (delay > 0) { - this.currentTimeline.delayNextStep(delay); - } - } - invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) { - let results = []; - if (includeSelf) { - results.push(this.element); - } - if (selector.length > 0) { - // only if :self is used then the selector can be empty - selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName); - selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName); - const multi = limit != 1; - let elements = this._driver.query(this.element, selector, multi); - if (limit !== 0) { - elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) : elements.slice(0, limit); - } - results.push(...elements); - } - if (!optional && results.length == 0) { - errors.push(invalidQuery(originalSelector)); - } - return results; - } -} -class TimelineBuilder { - constructor(_driver, element, startTime, _elementTimelineStylesLookup) { - this._driver = _driver; - this.element = element; - this.startTime = startTime; - this._elementTimelineStylesLookup = _elementTimelineStylesLookup; - this.duration = 0; - this.easing = null; - this._previousKeyframe = new Map(); - this._currentKeyframe = new Map(); - this._keyframes = new Map(); - this._styleSummary = new Map(); - this._localTimelineStyles = new Map(); - this._pendingStyles = new Map(); - this._backFill = new Map(); - this._currentEmptyStepKeyframe = null; - if (!this._elementTimelineStylesLookup) { - this._elementTimelineStylesLookup = new Map(); - } - this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element); - if (!this._globalTimelineStyles) { - this._globalTimelineStyles = this._localTimelineStyles; - this._elementTimelineStylesLookup.set(element, this._localTimelineStyles); - } - this._loadKeyframe(); - } - containsAnimation() { - switch (this._keyframes.size) { - case 0: - return false; - case 1: - return this.hasCurrentStyleProperties(); - default: - return true; - } - } - hasCurrentStyleProperties() { - return this._currentKeyframe.size > 0; - } - get currentTime() { - return this.startTime + this.duration; - } - delayNextStep(delay) { - // in the event that a style() step is placed right before a stagger() - // and that style() step is the very first style() value in the animation - // then we need to make a copy of the keyframe [0, copy, 1] so that the delay - // properly applies the style() values to work with the stagger... - const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size; - if (this.duration || hasPreStyleStep) { - this.forwardTime(this.currentTime + delay); - if (hasPreStyleStep) { - this.snapshotCurrentStyles(); - } - } else { - this.startTime += delay; - } - } - fork(element, currentTime) { - this.applyStylesToKeyframe(); - return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup); - } - _loadKeyframe() { - if (this._currentKeyframe) { - this._previousKeyframe = this._currentKeyframe; - } - this._currentKeyframe = this._keyframes.get(this.duration); - if (!this._currentKeyframe) { - this._currentKeyframe = new Map(); - this._keyframes.set(this.duration, this._currentKeyframe); - } - } - forwardFrame() { - this.duration += ONE_FRAME_IN_MILLISECONDS; - this._loadKeyframe(); - } - forwardTime(time) { - this.applyStylesToKeyframe(); - this.duration = time; - this._loadKeyframe(); - } - _updateStyle(prop, value) { - this._localTimelineStyles.set(prop, value); - this._globalTimelineStyles.set(prop, value); - this._styleSummary.set(prop, { - time: this.currentTime, - value - }); - } - allowOnlyTimelineStyles() { - return this._currentEmptyStepKeyframe !== this._currentKeyframe; - } - applyEmptyStep(easing) { - if (easing) { - this._previousKeyframe.set('easing', easing); - } - // special case for animate(duration): - // all missing styles are filled with a `*` value then - // if any destination styles are filled in later on the same - // keyframe then they will override the overridden styles - // We use `_globalTimelineStyles` here because there may be - // styles in previous keyframes that are not present in this timeline - for (let [prop, value] of this._globalTimelineStyles) { - this._backFill.set(prop, value || _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE); - this._currentKeyframe.set(prop, _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE); - } - this._currentEmptyStepKeyframe = this._currentKeyframe; - } - setStyles(input, easing, errors, options) { - if (easing) { - this._previousKeyframe.set('easing', easing); - } - const params = options && options.params || {}; - const styles = flattenStyles(input, this._globalTimelineStyles); - for (let [prop, value] of styles) { - const val = interpolateParams(value, params, errors); - this._pendingStyles.set(prop, val); - if (!this._localTimelineStyles.has(prop)) { - this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE); - } - this._updateStyle(prop, val); - } - } - applyStylesToKeyframe() { - if (this._pendingStyles.size == 0) return; - this._pendingStyles.forEach((val, prop) => { - this._currentKeyframe.set(prop, val); - }); - this._pendingStyles.clear(); - this._localTimelineStyles.forEach((val, prop) => { - if (!this._currentKeyframe.has(prop)) { - this._currentKeyframe.set(prop, val); - } - }); - } - snapshotCurrentStyles() { - for (let [prop, val] of this._localTimelineStyles) { - this._pendingStyles.set(prop, val); - this._updateStyle(prop, val); - } - } - getFinalKeyframe() { - return this._keyframes.get(this.duration); - } - get properties() { - const properties = []; - for (let prop in this._currentKeyframe) { - properties.push(prop); - } - return properties; - } - mergeTimelineCollectedStyles(timeline) { - timeline._styleSummary.forEach((details1, prop) => { - const details0 = this._styleSummary.get(prop); - if (!details0 || details1.time > details0.time) { - this._updateStyle(prop, details1.value); - } - }); - } - buildKeyframes() { - this.applyStylesToKeyframe(); - const preStyleProps = new Set(); - const postStyleProps = new Set(); - const isEmpty = this._keyframes.size === 1 && this.duration === 0; - let finalKeyframes = []; - this._keyframes.forEach((keyframe, time) => { - const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill); - finalKeyframe.forEach((value, prop) => { - if (value === _angular_animations__WEBPACK_IMPORTED_MODULE_1__["ɵPRE_STYLE"]) { - preStyleProps.add(prop); - } else if (value === _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE) { - postStyleProps.add(prop); - } - }); - if (!isEmpty) { - finalKeyframe.set('offset', time / this.duration); - } - finalKeyframes.push(finalKeyframe); - }); - const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : []; - const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : []; - // special case for a 0-second animation (which is designed just to place styles onscreen) - if (isEmpty) { - const kf0 = finalKeyframes[0]; - const kf1 = new Map(kf0); - kf0.set('offset', 0); - kf1.set('offset', 1); - finalKeyframes = [kf0, kf1]; - } - return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false); - } -} -class SubTimelineBuilder extends TimelineBuilder { - constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) { - super(driver, element, timings.delay); - this.keyframes = keyframes; - this.preStyleProps = preStyleProps; - this.postStyleProps = postStyleProps; - this._stretchStartingKeyframe = _stretchStartingKeyframe; - this.timings = { - duration: timings.duration, - delay: timings.delay, - easing: timings.easing - }; - } - containsAnimation() { - return this.keyframes.length > 1; - } - buildKeyframes() { - let keyframes = this.keyframes; - let { - delay, - duration, - easing - } = this.timings; - if (this._stretchStartingKeyframe && delay) { - const newKeyframes = []; - const totalTime = duration + delay; - const startingGap = delay / totalTime; - // the original starting keyframe now starts once the delay is done - const newFirstKeyframe = copyStyles(keyframes[0]); - newFirstKeyframe.set('offset', 0); - newKeyframes.push(newFirstKeyframe); - const oldFirstKeyframe = copyStyles(keyframes[0]); - oldFirstKeyframe.set('offset', roundOffset(startingGap)); - newKeyframes.push(oldFirstKeyframe); - /* - When the keyframe is stretched then it means that the delay before the animation - starts is gone. Instead the first keyframe is placed at the start of the animation - and it is then copied to where it starts when the original delay is over. This basically - means nothing animates during that delay, but the styles are still rendered. For this - to work the original offset values that exist in the original keyframes must be "warped" - so that they can take the new keyframe + delay into account. - delay=1000, duration=1000, keyframes = 0 .5 1 - turns into - delay=0, duration=2000, keyframes = 0 .33 .66 1 - */ - // offsets between 1 ... n -1 are all warped by the keyframe stretch - const limit = keyframes.length - 1; - for (let i = 1; i <= limit; i++) { - let kf = copyStyles(keyframes[i]); - const oldOffset = kf.get('offset'); - const timeAtKeyframe = delay + oldOffset * duration; - kf.set('offset', roundOffset(timeAtKeyframe / totalTime)); - newKeyframes.push(kf); - } - // the new starting keyframe should be added at the start - duration = totalTime; - delay = 0; - easing = ''; - keyframes = newKeyframes; - } - return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true); - } -} -function roundOffset(offset, decimalPoints = 3) { - const mult = Math.pow(10, decimalPoints - 1); - return Math.round(offset * mult) / mult; -} -function flattenStyles(input, allStyles) { - const styles = new Map(); - let allProperties; - input.forEach(token => { - if (token === '*') { - allProperties = allProperties || allStyles.keys(); - for (let prop of allProperties) { - styles.set(prop, _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE); - } - } else { - copyStyles(token, styles); - } - }); - return styles; -} -class Animation { - constructor(_driver, input) { - this._driver = _driver; - const errors = []; - const warnings = []; - const ast = buildAnimationAst(_driver, input, errors, warnings); - if (errors.length) { - throw validationFailed(errors); - } - if (warnings.length) { - warnValidation(warnings); - } - this._animationAst = ast; - } - buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) { - const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) : startingStyles; - const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) : destinationStyles; - const errors = []; - subInstructions = subInstructions || new ElementInstructionMap(); - const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors); - if (errors.length) { - throw buildingFailed(errors); - } - return result; - } -} - -/** - * @publicApi - */ -class AnimationStyleNormalizer {} -/** - * @publicApi - */ -class NoopAnimationStyleNormalizer { - normalizePropertyName(propertyName, errors) { - return propertyName; - } - normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) { - return value; - } -} -const DIMENSIONAL_PROP_SET = new Set(['width', 'height', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'left', 'top', 'bottom', 'right', 'fontSize', 'outlineWidth', 'outlineOffset', 'paddingTop', 'paddingLeft', 'paddingBottom', 'paddingRight', 'marginTop', 'marginLeft', 'marginBottom', 'marginRight', 'borderRadius', 'borderWidth', 'borderTopWidth', 'borderLeftWidth', 'borderRightWidth', 'borderBottomWidth', 'textIndent', 'perspective']); -class WebAnimationsStyleNormalizer extends AnimationStyleNormalizer { - normalizePropertyName(propertyName, errors) { - return dashCaseToCamelCase(propertyName); - } - normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) { - let unit = ''; - const strVal = value.toString().trim(); - if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') { - if (typeof value === 'number') { - unit = 'px'; - } else { - const valAndSuffixMatch = value.match(/^[+-]?[\d\.]+([a-z]*)$/); - if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) { - errors.push(invalidCssUnitValue(userProvidedProperty, value)); - } - } - } - return strVal + unit; - } -} -function createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) { - return { - type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */, - element, - triggerName, - isRemovalTransition, - fromState, - fromStyles, - toState, - toStyles, - timelines, - queriedElements, - preStyleProps, - postStyleProps, - totalTime, - errors - }; -} -const EMPTY_OBJECT = {}; -class AnimationTransitionFactory { - constructor(_triggerName, ast, _stateStyles) { - this._triggerName = _triggerName; - this.ast = ast; - this._stateStyles = _stateStyles; - } - match(currentState, nextState, element, params) { - return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params); - } - buildStyles(stateName, params, errors) { - let styler = this._stateStyles.get('*'); - if (stateName !== undefined) { - styler = this._stateStyles.get(stateName?.toString()) || styler; - } - return styler ? styler.buildStyles(params, errors) : new Map(); - } - build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) { - const errors = []; - const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT; - const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT; - const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors); - const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT; - const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors); - const queriedElements = new Set(); - const preStyleMap = new Map(); - const postStyleMap = new Map(); - const isRemoval = nextState === 'void'; - const animationOptions = { - params: applyParamDefaults(nextAnimationParams, transitionAnimationParams), - delay: this.ast.options?.delay - }; - const timelines = skipAstBuild ? [] : buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors); - let totalTime = 0; - timelines.forEach(tl => { - totalTime = Math.max(tl.duration + tl.delay, totalTime); - }); - if (errors.length) { - return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors); - } - timelines.forEach(tl => { - const elm = tl.element; - const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set()); - tl.preStyleProps.forEach(prop => preProps.add(prop)); - const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set()); - tl.postStyleProps.forEach(prop => postProps.add(prop)); - if (elm !== element) { - queriedElements.add(elm); - } - }); - if (typeof ngDevMode === 'undefined' || ngDevMode) { - checkNonAnimatableInTimelines(timelines, this._triggerName, driver); - } - const queriedElementsList = iteratorToArray(queriedElements.values()); - return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime); - } -} -/** - * Checks inside a set of timelines if they try to animate a css property which is not considered - * animatable, in that case it prints a warning on the console. - * Besides that the function doesn't have any other effect. - * - * Note: this check is done here after the timelines are built instead of doing on a lower level so - * that we can make sure that the warning appears only once per instruction (we can aggregate here - * all the issues instead of finding them separately). - * - * @param timelines The built timelines for the current instruction. - * @param triggerName The name of the trigger for the current instruction. - * @param driver Animation driver used to perform the check. - * - */ -function checkNonAnimatableInTimelines(timelines, triggerName, driver) { - if (!driver.validateAnimatableStyleProperty) { - return; - } - const allowedNonAnimatableProps = new Set([ - // 'easing' is a utility/synthetic prop we use to represent - // easing functions, it represents a property of the animation - // which is not animatable but different values can be used - // in different steps - 'easing']); - const invalidNonAnimatableProps = new Set(); - timelines.forEach(({ - keyframes - }) => { - const nonAnimatablePropsInitialValues = new Map(); - keyframes.forEach(keyframe => { - const entriesToCheck = Array.from(keyframe.entries()).filter(([prop]) => !allowedNonAnimatableProps.has(prop)); - for (const [prop, value] of entriesToCheck) { - if (!driver.validateAnimatableStyleProperty(prop)) { - if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) { - const propInitialValue = nonAnimatablePropsInitialValues.get(prop); - if (propInitialValue !== value) { - invalidNonAnimatableProps.add(prop); - } - } else { - nonAnimatablePropsInitialValues.set(prop, value); - } - } - } - }); - }); - if (invalidNonAnimatableProps.size > 0) { - console.warn(`Warning: The animation trigger "${triggerName}" is attempting to animate the following` + ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\n' + '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)'); - } -} -function oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) { - return matchFns.some(fn => fn(currentState, nextState, element, params)); -} -function applyParamDefaults(userParams, defaults) { - const result = copyObj(defaults); - for (const key in userParams) { - if (userParams.hasOwnProperty(key) && userParams[key] != null) { - result[key] = userParams[key]; - } - } - return result; -} -class AnimationStateStyles { - constructor(styles, defaultParams, normalizer) { - this.styles = styles; - this.defaultParams = defaultParams; - this.normalizer = normalizer; - } - buildStyles(params, errors) { - const finalStyles = new Map(); - const combinedParams = copyObj(this.defaultParams); - Object.keys(params).forEach(key => { - const value = params[key]; - if (value !== null) { - combinedParams[key] = value; - } - }); - this.styles.styles.forEach(value => { - if (typeof value !== 'string') { - value.forEach((val, prop) => { - if (val) { - val = interpolateParams(val, combinedParams, errors); - } - const normalizedProp = this.normalizer.normalizePropertyName(prop, errors); - val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors); - finalStyles.set(prop, val); - }); - } - }); - return finalStyles; - } -} -function buildTrigger(name, ast, normalizer) { - return new AnimationTrigger(name, ast, normalizer); -} -class AnimationTrigger { - constructor(name, ast, _normalizer) { - this.name = name; - this.ast = ast; - this._normalizer = _normalizer; - this.transitionFactories = []; - this.states = new Map(); - ast.states.forEach(ast => { - const defaultParams = ast.options && ast.options.params || {}; - this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer)); - }); - balanceProperties(this.states, 'true', '1'); - balanceProperties(this.states, 'false', '0'); - ast.transitions.forEach(ast => { - this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states)); - }); - this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer); - } - get containsQueries() { - return this.ast.queryCount > 0; - } - matchTransition(currentState, nextState, element, params) { - const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params)); - return entry || null; - } - matchStyles(currentState, params, errors) { - return this.fallbackTransition.buildStyles(currentState, params, errors); - } -} -function createFallbackTransition(triggerName, states, normalizer) { - const matchers = [(fromState, toState) => true]; - const animation = { - type: 2 /* AnimationMetadataType.Sequence */, - steps: [], - options: null - }; - const transition = { - type: 1 /* AnimationMetadataType.Transition */, - animation, - matchers, - options: null, - queryCount: 0, - depCount: 0 - }; - return new AnimationTransitionFactory(triggerName, transition, states); -} -function balanceProperties(stateMap, key1, key2) { - if (stateMap.has(key1)) { - if (!stateMap.has(key2)) { - stateMap.set(key2, stateMap.get(key1)); - } - } else if (stateMap.has(key2)) { - stateMap.set(key1, stateMap.get(key2)); - } -} -const EMPTY_INSTRUCTION_MAP = new ElementInstructionMap(); -class TimelineAnimationEngine { - constructor(bodyNode, _driver, _normalizer) { - this.bodyNode = bodyNode; - this._driver = _driver; - this._normalizer = _normalizer; - this._animations = new Map(); - this._playersById = new Map(); - this.players = []; - } - register(id, metadata) { - const errors = []; - const warnings = []; - const ast = buildAnimationAst(this._driver, metadata, errors, warnings); - if (errors.length) { - throw registerFailed(errors); - } else { - if (warnings.length) { - warnRegister(warnings); - } - this._animations.set(id, ast); - } - } - _buildPlayer(i, preStyles, postStyles) { - const element = i.element; - const keyframes = normalizeKeyframes$1(this._normalizer, i.keyframes, preStyles, postStyles); - return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true); - } - create(id, element, options = {}) { - const errors = []; - const ast = this._animations.get(id); - let instructions; - const autoStylesMap = new Map(); - if (ast) { - instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors); - instructions.forEach(inst => { - const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map()); - inst.postStyleProps.forEach(prop => styles.set(prop, null)); - }); - } else { - errors.push(missingOrDestroyedAnimation()); - instructions = []; - } - if (errors.length) { - throw createAnimationFailed(errors); - } - autoStylesMap.forEach((styles, element) => { - styles.forEach((_, prop) => { - styles.set(prop, this._driver.computeStyle(element, prop, _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE)); - }); - }); - const players = instructions.map(i => { - const styles = autoStylesMap.get(i.element); - return this._buildPlayer(i, new Map(), styles); - }); - const player = optimizeGroupPlayer(players); - this._playersById.set(id, player); - player.onDestroy(() => this.destroy(id)); - this.players.push(player); - return player; - } - destroy(id) { - const player = this._getPlayer(id); - player.destroy(); - this._playersById.delete(id); - const index = this.players.indexOf(player); - if (index >= 0) { - this.players.splice(index, 1); - } - } - _getPlayer(id) { - const player = this._playersById.get(id); - if (!player) { - throw missingPlayer(id); - } - return player; - } - listen(id, element, eventName, callback) { - // triggerName, fromState, toState are all ignored for timeline animations - const baseEvent = makeAnimationEvent(element, '', '', ''); - listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback); - return () => {}; - } - command(id, element, command, args) { - if (command == 'register') { - this.register(id, args[0]); - return; - } - if (command == 'create') { - const options = args[0] || {}; - this.create(id, element, options); - return; - } - const player = this._getPlayer(id); - switch (command) { - case 'play': - player.play(); - break; - case 'pause': - player.pause(); - break; - case 'reset': - player.reset(); - break; - case 'restart': - player.restart(); - break; - case 'finish': - player.finish(); - break; - case 'init': - player.init(); - break; - case 'setPosition': - player.setPosition(parseFloat(args[0])); - break; - case 'destroy': - this.destroy(id); - break; - } - } -} -const QUEUED_CLASSNAME = 'ng-animate-queued'; -const QUEUED_SELECTOR = '.ng-animate-queued'; -const DISABLED_CLASSNAME = 'ng-animate-disabled'; -const DISABLED_SELECTOR = '.ng-animate-disabled'; -const STAR_CLASSNAME = 'ng-star-inserted'; -const STAR_SELECTOR = '.ng-star-inserted'; -const EMPTY_PLAYER_ARRAY = []; -const NULL_REMOVAL_STATE = { - namespaceId: '', - setForRemoval: false, - setForMove: false, - hasAnimation: false, - removedBeforeQueried: false -}; -const NULL_REMOVED_QUERIED_STATE = { - namespaceId: '', - setForMove: false, - setForRemoval: false, - hasAnimation: false, - removedBeforeQueried: true -}; -const REMOVAL_FLAG = '__ng_removed'; -class StateValue { - get params() { - return this.options.params; - } - constructor(input, namespaceId = '') { - this.namespaceId = namespaceId; - const isObj = input && input.hasOwnProperty('value'); - const value = isObj ? input['value'] : input; - this.value = normalizeTriggerValue(value); - if (isObj) { - const options = copyObj(input); - delete options['value']; - this.options = options; - } else { - this.options = {}; - } - if (!this.options.params) { - this.options.params = {}; - } - } - absorbOptions(options) { - const newParams = options.params; - if (newParams) { - const oldParams = this.options.params; - Object.keys(newParams).forEach(prop => { - if (oldParams[prop] == null) { - oldParams[prop] = newParams[prop]; - } - }); - } - } -} -const VOID_VALUE = 'void'; -const DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE); -class AnimationTransitionNamespace { - constructor(id, hostElement, _engine) { - this.id = id; - this.hostElement = hostElement; - this._engine = _engine; - this.players = []; - this._triggers = new Map(); - this._queue = []; - this._elementListeners = new Map(); - this._hostClassName = 'ng-tns-' + id; - addClass(hostElement, this._hostClassName); - } - listen(element, name, phase, callback) { - if (!this._triggers.has(name)) { - throw missingTrigger(phase, name); - } - if (phase == null || phase.length == 0) { - throw missingEvent(name); - } - if (!isTriggerEventValid(phase)) { - throw unsupportedTriggerEvent(phase, name); - } - const listeners = getOrSetDefaultValue(this._elementListeners, element, []); - const data = { - name, - phase, - callback - }; - listeners.push(data); - const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map()); - if (!triggersWithStates.has(name)) { - addClass(element, NG_TRIGGER_CLASSNAME); - addClass(element, NG_TRIGGER_CLASSNAME + '-' + name); - triggersWithStates.set(name, DEFAULT_STATE_VALUE); - } - return () => { - // the event listener is removed AFTER the flush has occurred such - // that leave animations callbacks can fire (otherwise if the node - // is removed in between then the listeners would be deregistered) - this._engine.afterFlush(() => { - const index = listeners.indexOf(data); - if (index >= 0) { - listeners.splice(index, 1); - } - if (!this._triggers.has(name)) { - triggersWithStates.delete(name); - } - }); - }; - } - register(name, ast) { - if (this._triggers.has(name)) { - // throw - return false; - } else { - this._triggers.set(name, ast); - return true; - } - } - _getTrigger(name) { - const trigger = this._triggers.get(name); - if (!trigger) { - throw unregisteredTrigger(name); - } - return trigger; - } - trigger(element, triggerName, value, defaultToFallback = true) { - const trigger = this._getTrigger(triggerName); - const player = new TransitionAnimationPlayer(this.id, triggerName, element); - let triggersWithStates = this._engine.statesByElement.get(element); - if (!triggersWithStates) { - addClass(element, NG_TRIGGER_CLASSNAME); - addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName); - this._engine.statesByElement.set(element, triggersWithStates = new Map()); - } - let fromState = triggersWithStates.get(triggerName); - const toState = new StateValue(value, this.id); - const isObj = value && value.hasOwnProperty('value'); - if (!isObj && fromState) { - toState.absorbOptions(fromState.options); - } - triggersWithStates.set(triggerName, toState); - if (!fromState) { - fromState = DEFAULT_STATE_VALUE; - } - const isRemoval = toState.value === VOID_VALUE; - // normally this isn't reached by here, however, if an object expression - // is passed in then it may be a new object each time. Comparing the value - // is important since that will stay the same despite there being a new object. - // The removal arc here is special cased because the same element is triggered - // twice in the event that it contains animations on the outer/inner portions - // of the host container - if (!isRemoval && fromState.value === toState.value) { - // this means that despite the value not changing, some inner params - // have changed which means that the animation final styles need to be applied - if (!objEquals(fromState.params, toState.params)) { - const errors = []; - const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors); - const toStyles = trigger.matchStyles(toState.value, toState.params, errors); - if (errors.length) { - this._engine.reportError(errors); - } else { - this._engine.afterFlush(() => { - eraseStyles(element, fromStyles); - setStyles(element, toStyles); - }); - } - } - return; - } - const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []); - playersOnElement.forEach(player => { - // only remove the player if it is queued on the EXACT same trigger/namespace - // we only also deal with queued players here because if the animation has - // started then we want to keep the player alive until the flush happens - // (which is where the previousPlayers are passed into the new player) - if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) { - player.destroy(); - } - }); - let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params); - let isFallbackTransition = false; - if (!transition) { - if (!defaultToFallback) return; - transition = trigger.fallbackTransition; - isFallbackTransition = true; - } - this._engine.totalQueuedPlayers++; - this._queue.push({ - element, - triggerName, - transition, - fromState, - toState, - player, - isFallbackTransition - }); - if (!isFallbackTransition) { - addClass(element, QUEUED_CLASSNAME); - player.onStart(() => { - removeClass(element, QUEUED_CLASSNAME); - }); - } - player.onDone(() => { - let index = this.players.indexOf(player); - if (index >= 0) { - this.players.splice(index, 1); - } - const players = this._engine.playersByElement.get(element); - if (players) { - let index = players.indexOf(player); - if (index >= 0) { - players.splice(index, 1); - } - } - }); - this.players.push(player); - playersOnElement.push(player); - return player; - } - deregister(name) { - this._triggers.delete(name); - this._engine.statesByElement.forEach(stateMap => stateMap.delete(name)); - this._elementListeners.forEach((listeners, element) => { - this._elementListeners.set(element, listeners.filter(entry => { - return entry.name != name; - })); - }); - } - clearElementCache(element) { - this._engine.statesByElement.delete(element); - this._elementListeners.delete(element); - const elementPlayers = this._engine.playersByElement.get(element); - if (elementPlayers) { - elementPlayers.forEach(player => player.destroy()); - this._engine.playersByElement.delete(element); - } - } - _signalRemovalForInnerTriggers(rootElement, context) { - const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true); - // emulate a leave animation for all inner nodes within this node. - // If there are no animations found for any of the nodes then clear the cache - // for the element. - elements.forEach(elm => { - // this means that an inner remove() operation has already kicked off - // the animation on this element... - if (elm[REMOVAL_FLAG]) return; - const namespaces = this._engine.fetchNamespacesByElement(elm); - if (namespaces.size) { - namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true)); - } else { - this.clearElementCache(elm); - } - }); - // If the child elements were removed along with the parent, their animations might not - // have completed. Clear all the elements from the cache so we don't end up with a memory leak. - this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm))); - } - triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) { - const triggerStates = this._engine.statesByElement.get(element); - const previousTriggersValues = new Map(); - if (triggerStates) { - const players = []; - triggerStates.forEach((state, triggerName) => { - previousTriggersValues.set(triggerName, state.value); - // this check is here in the event that an element is removed - // twice (both on the host level and the component level) - if (this._triggers.has(triggerName)) { - const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback); - if (player) { - players.push(player); - } - } - }); - if (players.length) { - this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues); - if (destroyAfterComplete) { - optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element)); - } - return true; - } - } - return false; - } - prepareLeaveAnimationListeners(element) { - const listeners = this._elementListeners.get(element); - const elementStates = this._engine.statesByElement.get(element); - // if this statement fails then it means that the element was picked up - // by an earlier flush (or there are no listeners at all to track the leave). - if (listeners && elementStates) { - const visitedTriggers = new Set(); - listeners.forEach(listener => { - const triggerName = listener.name; - if (visitedTriggers.has(triggerName)) return; - visitedTriggers.add(triggerName); - const trigger = this._triggers.get(triggerName); - const transition = trigger.fallbackTransition; - const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE; - const toState = new StateValue(VOID_VALUE); - const player = new TransitionAnimationPlayer(this.id, triggerName, element); - this._engine.totalQueuedPlayers++; - this._queue.push({ - element, - triggerName, - transition, - fromState, - toState, - player, - isFallbackTransition: true - }); - }); - } - } - removeNode(element, context) { - const engine = this._engine; - if (element.childElementCount) { - this._signalRemovalForInnerTriggers(element, context); - } - // this means that a * => VOID animation was detected and kicked off - if (this.triggerLeaveAnimation(element, context, true)) return; - // find the player that is animating and make sure that the - // removal is delayed until that player has completed - let containsPotentialParentTransition = false; - if (engine.totalAnimations) { - const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : []; - // when this `if statement` does not continue forward it means that - // a previous animation query has selected the current element and - // is animating it. In this situation want to continue forwards and - // allow the element to be queued up for animation later. - if (currentPlayers && currentPlayers.length) { - containsPotentialParentTransition = true; - } else { - let parent = element; - while (parent = parent.parentNode) { - const triggers = engine.statesByElement.get(parent); - if (triggers) { - containsPotentialParentTransition = true; - break; - } - } - } - } - // at this stage we know that the element will either get removed - // during flush or will be picked up by a parent query. Either way - // we need to fire the listeners for this element when it DOES get - // removed (once the query parent animation is done or after flush) - this.prepareLeaveAnimationListeners(element); - // whether or not a parent has an animation we need to delay the deferral of the leave - // operation until we have more information (which we do after flush() has been called) - if (containsPotentialParentTransition) { - engine.markElementAsRemoved(this.id, element, false, context); - } else { - const removalFlag = element[REMOVAL_FLAG]; - if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) { - // we do this after the flush has occurred such - // that the callbacks can be fired - engine.afterFlush(() => this.clearElementCache(element)); - engine.destroyInnerAnimations(element); - engine._onRemovalComplete(element, context); - } - } - } - insertNode(element, parent) { - addClass(element, this._hostClassName); - } - drainQueuedTransitions(microtaskId) { - const instructions = []; - this._queue.forEach(entry => { - const player = entry.player; - if (player.destroyed) return; - const element = entry.element; - const listeners = this._elementListeners.get(element); - if (listeners) { - listeners.forEach(listener => { - if (listener.name == entry.triggerName) { - const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value); - baseEvent['_data'] = microtaskId; - listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback); - } - }); - } - if (player.markedForDestroy) { - this._engine.afterFlush(() => { - // now we can destroy the element properly since the event listeners have - // been bound to the player - player.destroy(); - }); - } else { - instructions.push(entry); - } - }); - this._queue = []; - return instructions.sort((a, b) => { - // if depCount == 0 them move to front - // otherwise if a contains b then move back - const d0 = a.transition.ast.depCount; - const d1 = b.transition.ast.depCount; - if (d0 == 0 || d1 == 0) { - return d0 - d1; - } - return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1; - }); - } - destroy(context) { - this.players.forEach(p => p.destroy()); - this._signalRemovalForInnerTriggers(this.hostElement, context); - } -} -class TransitionAnimationEngine { - /** @internal */ - _onRemovalComplete(element, context) { - this.onRemovalComplete(element, context); - } - constructor(bodyNode, driver, _normalizer) { - this.bodyNode = bodyNode; - this.driver = driver; - this._normalizer = _normalizer; - this.players = []; - this.newHostElements = new Map(); - this.playersByElement = new Map(); - this.playersByQueriedElement = new Map(); - this.statesByElement = new Map(); - this.disabledNodes = new Set(); - this.totalAnimations = 0; - this.totalQueuedPlayers = 0; - this._namespaceLookup = {}; - this._namespaceList = []; - this._flushFns = []; - this._whenQuietFns = []; - this.namespacesByHostElement = new Map(); - this.collectedEnterElements = []; - this.collectedLeaveElements = []; - // this method is designed to be overridden by the code that uses this engine - this.onRemovalComplete = (element, context) => {}; - } - get queuedPlayers() { - const players = []; - this._namespaceList.forEach(ns => { - ns.players.forEach(player => { - if (player.queued) { - players.push(player); - } - }); - }); - return players; - } - createNamespace(namespaceId, hostElement) { - const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this); - if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) { - this._balanceNamespaceList(ns, hostElement); - } else { - // defer this later until flush during when the host element has - // been inserted so that we know exactly where to place it in - // the namespace list - this.newHostElements.set(hostElement, ns); - // given that this host element is a part of the animation code, it - // may or may not be inserted by a parent node that is of an - // animation renderer type. If this happens then we can still have - // access to this item when we query for :enter nodes. If the parent - // is a renderer then the set data-structure will normalize the entry - this.collectEnterElement(hostElement); - } - return this._namespaceLookup[namespaceId] = ns; - } - _balanceNamespaceList(ns, hostElement) { - const namespaceList = this._namespaceList; - const namespacesByHostElement = this.namespacesByHostElement; - const limit = namespaceList.length - 1; - if (limit >= 0) { - let found = false; - // Find the closest ancestor with an existing namespace so we can then insert `ns` after it, - // establishing a top-down ordering of namespaces in `this._namespaceList`. - let ancestor = this.driver.getParentElement(hostElement); - while (ancestor) { - const ancestorNs = namespacesByHostElement.get(ancestor); - if (ancestorNs) { - // An animation namespace has been registered for this ancestor, so we insert `ns` - // right after it to establish top-down ordering of animation namespaces. - const index = namespaceList.indexOf(ancestorNs); - namespaceList.splice(index + 1, 0, ns); - found = true; - break; - } - ancestor = this.driver.getParentElement(ancestor); - } - if (!found) { - // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to - // ensure that any existing descendants are ordered after `ns`, retaining the desired - // top-down ordering. - namespaceList.unshift(ns); - } - } else { - namespaceList.push(ns); - } - namespacesByHostElement.set(hostElement, ns); - return ns; - } - register(namespaceId, hostElement) { - let ns = this._namespaceLookup[namespaceId]; - if (!ns) { - ns = this.createNamespace(namespaceId, hostElement); - } - return ns; - } - registerTrigger(namespaceId, name, trigger) { - let ns = this._namespaceLookup[namespaceId]; - if (ns && ns.register(name, trigger)) { - this.totalAnimations++; - } - } - destroy(namespaceId, context) { - if (!namespaceId) return; - this.afterFlush(() => {}); - this.afterFlushAnimationsDone(() => { - const ns = this._fetchNamespace(namespaceId); - this.namespacesByHostElement.delete(ns.hostElement); - const index = this._namespaceList.indexOf(ns); - if (index >= 0) { - this._namespaceList.splice(index, 1); - } - ns.destroy(context); - delete this._namespaceLookup[namespaceId]; - }); - } - _fetchNamespace(id) { - return this._namespaceLookup[id]; - } - fetchNamespacesByElement(element) { - // normally there should only be one namespace per element, however - // if @triggers are placed on both the component element and then - // its host element (within the component code) then there will be - // two namespaces returned. We use a set here to simply deduplicate - // the namespaces in case (for the reason described above) there are multiple triggers - const namespaces = new Set(); - const elementStates = this.statesByElement.get(element); - if (elementStates) { - for (let stateValue of elementStates.values()) { - if (stateValue.namespaceId) { - const ns = this._fetchNamespace(stateValue.namespaceId); - if (ns) { - namespaces.add(ns); - } - } - } - } - return namespaces; - } - trigger(namespaceId, element, name, value) { - if (isElementNode(element)) { - const ns = this._fetchNamespace(namespaceId); - if (ns) { - ns.trigger(element, name, value); - return true; - } - } - return false; - } - insertNode(namespaceId, element, parent, insertBefore) { - if (!isElementNode(element)) return; - // special case for when an element is removed and reinserted (move operation) - // when this occurs we do not want to use the element for deletion later - const details = element[REMOVAL_FLAG]; - if (details && details.setForRemoval) { - details.setForRemoval = false; - details.setForMove = true; - const index = this.collectedLeaveElements.indexOf(element); - if (index >= 0) { - this.collectedLeaveElements.splice(index, 1); - } - } - // in the event that the namespaceId is blank then the caller - // code does not contain any animation code in it, but it is - // just being called so that the node is marked as being inserted - if (namespaceId) { - const ns = this._fetchNamespace(namespaceId); - // This if-statement is a workaround for router issue #21947. - // The router sometimes hits a race condition where while a route - // is being instantiated a new navigation arrives, triggering leave - // animation of DOM that has not been fully initialized, until this - // is resolved, we need to handle the scenario when DOM is not in a - // consistent state during the animation. - if (ns) { - ns.insertNode(element, parent); - } - } - // only *directives and host elements are inserted before - if (insertBefore) { - this.collectEnterElement(element); - } - } - collectEnterElement(element) { - this.collectedEnterElements.push(element); - } - markElementAsDisabled(element, value) { - if (value) { - if (!this.disabledNodes.has(element)) { - this.disabledNodes.add(element); - addClass(element, DISABLED_CLASSNAME); - } - } else if (this.disabledNodes.has(element)) { - this.disabledNodes.delete(element); - removeClass(element, DISABLED_CLASSNAME); - } - } - removeNode(namespaceId, element, context) { - if (isElementNode(element)) { - const ns = namespaceId ? this._fetchNamespace(namespaceId) : null; - if (ns) { - ns.removeNode(element, context); - } else { - this.markElementAsRemoved(namespaceId, element, false, context); - } - const hostNS = this.namespacesByHostElement.get(element); - if (hostNS && hostNS.id !== namespaceId) { - hostNS.removeNode(element, context); - } - } else { - this._onRemovalComplete(element, context); - } - } - markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) { - this.collectedLeaveElements.push(element); - element[REMOVAL_FLAG] = { - namespaceId, - setForRemoval: context, - hasAnimation, - removedBeforeQueried: false, - previousTriggersValues - }; - } - listen(namespaceId, element, name, phase, callback) { - if (isElementNode(element)) { - return this._fetchNamespace(namespaceId).listen(element, name, phase, callback); - } - return () => {}; - } - _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) { - return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst); - } - destroyInnerAnimations(containerElement) { - let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true); - elements.forEach(element => this.destroyActiveAnimationsForElement(element)); - if (this.playersByQueriedElement.size == 0) return; - elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true); - elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element)); - } - destroyActiveAnimationsForElement(element) { - const players = this.playersByElement.get(element); - if (players) { - players.forEach(player => { - // special case for when an element is set for destruction, but hasn't started. - // in this situation we want to delay the destruction until the flush occurs - // so that any event listeners attached to the player are triggered. - if (player.queued) { - player.markedForDestroy = true; - } else { - player.destroy(); - } - }); - } - } - finishActiveQueriedAnimationOnElement(element) { - const players = this.playersByQueriedElement.get(element); - if (players) { - players.forEach(player => player.finish()); - } - } - whenRenderingDone() { - return new Promise(resolve => { - if (this.players.length) { - return optimizeGroupPlayer(this.players).onDone(() => resolve()); - } else { - resolve(); - } - }); - } - processLeaveNode(element) { - const details = element[REMOVAL_FLAG]; - if (details && details.setForRemoval) { - // this will prevent it from removing it twice - element[REMOVAL_FLAG] = NULL_REMOVAL_STATE; - if (details.namespaceId) { - this.destroyInnerAnimations(element); - const ns = this._fetchNamespace(details.namespaceId); - if (ns) { - ns.clearElementCache(element); - } - } - this._onRemovalComplete(element, details.setForRemoval); - } - if (element.classList?.contains(DISABLED_CLASSNAME)) { - this.markElementAsDisabled(element, false); - } - this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => { - this.markElementAsDisabled(node, false); - }); - } - flush(microtaskId = -1) { - let players = []; - if (this.newHostElements.size) { - this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element)); - this.newHostElements.clear(); - } - if (this.totalAnimations && this.collectedEnterElements.length) { - for (let i = 0; i < this.collectedEnterElements.length; i++) { - const elm = this.collectedEnterElements[i]; - addClass(elm, STAR_CLASSNAME); - } - } - if (this._namespaceList.length && (this.totalQueuedPlayers || this.collectedLeaveElements.length)) { - const cleanupFns = []; - try { - players = this._flushAnimations(cleanupFns, microtaskId); - } finally { - for (let i = 0; i < cleanupFns.length; i++) { - cleanupFns[i](); - } - } - } else { - for (let i = 0; i < this.collectedLeaveElements.length; i++) { - const element = this.collectedLeaveElements[i]; - this.processLeaveNode(element); - } - } - this.totalQueuedPlayers = 0; - this.collectedEnterElements.length = 0; - this.collectedLeaveElements.length = 0; - this._flushFns.forEach(fn => fn()); - this._flushFns = []; - if (this._whenQuietFns.length) { - // we move these over to a variable so that - // if any new callbacks are registered in another - // flush they do not populate the existing set - const quietFns = this._whenQuietFns; - this._whenQuietFns = []; - if (players.length) { - optimizeGroupPlayer(players).onDone(() => { - quietFns.forEach(fn => fn()); - }); - } else { - quietFns.forEach(fn => fn()); - } - } - } - reportError(errors) { - throw triggerTransitionsFailed(errors); - } - _flushAnimations(cleanupFns, microtaskId) { - const subTimelines = new ElementInstructionMap(); - const skippedPlayers = []; - const skippedPlayersMap = new Map(); - const queuedInstructions = []; - const queriedElements = new Map(); - const allPreStyleElements = new Map(); - const allPostStyleElements = new Map(); - const disabledElementsSet = new Set(); - this.disabledNodes.forEach(node => { - disabledElementsSet.add(node); - const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true); - for (let i = 0; i < nodesThatAreDisabled.length; i++) { - disabledElementsSet.add(nodesThatAreDisabled[i]); - } - }); - const bodyNode = this.bodyNode; - const allTriggerElements = Array.from(this.statesByElement.keys()); - const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements); - // this must occur before the instructions are built below such that - // the :enter queries match the elements (since the timeline queries - // are fired during instruction building). - const enterNodeMapIds = new Map(); - let i = 0; - enterNodeMap.forEach((nodes, root) => { - const className = ENTER_CLASSNAME + i++; - enterNodeMapIds.set(root, className); - nodes.forEach(node => addClass(node, className)); - }); - const allLeaveNodes = []; - const mergedLeaveNodes = new Set(); - const leaveNodesWithoutAnimations = new Set(); - for (let i = 0; i < this.collectedLeaveElements.length; i++) { - const element = this.collectedLeaveElements[i]; - const details = element[REMOVAL_FLAG]; - if (details && details.setForRemoval) { - allLeaveNodes.push(element); - mergedLeaveNodes.add(element); - if (details.hasAnimation) { - this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm)); - } else { - leaveNodesWithoutAnimations.add(element); - } - } - } - const leaveNodeMapIds = new Map(); - const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes)); - leaveNodeMap.forEach((nodes, root) => { - const className = LEAVE_CLASSNAME + i++; - leaveNodeMapIds.set(root, className); - nodes.forEach(node => addClass(node, className)); - }); - cleanupFns.push(() => { - enterNodeMap.forEach((nodes, root) => { - const className = enterNodeMapIds.get(root); - nodes.forEach(node => removeClass(node, className)); - }); - leaveNodeMap.forEach((nodes, root) => { - const className = leaveNodeMapIds.get(root); - nodes.forEach(node => removeClass(node, className)); - }); - allLeaveNodes.forEach(element => { - this.processLeaveNode(element); - }); - }); - const allPlayers = []; - const erroneousTransitions = []; - for (let i = this._namespaceList.length - 1; i >= 0; i--) { - const ns = this._namespaceList[i]; - ns.drainQueuedTransitions(microtaskId).forEach(entry => { - const player = entry.player; - const element = entry.element; - allPlayers.push(player); - if (this.collectedEnterElements.length) { - const details = element[REMOVAL_FLAG]; - // animations for move operations (elements being removed and reinserted, - // e.g. when the order of an *ngFor list changes) are currently not supported - if (details && details.setForMove) { - if (details.previousTriggersValues && details.previousTriggersValues.has(entry.triggerName)) { - const previousValue = details.previousTriggersValues.get(entry.triggerName); - // we need to restore the previous trigger value since the element has - // only been moved and hasn't actually left the DOM - const triggersWithStates = this.statesByElement.get(entry.element); - if (triggersWithStates && triggersWithStates.has(entry.triggerName)) { - const state = triggersWithStates.get(entry.triggerName); - state.value = previousValue; - triggersWithStates.set(entry.triggerName, state); - } - } - player.destroy(); - return; - } - } - const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element); - const leaveClassName = leaveNodeMapIds.get(element); - const enterClassName = enterNodeMapIds.get(element); - const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned); - if (instruction.errors && instruction.errors.length) { - erroneousTransitions.push(instruction); - return; - } - // even though the element may not be in the DOM, it may still - // be added at a later point (due to the mechanics of content - // projection and/or dynamic component insertion) therefore it's - // important to still style the element. - if (nodeIsOrphaned) { - player.onStart(() => eraseStyles(element, instruction.fromStyles)); - player.onDestroy(() => setStyles(element, instruction.toStyles)); - skippedPlayers.push(player); - return; - } - // if an unmatched transition is queued and ready to go - // then it SHOULD NOT render an animation and cancel the - // previously running animations. - if (entry.isFallbackTransition) { - player.onStart(() => eraseStyles(element, instruction.fromStyles)); - player.onDestroy(() => setStyles(element, instruction.toStyles)); - skippedPlayers.push(player); - return; - } - // this means that if a parent animation uses this animation as a sub-trigger - // then it will instruct the timeline builder not to add a player delay, but - // instead stretch the first keyframe gap until the animation starts. This is - // important in order to prevent extra initialization styles from being - // required by the user for the animation. - const timelines = []; - instruction.timelines.forEach(tl => { - tl.stretchStartingKeyframe = true; - if (!this.disabledNodes.has(tl.element)) { - timelines.push(tl); - } - }); - instruction.timelines = timelines; - subTimelines.append(element, instruction.timelines); - const tuple = { - instruction, - player, - element - }; - queuedInstructions.push(tuple); - instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player)); - instruction.preStyleProps.forEach((stringMap, element) => { - if (stringMap.size) { - let setVal = allPreStyleElements.get(element); - if (!setVal) { - allPreStyleElements.set(element, setVal = new Set()); - } - stringMap.forEach((_, prop) => setVal.add(prop)); - } - }); - instruction.postStyleProps.forEach((stringMap, element) => { - let setVal = allPostStyleElements.get(element); - if (!setVal) { - allPostStyleElements.set(element, setVal = new Set()); - } - stringMap.forEach((_, prop) => setVal.add(prop)); - }); - }); - } - if (erroneousTransitions.length) { - const errors = []; - erroneousTransitions.forEach(instruction => { - errors.push(transitionFailed(instruction.triggerName, instruction.errors)); - }); - allPlayers.forEach(player => player.destroy()); - this.reportError(errors); - } - const allPreviousPlayersMap = new Map(); - // this map tells us which element in the DOM tree is contained by - // which animation. Further down this map will get populated once - // the players are built and in doing so we can use it to efficiently - // figure out if a sub player is skipped due to a parent player having priority. - const animationElementMap = new Map(); - queuedInstructions.forEach(entry => { - const element = entry.element; - if (subTimelines.has(element)) { - animationElementMap.set(element, element); - this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap); - } - }); - skippedPlayers.forEach(player => { - const element = player.element; - const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null); - previousPlayers.forEach(prevPlayer => { - getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer); - prevPlayer.destroy(); - }); - }); - // this is a special case for nodes that will be removed either by - // having their own leave animations or by being queried in a container - // that will be removed once a parent animation is complete. The idea - // here is that * styles must be identical to ! styles because of - // backwards compatibility (* is also filled in by default in many places). - // Otherwise * styles will return an empty value or "auto" since the element - // passed to getComputedStyle will not be visible (since * === destination) - const replaceNodes = allLeaveNodes.filter(node => { - return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements); - }); - // POST STAGE: fill the * styles - const postStylesMap = new Map(); - const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, _angular_animations__WEBPACK_IMPORTED_MODULE_1__.AUTO_STYLE); - allLeaveQueriedNodes.forEach(node => { - if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) { - replaceNodes.push(node); - } - }); - // PRE STAGE: fill the ! styles - const preStylesMap = new Map(); - enterNodeMap.forEach((nodes, root) => { - cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, _angular_animations__WEBPACK_IMPORTED_MODULE_1__["ɵPRE_STYLE"]); - }); - replaceNodes.forEach(node => { - const post = postStylesMap.get(node); - const pre = preStylesMap.get(node); - postStylesMap.set(node, new Map([...(post?.entries() ?? []), ...(pre?.entries() ?? [])])); - }); - const rootPlayers = []; - const subPlayers = []; - const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {}; - queuedInstructions.forEach(entry => { - const { - element, - player, - instruction - } = entry; - // this means that it was never consumed by a parent animation which - // means that it is independent and therefore should be set for animation - if (subTimelines.has(element)) { - if (disabledElementsSet.has(element)) { - player.onDestroy(() => setStyles(element, instruction.toStyles)); - player.disabled = true; - player.overrideTotalTime(instruction.totalTime); - skippedPlayers.push(player); - return; - } - // this will flow up the DOM and query the map to figure out - // if a parent animation has priority over it. In the situation - // that a parent is detected then it will cancel the loop. If - // nothing is detected, or it takes a few hops to find a parent, - // then it will fill in the missing nodes and signal them as having - // a detected parent (or a NO_PARENT value via a special constant). - let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED; - if (animationElementMap.size > 1) { - let elm = element; - const parentsToAdd = []; - while (elm = elm.parentNode) { - const detectedParent = animationElementMap.get(elm); - if (detectedParent) { - parentWithAnimation = detectedParent; - break; - } - parentsToAdd.push(elm); - } - parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation)); - } - const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap); - player.setRealPlayer(innerPlayer); - if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) { - rootPlayers.push(player); - } else { - const parentPlayers = this.playersByElement.get(parentWithAnimation); - if (parentPlayers && parentPlayers.length) { - player.parentPlayer = optimizeGroupPlayer(parentPlayers); - } - skippedPlayers.push(player); - } - } else { - eraseStyles(element, instruction.fromStyles); - player.onDestroy(() => setStyles(element, instruction.toStyles)); - // there still might be a ancestor player animating this - // element therefore we will still add it as a sub player - // even if its animation may be disabled - subPlayers.push(player); - if (disabledElementsSet.has(element)) { - skippedPlayers.push(player); - } - } - }); - // find all of the sub players' corresponding inner animation players - subPlayers.forEach(player => { - // even if no players are found for a sub animation it - // will still complete itself after the next tick since it's Noop - const playersForElement = skippedPlayersMap.get(player.element); - if (playersForElement && playersForElement.length) { - const innerPlayer = optimizeGroupPlayer(playersForElement); - player.setRealPlayer(innerPlayer); - } - }); - // the reason why we don't actually play the animation is - // because all that a skipped player is designed to do is to - // fire the start/done transition callback events - skippedPlayers.forEach(player => { - if (player.parentPlayer) { - player.syncPlayerEvents(player.parentPlayer); - } else { - player.destroy(); - } - }); - // run through all of the queued removals and see if they - // were picked up by a query. If not then perform the removal - // operation right away unless a parent animation is ongoing. - for (let i = 0; i < allLeaveNodes.length; i++) { - const element = allLeaveNodes[i]; - const details = element[REMOVAL_FLAG]; - removeClass(element, LEAVE_CLASSNAME); - // this means the element has a removal animation that is being - // taken care of and therefore the inner elements will hang around - // until that animation is over (or the parent queried animation) - if (details && details.hasAnimation) continue; - let players = []; - // if this element is queried or if it contains queried children - // then we want for the element not to be removed from the page - // until the queried animations have finished - if (queriedElements.size) { - let queriedPlayerResults = queriedElements.get(element); - if (queriedPlayerResults && queriedPlayerResults.length) { - players.push(...queriedPlayerResults); - } - let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true); - for (let j = 0; j < queriedInnerElements.length; j++) { - let queriedPlayers = queriedElements.get(queriedInnerElements[j]); - if (queriedPlayers && queriedPlayers.length) { - players.push(...queriedPlayers); - } - } - } - const activePlayers = players.filter(p => !p.destroyed); - if (activePlayers.length) { - removeNodesAfterAnimationDone(this, element, activePlayers); - } else { - this.processLeaveNode(element); - } - } - // this is required so the cleanup method doesn't remove them - allLeaveNodes.length = 0; - rootPlayers.forEach(player => { - this.players.push(player); - player.onDone(() => { - player.destroy(); - const index = this.players.indexOf(player); - this.players.splice(index, 1); - }); - player.play(); - }); - return rootPlayers; - } - afterFlush(callback) { - this._flushFns.push(callback); - } - afterFlushAnimationsDone(callback) { - this._whenQuietFns.push(callback); - } - _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) { - let players = []; - if (isQueriedElement) { - const queriedElementPlayers = this.playersByQueriedElement.get(element); - if (queriedElementPlayers) { - players = queriedElementPlayers; - } - } else { - const elementPlayers = this.playersByElement.get(element); - if (elementPlayers) { - const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE; - elementPlayers.forEach(player => { - if (player.queued) return; - if (!isRemovalAnimation && player.triggerName != triggerName) return; - players.push(player); - }); - } - } - if (namespaceId || triggerName) { - players = players.filter(player => { - if (namespaceId && namespaceId != player.namespaceId) return false; - if (triggerName && triggerName != player.triggerName) return false; - return true; - }); - } - return players; - } - _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) { - const triggerName = instruction.triggerName; - const rootElement = instruction.element; - // when a removal animation occurs, ALL previous players are collected - // and destroyed (even if they are outside of the current namespace) - const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId; - const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName; - for (const timelineInstruction of instruction.timelines) { - const element = timelineInstruction.element; - const isQueriedElement = element !== rootElement; - const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []); - const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState); - previousPlayers.forEach(player => { - const realPlayer = player.getRealPlayer(); - if (realPlayer.beforeDestroy) { - realPlayer.beforeDestroy(); - } - player.destroy(); - players.push(player); - }); - } - // this needs to be done so that the PRE/POST styles can be - // computed properly without interfering with the previous animation - eraseStyles(rootElement, instruction.fromStyles); - } - _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) { - const triggerName = instruction.triggerName; - const rootElement = instruction.element; - // we first run this so that the previous animation player - // data can be passed into the successive animation players - const allQueriedPlayers = []; - const allConsumedElements = new Set(); - const allSubElements = new Set(); - const allNewPlayers = instruction.timelines.map(timelineInstruction => { - const element = timelineInstruction.element; - allConsumedElements.add(element); - // FIXME (matsko): make sure to-be-removed animations are removed properly - const details = element[REMOVAL_FLAG]; - if (details && details.removedBeforeQueried) return new _angular_animations__WEBPACK_IMPORTED_MODULE_1__.NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay); - const isQueriedElement = element !== rootElement; - const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY).map(p => p.getRealPlayer())).filter(p => { - // the `element` is not apart of the AnimationPlayer definition, but - // Mock/WebAnimations - // use the element within their implementation. This will be added in Angular5 to - // AnimationPlayer - const pp = p; - return pp.element ? pp.element === element : false; - }); - const preStyles = preStylesMap.get(element); - const postStyles = postStylesMap.get(element); - const keyframes = normalizeKeyframes$1(this._normalizer, timelineInstruction.keyframes, preStyles, postStyles); - const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers); - // this means that this particular player belongs to a sub trigger. It is - // important that we match this player up with the corresponding (@trigger.listener) - if (timelineInstruction.subTimeline && skippedPlayersMap) { - allSubElements.add(element); - } - if (isQueriedElement) { - const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element); - wrappedPlayer.setRealPlayer(player); - allQueriedPlayers.push(wrappedPlayer); - } - return player; - }); - allQueriedPlayers.forEach(player => { - getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player); - player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player)); - }); - allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME)); - const player = optimizeGroupPlayer(allNewPlayers); - player.onDestroy(() => { - allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME)); - setStyles(rootElement, instruction.toStyles); - }); - // this basically makes all of the callbacks for sub element animations - // be dependent on the upper players for when they finish - allSubElements.forEach(element => { - getOrSetDefaultValue(skippedPlayersMap, element, []).push(player); - }); - return player; - } - _buildPlayer(instruction, keyframes, previousPlayers) { - if (keyframes.length > 0) { - return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers); - } - // special case for when an empty transition|definition is provided - // ... there is no point in rendering an empty animation - return new _angular_animations__WEBPACK_IMPORTED_MODULE_1__.NoopAnimationPlayer(instruction.duration, instruction.delay); - } -} -class TransitionAnimationPlayer { - constructor(namespaceId, triggerName, element) { - this.namespaceId = namespaceId; - this.triggerName = triggerName; - this.element = element; - this._player = new _angular_animations__WEBPACK_IMPORTED_MODULE_1__.NoopAnimationPlayer(); - this._containsRealPlayer = false; - this._queuedCallbacks = new Map(); - this.destroyed = false; - this.parentPlayer = null; - this.markedForDestroy = false; - this.disabled = false; - this.queued = true; - this.totalTime = 0; - } - setRealPlayer(player) { - if (this._containsRealPlayer) return; - this._player = player; - this._queuedCallbacks.forEach((callbacks, phase) => { - callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback)); - }); - this._queuedCallbacks.clear(); - this._containsRealPlayer = true; - this.overrideTotalTime(player.totalTime); - this.queued = false; - } - getRealPlayer() { - return this._player; - } - overrideTotalTime(totalTime) { - this.totalTime = totalTime; - } - syncPlayerEvents(player) { - const p = this._player; - if (p.triggerCallback) { - player.onStart(() => p.triggerCallback('start')); - } - player.onDone(() => this.finish()); - player.onDestroy(() => this.destroy()); - } - _queueEvent(name, callback) { - getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback); - } - onDone(fn) { - if (this.queued) { - this._queueEvent('done', fn); - } - this._player.onDone(fn); - } - onStart(fn) { - if (this.queued) { - this._queueEvent('start', fn); - } - this._player.onStart(fn); - } - onDestroy(fn) { - if (this.queued) { - this._queueEvent('destroy', fn); - } - this._player.onDestroy(fn); - } - init() { - this._player.init(); - } - hasStarted() { - return this.queued ? false : this._player.hasStarted(); - } - play() { - !this.queued && this._player.play(); - } - pause() { - !this.queued && this._player.pause(); - } - restart() { - !this.queued && this._player.restart(); - } - finish() { - this._player.finish(); - } - destroy() { - this.destroyed = true; - this._player.destroy(); - } - reset() { - !this.queued && this._player.reset(); - } - setPosition(p) { - if (!this.queued) { - this._player.setPosition(p); - } - } - getPosition() { - return this.queued ? 0 : this._player.getPosition(); - } - /** @internal */ - triggerCallback(phaseName) { - const p = this._player; - if (p.triggerCallback) { - p.triggerCallback(phaseName); - } - } -} -function deleteOrUnsetInMap(map, key, value) { - let currentValues = map.get(key); - if (currentValues) { - if (currentValues.length) { - const index = currentValues.indexOf(value); - currentValues.splice(index, 1); - } - if (currentValues.length == 0) { - map.delete(key); - } - } - return currentValues; -} -function normalizeTriggerValue(value) { - // we use `!= null` here because it's the most simple - // way to test against a "falsy" value without mixing - // in empty strings or a zero value. DO NOT OPTIMIZE. - return value != null ? value : null; -} -function isElementNode(node) { - return node && node['nodeType'] === 1; -} -function isTriggerEventValid(eventName) { - return eventName == 'start' || eventName == 'done'; -} -function cloakElement(element, value) { - const oldValue = element.style.display; - element.style.display = value != null ? value : 'none'; - return oldValue; -} -function cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) { - const cloakVals = []; - elements.forEach(element => cloakVals.push(cloakElement(element))); - const failedElements = []; - elementPropsMap.forEach((props, element) => { - const styles = new Map(); - props.forEach(prop => { - const value = driver.computeStyle(element, prop, defaultStyle); - styles.set(prop, value); - // there is no easy way to detect this because a sub element could be removed - // by a parent animation element being detached. - if (!value || value.length == 0) { - element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE; - failedElements.push(element); - } - }); - valuesMap.set(element, styles); - }); - // we use a index variable here since Set.forEach(a, i) does not return - // an index value for the closure (but instead just the value) - let i = 0; - elements.forEach(element => cloakElement(element, cloakVals[i++])); - return failedElements; -} -/* -Since the Angular renderer code will return a collection of inserted -nodes in all areas of a DOM tree, it's up to this algorithm to figure -out which nodes are roots for each animation @trigger. - -By placing each inserted node into a Set and traversing upwards, it -is possible to find the @trigger elements and well any direct *star -insertion nodes, if a @trigger root is found then the enter element -is placed into the Map[@trigger] spot. - */ -function buildRootMap(roots, nodes) { - const rootMap = new Map(); - roots.forEach(root => rootMap.set(root, [])); - if (nodes.length == 0) return rootMap; - const NULL_NODE = 1; - const nodeSet = new Set(nodes); - const localRootMap = new Map(); - function getRoot(node) { - if (!node) return NULL_NODE; - let root = localRootMap.get(node); - if (root) return root; - const parent = node.parentNode; - if (rootMap.has(parent)) { - // ngIf inside @trigger - root = parent; - } else if (nodeSet.has(parent)) { - // ngIf inside ngIf - root = NULL_NODE; - } else { - // recurse upwards - root = getRoot(parent); - } - localRootMap.set(node, root); - return root; - } - nodes.forEach(node => { - const root = getRoot(node); - if (root !== NULL_NODE) { - rootMap.get(root).push(node); - } - }); - return rootMap; -} -function addClass(element, className) { - element.classList?.add(className); -} -function removeClass(element, className) { - element.classList?.remove(className); -} -function removeNodesAfterAnimationDone(engine, element, players) { - optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element)); -} -function flattenGroupPlayers(players) { - const finalPlayers = []; - _flattenGroupPlayersRecur(players, finalPlayers); - return finalPlayers; -} -function _flattenGroupPlayersRecur(players, finalPlayers) { - for (let i = 0; i < players.length; i++) { - const player = players[i]; - if (player instanceof _angular_animations__WEBPACK_IMPORTED_MODULE_1__["ɵAnimationGroupPlayer"]) { - _flattenGroupPlayersRecur(player.players, finalPlayers); - } else { - finalPlayers.push(player); - } - } -} -function objEquals(a, b) { - const k1 = Object.keys(a); - const k2 = Object.keys(b); - if (k1.length != k2.length) return false; - for (let i = 0; i < k1.length; i++) { - const prop = k1[i]; - if (!b.hasOwnProperty(prop) || a[prop] !== b[prop]) return false; - } - return true; -} -function replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) { - const postEntry = allPostStyleElements.get(element); - if (!postEntry) return false; - let preEntry = allPreStyleElements.get(element); - if (preEntry) { - postEntry.forEach(data => preEntry.add(data)); - } else { - allPreStyleElements.set(element, postEntry); - } - allPostStyleElements.delete(element); - return true; -} -class AnimationEngine { - constructor(bodyNode, _driver, _normalizer) { - this.bodyNode = bodyNode; - this._driver = _driver; - this._normalizer = _normalizer; - this._triggerCache = {}; - // this method is designed to be overridden by the code that uses this engine - this.onRemovalComplete = (element, context) => {}; - this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer); - this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer); - this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context); - } - registerTrigger(componentId, namespaceId, hostElement, name, metadata) { - const cacheKey = componentId + '-' + name; - let trigger = this._triggerCache[cacheKey]; - if (!trigger) { - const errors = []; - const warnings = []; - const ast = buildAnimationAst(this._driver, metadata, errors, warnings); - if (errors.length) { - throw triggerBuildFailed(name, errors); - } - if (warnings.length) { - warnTriggerBuild(name, warnings); - } - trigger = buildTrigger(name, ast, this._normalizer); - this._triggerCache[cacheKey] = trigger; - } - this._transitionEngine.registerTrigger(namespaceId, name, trigger); - } - register(namespaceId, hostElement) { - this._transitionEngine.register(namespaceId, hostElement); - } - destroy(namespaceId, context) { - this._transitionEngine.destroy(namespaceId, context); - } - onInsert(namespaceId, element, parent, insertBefore) { - this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore); - } - onRemove(namespaceId, element, context) { - this._transitionEngine.removeNode(namespaceId, element, context); - } - disableAnimations(element, disable) { - this._transitionEngine.markElementAsDisabled(element, disable); - } - process(namespaceId, element, property, value) { - if (property.charAt(0) == '@') { - const [id, action] = parseTimelineCommand(property); - const args = value; - this._timelineEngine.command(id, element, action, args); - } else { - this._transitionEngine.trigger(namespaceId, element, property, value); - } - } - listen(namespaceId, element, eventName, eventPhase, callback) { - // @@listen - if (eventName.charAt(0) == '@') { - const [id, action] = parseTimelineCommand(eventName); - return this._timelineEngine.listen(id, element, action, callback); - } - return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback); - } - flush(microtaskId = -1) { - this._transitionEngine.flush(microtaskId); - } - get players() { - return [...this._transitionEngine.players, ...this._timelineEngine.players]; - } - whenRenderingDone() { - return this._transitionEngine.whenRenderingDone(); - } - afterFlushAnimationsDone(cb) { - this._transitionEngine.afterFlushAnimationsDone(cb); - } -} - -/** - * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are - * detected. - * - * In CSS there exist properties that cannot be animated within a keyframe animation - * (whether it be via CSS keyframes or web-animations) and the animation implementation - * will ignore them. This function is designed to detect those special cased styles and - * return a container that will be executed at the start and end of the animation. - * - * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null` - */ -function packageNonAnimatableStyles(element, styles) { - let startStyles = null; - let endStyles = null; - if (Array.isArray(styles) && styles.length) { - startStyles = filterNonAnimatableStyles(styles[0]); - if (styles.length > 1) { - endStyles = filterNonAnimatableStyles(styles[styles.length - 1]); - } - } else if (styles instanceof Map) { - startStyles = filterNonAnimatableStyles(styles); - } - return startStyles || endStyles ? new SpecialCasedStyles(element, startStyles, endStyles) : null; -} -/** - * Designed to be executed during a keyframe-based animation to apply any special-cased styles. - * - * When started (when the `start()` method is run) then the provided `startStyles` - * will be applied. When finished (when the `finish()` method is called) the - * `endStyles` will be applied as well any any starting styles. Finally when - * `destroy()` is called then all styles will be removed. - */ -class SpecialCasedStyles { - constructor(_element, _startStyles, _endStyles) { - this._element = _element; - this._startStyles = _startStyles; - this._endStyles = _endStyles; - this._state = 0 /* SpecialCasedStylesState.Pending */; - let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element); - if (!initialStyles) { - SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map()); - } - this._initialStyles = initialStyles; - } - start() { - if (this._state < 1 /* SpecialCasedStylesState.Started */) { - if (this._startStyles) { - setStyles(this._element, this._startStyles, this._initialStyles); - } - this._state = 1 /* SpecialCasedStylesState.Started */; - } - } - - finish() { - this.start(); - if (this._state < 2 /* SpecialCasedStylesState.Finished */) { - setStyles(this._element, this._initialStyles); - if (this._endStyles) { - setStyles(this._element, this._endStyles); - this._endStyles = null; - } - this._state = 1 /* SpecialCasedStylesState.Started */; - } - } - - destroy() { - this.finish(); - if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) { - SpecialCasedStyles.initialStylesByElement.delete(this._element); - if (this._startStyles) { - eraseStyles(this._element, this._startStyles); - this._endStyles = null; - } - if (this._endStyles) { - eraseStyles(this._element, this._endStyles); - this._endStyles = null; - } - setStyles(this._element, this._initialStyles); - this._state = 3 /* SpecialCasedStylesState.Destroyed */; - } - } -} -SpecialCasedStyles.initialStylesByElement = /* @__PURE__ */new WeakMap(); -function filterNonAnimatableStyles(styles) { - let result = null; - styles.forEach((val, prop) => { - if (isNonAnimatableStyle(prop)) { - result = result || new Map(); - result.set(prop, val); - } - }); - return result; -} -function isNonAnimatableStyle(prop) { - return prop === 'display' || prop === 'position'; -} -class WebAnimationsPlayer { - constructor(element, keyframes, options, _specialStyles) { - this.element = element; - this.keyframes = keyframes; - this.options = options; - this._specialStyles = _specialStyles; - this._onDoneFns = []; - this._onStartFns = []; - this._onDestroyFns = []; - this._initialized = false; - this._finished = false; - this._started = false; - this._destroyed = false; - // the following original fns are persistent copies of the _onStartFns and _onDoneFns - // and are used to reset the fns to their original values upon reset() - // (since the _onStartFns and _onDoneFns get deleted after they are called) - this._originalOnDoneFns = []; - this._originalOnStartFns = []; - this.time = 0; - this.parentPlayer = null; - this.currentSnapshot = new Map(); - this._duration = options['duration']; - this._delay = options['delay'] || 0; - this.time = this._duration + this._delay; - } - _onFinish() { - if (!this._finished) { - this._finished = true; - this._onDoneFns.forEach(fn => fn()); - this._onDoneFns = []; - } - } - init() { - this._buildPlayer(); - this._preparePlayerBeforeStart(); - } - _buildPlayer() { - if (this._initialized) return; - this._initialized = true; - const keyframes = this.keyframes; - // @ts-expect-error overwriting a readonly property - this.domPlayer = this._triggerWebAnimation(this.element, keyframes, this.options); - this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map(); - this.domPlayer.addEventListener('finish', () => this._onFinish()); - } - _preparePlayerBeforeStart() { - // this is required so that the player doesn't start to animate right away - if (this._delay) { - this._resetDomPlayerState(); - } else { - this.domPlayer.pause(); - } - } - _convertKeyframesToObject(keyframes) { - const kfs = []; - keyframes.forEach(frame => { - kfs.push(Object.fromEntries(frame)); - }); - return kfs; - } - /** @internal */ - _triggerWebAnimation(element, keyframes, options) { - // jscompiler doesn't seem to know animate is a native property because it's not fully - // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929] - return element['animate'](this._convertKeyframesToObject(keyframes), options); - } - onStart(fn) { - this._originalOnStartFns.push(fn); - this._onStartFns.push(fn); - } - onDone(fn) { - this._originalOnDoneFns.push(fn); - this._onDoneFns.push(fn); - } - onDestroy(fn) { - this._onDestroyFns.push(fn); - } - play() { - this._buildPlayer(); - if (!this.hasStarted()) { - this._onStartFns.forEach(fn => fn()); - this._onStartFns = []; - this._started = true; - if (this._specialStyles) { - this._specialStyles.start(); - } - } - this.domPlayer.play(); - } - pause() { - this.init(); - this.domPlayer.pause(); - } - finish() { - this.init(); - if (this._specialStyles) { - this._specialStyles.finish(); - } - this._onFinish(); - this.domPlayer.finish(); - } - reset() { - this._resetDomPlayerState(); - this._destroyed = false; - this._finished = false; - this._started = false; - this._onStartFns = this._originalOnStartFns; - this._onDoneFns = this._originalOnDoneFns; - } - _resetDomPlayerState() { - if (this.domPlayer) { - this.domPlayer.cancel(); - } - } - restart() { - this.reset(); - this.play(); - } - hasStarted() { - return this._started; - } - destroy() { - if (!this._destroyed) { - this._destroyed = true; - this._resetDomPlayerState(); - this._onFinish(); - if (this._specialStyles) { - this._specialStyles.destroy(); - } - this._onDestroyFns.forEach(fn => fn()); - this._onDestroyFns = []; - } - } - setPosition(p) { - if (this.domPlayer === undefined) { - this.init(); - } - this.domPlayer.currentTime = p * this.time; - } - getPosition() { - return this.domPlayer.currentTime / this.time; - } - get totalTime() { - return this._delay + this._duration; - } - beforeDestroy() { - const styles = new Map(); - if (this.hasStarted()) { - // note: this code is invoked only when the `play` function was called prior to this - // (thus `hasStarted` returns true), this implies that the code that initializes - // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here - const finalKeyframe = this._finalKeyframe; - finalKeyframe.forEach((val, prop) => { - if (prop !== 'offset') { - styles.set(prop, this._finished ? val : computeStyle(this.element, prop)); - } - }); - } - this.currentSnapshot = styles; - } - /** @internal */ - triggerCallback(phaseName) { - const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns; - methods.forEach(fn => fn()); - methods.length = 0; - } -} -class WebAnimationsDriver { - validateStyleProperty(prop) { - // Perform actual validation in dev mode only, in prod mode this check is a noop. - if (typeof ngDevMode === 'undefined' || ngDevMode) { - return validateStyleProperty(prop); - } - return true; - } - validateAnimatableStyleProperty(prop) { - // Perform actual validation in dev mode only, in prod mode this check is a noop. - if (typeof ngDevMode === 'undefined' || ngDevMode) { - const cssProp = camelCaseToDashCase(prop); - return validateWebAnimatableStyleProperty(cssProp); - } - return true; - } - matchesElement(_element, _selector) { - // This method is deprecated and no longer in use so we return false. - return false; - } - containsElement(elm1, elm2) { - return containsElement(elm1, elm2); - } - getParentElement(element) { - return getParentElement(element); - } - query(element, selector, multi) { - return invokeQuery(element, selector, multi); - } - computeStyle(element, prop, defaultValue) { - return window.getComputedStyle(element)[prop]; - } - animate(element, keyframes, duration, delay, easing, previousPlayers = []) { - const fill = delay == 0 ? 'both' : 'forwards'; - const playerOptions = { - duration, - delay, - fill - }; - // we check for this to avoid having a null|undefined value be present - // for the easing (which results in an error for certain browsers #9752) - if (easing) { - playerOptions['easing'] = easing; - } - const previousStyles = new Map(); - const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer); - if (allowPreviousPlayerStylesMerge(duration, delay)) { - previousWebAnimationPlayers.forEach(player => { - player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val)); - }); - } - let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles)); - _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles); - const specialStyles = packageNonAnimatableStyles(element, _keyframes); - return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles); - } -} - -/** - * @module - * @description - * Entry point for all animation APIs of the animation browser package. - */ - -/** - * @module - * @description - * Entry point for all public APIs of this package. - */ - -// This file is not used to build this module. It is only used during editing - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 3170: -/*!*****************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/a11y.mjs ***! - \*****************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ A11yModule: () => (/* binding */ A11yModule), -/* harmony export */ ActiveDescendantKeyManager: () => (/* binding */ ActiveDescendantKeyManager), -/* harmony export */ AriaDescriber: () => (/* binding */ AriaDescriber), -/* harmony export */ CDK_DESCRIBEDBY_HOST_ATTRIBUTE: () => (/* binding */ CDK_DESCRIBEDBY_HOST_ATTRIBUTE), -/* harmony export */ CDK_DESCRIBEDBY_ID_PREFIX: () => (/* binding */ CDK_DESCRIBEDBY_ID_PREFIX), -/* harmony export */ CdkAriaLive: () => (/* binding */ CdkAriaLive), -/* harmony export */ CdkMonitorFocus: () => (/* binding */ CdkMonitorFocus), -/* harmony export */ CdkTrapFocus: () => (/* binding */ CdkTrapFocus), -/* harmony export */ ConfigurableFocusTrap: () => (/* binding */ ConfigurableFocusTrap), -/* harmony export */ ConfigurableFocusTrapFactory: () => (/* binding */ ConfigurableFocusTrapFactory), -/* harmony export */ EventListenerFocusTrapInertStrategy: () => (/* binding */ EventListenerFocusTrapInertStrategy), -/* harmony export */ FOCUS_MONITOR_DEFAULT_OPTIONS: () => (/* binding */ FOCUS_MONITOR_DEFAULT_OPTIONS), -/* harmony export */ FOCUS_TRAP_INERT_STRATEGY: () => (/* binding */ FOCUS_TRAP_INERT_STRATEGY), -/* harmony export */ FocusKeyManager: () => (/* binding */ FocusKeyManager), -/* harmony export */ FocusMonitor: () => (/* binding */ FocusMonitor), -/* harmony export */ FocusTrap: () => (/* binding */ FocusTrap), -/* harmony export */ FocusTrapFactory: () => (/* binding */ FocusTrapFactory), -/* harmony export */ HighContrastModeDetector: () => (/* binding */ HighContrastModeDetector), -/* harmony export */ INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS: () => (/* binding */ INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS), -/* harmony export */ INPUT_MODALITY_DETECTOR_OPTIONS: () => (/* binding */ INPUT_MODALITY_DETECTOR_OPTIONS), -/* harmony export */ InputModalityDetector: () => (/* binding */ InputModalityDetector), -/* harmony export */ InteractivityChecker: () => (/* binding */ InteractivityChecker), -/* harmony export */ IsFocusableConfig: () => (/* binding */ IsFocusableConfig), -/* harmony export */ LIVE_ANNOUNCER_DEFAULT_OPTIONS: () => (/* binding */ LIVE_ANNOUNCER_DEFAULT_OPTIONS), -/* harmony export */ LIVE_ANNOUNCER_ELEMENT_TOKEN: () => (/* binding */ LIVE_ANNOUNCER_ELEMENT_TOKEN), -/* harmony export */ LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY: () => (/* binding */ LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY), -/* harmony export */ ListKeyManager: () => (/* binding */ ListKeyManager), -/* harmony export */ LiveAnnouncer: () => (/* binding */ LiveAnnouncer), -/* harmony export */ MESSAGES_CONTAINER_ID: () => (/* binding */ MESSAGES_CONTAINER_ID), -/* harmony export */ addAriaReferencedId: () => (/* binding */ addAriaReferencedId), -/* harmony export */ getAriaReferenceIds: () => (/* binding */ getAriaReferenceIds), -/* harmony export */ isFakeMousedownFromScreenReader: () => (/* binding */ isFakeMousedownFromScreenReader), -/* harmony export */ isFakeTouchstartFromScreenReader: () => (/* binding */ isFakeTouchstartFromScreenReader), -/* harmony export */ removeAriaReferencedId: () => (/* binding */ removeAriaReferencedId) -/* harmony export */ }); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common */ 6575); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/platform */ 3274); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs */ 4614); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! rxjs */ 462); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! rxjs */ 9681); -/* harmony import */ var _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/cdk/keycodes */ 554); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ 5746); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs/operators */ 5933); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs/operators */ 5046); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs/operators */ 7422); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! rxjs/operators */ 6939); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! rxjs/operators */ 1063); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! rxjs/operators */ 5083); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! rxjs/operators */ 3303); -/* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @angular/cdk/coercion */ 5998); -/* harmony import */ var _angular_cdk_observers__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/cdk/observers */ 6787); -/* harmony import */ var _angular_cdk_layout__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/cdk/layout */ 9743); - - - - - - - - - - - - - -/** IDs are delimited by an empty space, as per the spec. */ -const ID_DELIMITER = ' '; -/** - * Adds the given ID to the specified ARIA attribute on an element. - * Used for attributes such as aria-labelledby, aria-owns, etc. - */ -function addAriaReferencedId(el, attr, id) { - const ids = getAriaReferenceIds(el, attr); - if (ids.some(existingId => existingId.trim() == id.trim())) { - return; - } - ids.push(id.trim()); - el.setAttribute(attr, ids.join(ID_DELIMITER)); -} -/** - * Removes the given ID from the specified ARIA attribute on an element. - * Used for attributes such as aria-labelledby, aria-owns, etc. - */ -function removeAriaReferencedId(el, attr, id) { - const ids = getAriaReferenceIds(el, attr); - const filteredIds = ids.filter(val => val != id.trim()); - if (filteredIds.length) { - el.setAttribute(attr, filteredIds.join(ID_DELIMITER)); - } else { - el.removeAttribute(attr); - } -} -/** - * Gets the list of IDs referenced by the given ARIA attribute on an element. - * Used for attributes such as aria-labelledby, aria-owns, etc. - */ -function getAriaReferenceIds(el, attr) { - // Get string array of all individual ids (whitespace delimited) in the attribute value - return (el.getAttribute(attr) || '').match(/\S+/g) || []; -} - -/** - * ID used for the body container where all messages are appended. - * @deprecated No longer being used. To be removed. - * @breaking-change 14.0.0 - */ -const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container'; -/** - * ID prefix used for each created message element. - * @deprecated To be turned into a private variable. - * @breaking-change 14.0.0 - */ -const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message'; -/** - * Attribute given to each host element that is described by a message element. - * @deprecated To be turned into a private variable. - * @breaking-change 14.0.0 - */ -const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host'; -/** Global incremental identifier for each registered message element. */ -let nextId = 0; -/** - * Utility that creates visually hidden elements with a message content. Useful for elements that - * want to use aria-describedby to further describe themselves without adding additional visual - * content. - */ -class AriaDescriber { - constructor(_document, - /** - * @deprecated To be turned into a required parameter. - * @breaking-change 14.0.0 - */ - _platform) { - this._platform = _platform; - /** Map of all registered message elements that have been placed into the document. */ - this._messageRegistry = new Map(); - /** Container for all registered messages. */ - this._messagesContainer = null; - /** Unique ID for the service. */ - this._id = `${nextId++}`; - this._document = _document; - this._id = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_0__.APP_ID) + '-' + nextId++; - } - describe(hostElement, message, role) { - if (!this._canBeDescribed(hostElement, message)) { - return; - } - const key = getKey(message, role); - if (typeof message !== 'string') { - // We need to ensure that the element has an ID. - setMessageId(message, this._id); - this._messageRegistry.set(key, { - messageElement: message, - referenceCount: 0 - }); - } else if (!this._messageRegistry.has(key)) { - this._createMessageElement(message, role); - } - if (!this._isElementDescribedByMessage(hostElement, key)) { - this._addMessageReference(hostElement, key); - } - } - removeDescription(hostElement, message, role) { - if (!message || !this._isElementNode(hostElement)) { - return; - } - const key = getKey(message, role); - if (this._isElementDescribedByMessage(hostElement, key)) { - this._removeMessageReference(hostElement, key); - } - // If the message is a string, it means that it's one that we created for the - // consumer so we can remove it safely, otherwise we should leave it in place. - if (typeof message === 'string') { - const registeredMessage = this._messageRegistry.get(key); - if (registeredMessage && registeredMessage.referenceCount === 0) { - this._deleteMessageElement(key); - } - } - if (this._messagesContainer?.childNodes.length === 0) { - this._messagesContainer.remove(); - this._messagesContainer = null; - } - } - /** Unregisters all created message elements and removes the message container. */ - ngOnDestroy() { - const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}="${this._id}"]`); - for (let i = 0; i < describedElements.length; i++) { - this._removeCdkDescribedByReferenceIds(describedElements[i]); - describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE); - } - this._messagesContainer?.remove(); - this._messagesContainer = null; - this._messageRegistry.clear(); - } - /** - * Creates a new element in the visually hidden message container element with the message - * as its content and adds it to the message registry. - */ - _createMessageElement(message, role) { - const messageElement = this._document.createElement('div'); - setMessageId(messageElement, this._id); - messageElement.textContent = message; - if (role) { - messageElement.setAttribute('role', role); - } - this._createMessagesContainer(); - this._messagesContainer.appendChild(messageElement); - this._messageRegistry.set(getKey(message, role), { - messageElement, - referenceCount: 0 - }); - } - /** Deletes the message element from the global messages container. */ - _deleteMessageElement(key) { - this._messageRegistry.get(key)?.messageElement?.remove(); - this._messageRegistry.delete(key); - } - /** Creates the global container for all aria-describedby messages. */ - _createMessagesContainer() { - if (this._messagesContainer) { - return; - } - const containerClassName = 'cdk-describedby-message-container'; - const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform="server"]`); - for (let i = 0; i < serverContainers.length; i++) { - // When going from the server to the client, we may end up in a situation where there's - // already a container on the page, but we don't have a reference to it. Clear the - // old container so we don't get duplicates. Doing this, instead of emptying the previous - // container, should be slightly faster. - serverContainers[i].remove(); - } - const messagesContainer = this._document.createElement('div'); - // We add `visibility: hidden` in order to prevent text in this container from - // being searchable by the browser's Ctrl + F functionality. - // Screen-readers will still read the description for elements with aria-describedby even - // when the description element is not visible. - messagesContainer.style.visibility = 'hidden'; - // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that - // the description element doesn't impact page layout. - messagesContainer.classList.add(containerClassName); - messagesContainer.classList.add('cdk-visually-hidden'); - // @breaking-change 14.0.0 Remove null check for `_platform`. - if (this._platform && !this._platform.isBrowser) { - messagesContainer.setAttribute('platform', 'server'); - } - this._document.body.appendChild(messagesContainer); - this._messagesContainer = messagesContainer; - } - /** Removes all cdk-describedby messages that are hosted through the element. */ - _removeCdkDescribedByReferenceIds(element) { - // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX - const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0); - element.setAttribute('aria-describedby', originalReferenceIds.join(' ')); - } - /** - * Adds a message reference to the element using aria-describedby and increments the registered - * message's reference count. - */ - _addMessageReference(element, key) { - const registeredMessage = this._messageRegistry.get(key); - // Add the aria-describedby reference and set the - // describedby_host attribute to mark the element. - addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id); - element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id); - registeredMessage.referenceCount++; - } - /** - * Removes a message reference from the element using aria-describedby - * and decrements the registered message's reference count. - */ - _removeMessageReference(element, key) { - const registeredMessage = this._messageRegistry.get(key); - registeredMessage.referenceCount--; - removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id); - element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE); - } - /** Returns true if the element has been described by the provided message ID. */ - _isElementDescribedByMessage(element, key) { - const referenceIds = getAriaReferenceIds(element, 'aria-describedby'); - const registeredMessage = this._messageRegistry.get(key); - const messageId = registeredMessage && registeredMessage.messageElement.id; - return !!messageId && referenceIds.indexOf(messageId) != -1; - } - /** Determines whether a message can be described on a particular element. */ - _canBeDescribed(element, message) { - if (!this._isElementNode(element)) { - return false; - } - if (message && typeof message === 'object') { - // We'd have to make some assumptions about the description element's text, if the consumer - // passed in an element. Assume that if an element is passed in, the consumer has verified - // that it can be used as a description. - return true; - } - const trimmedMessage = message == null ? '' : `${message}`.trim(); - const ariaLabel = element.getAttribute('aria-label'); - // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the - // element, because screen readers will end up reading out the same text twice in a row. - return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false; - } - /** Checks whether a node is an Element node. */ - _isElementNode(element) { - return element.nodeType === this._document.ELEMENT_NODE; - } -} -AriaDescriber.ɵfac = function AriaDescriber_Factory(t) { - return new (t || AriaDescriber)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform)); -}; -AriaDescriber.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: AriaDescriber, - factory: AriaDescriber.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AriaDescriber, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }, { - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform - }]; - }, null); -})(); -/** Gets a key that can be used to look messages up in the registry. */ -function getKey(message, role) { - return typeof message === 'string' ? `${role || ''}/${message}` : message; -} -/** Assigns a unique ID to an element, if it doesn't have one already. */ -function setMessageId(element, serviceId) { - if (!element.id) { - element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`; - } -} - -/** - * This class manages keyboard events for selectable lists. If you pass it a query list - * of items, it will set the active item correctly when arrow events occur. - */ -class ListKeyManager { - constructor(_items) { - this._items = _items; - this._activeItemIndex = -1; - this._activeItem = null; - this._wrap = false; - this._letterKeyStream = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - this._typeaheadSubscription = rxjs__WEBPACK_IMPORTED_MODULE_4__.Subscription.EMPTY; - this._vertical = true; - this._allowedModifierKeys = []; - this._homeAndEnd = false; - this._pageUpAndDown = { - enabled: false, - delta: 10 - }; - /** - * Predicate function that can be used to check whether an item should be skipped - * by the key manager. By default, disabled items are skipped. - */ - this._skipPredicateFn = item => item.disabled; - // Buffer for the letters that the user has pressed when the typeahead option is turned on. - this._pressedLetters = []; - /** - * Stream that emits any time the TAB key is pressed, so components can react - * when focus is shifted off of the list. - */ - this.tabOut = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - /** Stream that emits whenever the active item of the list manager changes. */ - this.change = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - // We allow for the items to be an array because, in some cases, the consumer may - // not have access to a QueryList of the items they want to manage (e.g. when the - // items aren't being collected via `ViewChildren` or `ContentChildren`). - if (_items instanceof _angular_core__WEBPACK_IMPORTED_MODULE_0__.QueryList) { - this._itemChangesSubscription = _items.changes.subscribe(newItems => { - if (this._activeItem) { - const itemArray = newItems.toArray(); - const newIndex = itemArray.indexOf(this._activeItem); - if (newIndex > -1 && newIndex !== this._activeItemIndex) { - this._activeItemIndex = newIndex; - } - } - }); - } - } - /** - * Sets the predicate function that determines which items should be skipped by the - * list key manager. - * @param predicate Function that determines whether the given item should be skipped. - */ - skipPredicate(predicate) { - this._skipPredicateFn = predicate; - return this; - } - /** - * Configures wrapping mode, which determines whether the active item will wrap to - * the other end of list when there are no more items in the given direction. - * @param shouldWrap Whether the list should wrap when reaching the end. - */ - withWrap(shouldWrap = true) { - this._wrap = shouldWrap; - return this; - } - /** - * Configures whether the key manager should be able to move the selection vertically. - * @param enabled Whether vertical selection should be enabled. - */ - withVerticalOrientation(enabled = true) { - this._vertical = enabled; - return this; - } - /** - * Configures the key manager to move the selection horizontally. - * Passing in `null` will disable horizontal movement. - * @param direction Direction in which the selection can be moved. - */ - withHorizontalOrientation(direction) { - this._horizontal = direction; - return this; - } - /** - * Modifier keys which are allowed to be held down and whose default actions will be prevented - * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys. - */ - withAllowedModifierKeys(keys) { - this._allowedModifierKeys = keys; - return this; - } - /** - * Turns on typeahead mode which allows users to set the active item by typing. - * @param debounceInterval Time to wait after the last keystroke before setting the active item. - */ - withTypeAhead(debounceInterval = 200) { - if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._items.length && this._items.some(item => typeof item.getLabel !== 'function')) { - throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.'); - } - this._typeaheadSubscription.unsubscribe(); - // Debounce the presses of non-navigational keys, collect the ones that correspond to letters - // and convert those letters back into a string. Afterwards find the first item that starts - // with that string and select it. - this._typeaheadSubscription = this._letterKeyStream.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_5__.tap)(letter => this._pressedLetters.push(letter)), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_6__.debounceTime)(debounceInterval), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__.filter)(() => this._pressedLetters.length > 0), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_8__.map)(() => this._pressedLetters.join(''))).subscribe(inputString => { - const items = this._getItemsArray(); - // Start at 1 because we want to start searching at the item immediately - // following the current active item. - for (let i = 1; i < items.length + 1; i++) { - const index = (this._activeItemIndex + i) % items.length; - const item = items[index]; - if (!this._skipPredicateFn(item) && item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) { - this.setActiveItem(index); - break; - } - } - this._pressedLetters = []; - }); - return this; - } - /** Cancels the current typeahead sequence. */ - cancelTypeahead() { - this._pressedLetters = []; - return this; - } - /** - * Configures the key manager to activate the first and last items - * respectively when the Home or End key is pressed. - * @param enabled Whether pressing the Home or End key activates the first/last item. - */ - withHomeAndEnd(enabled = true) { - this._homeAndEnd = enabled; - return this; - } - /** - * Configures the key manager to activate every 10th, configured or first/last element in up/down direction - * respectively when the Page-Up or Page-Down key is pressed. - * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item. - * @param delta Whether pressing the Home or End key activates the first/last item. - */ - withPageUpDown(enabled = true, delta = 10) { - this._pageUpAndDown = { - enabled, - delta - }; - return this; - } - setActiveItem(item) { - const previousActiveItem = this._activeItem; - this.updateActiveItem(item); - if (this._activeItem !== previousActiveItem) { - this.change.next(this._activeItemIndex); - } - } - /** - * Sets the active item depending on the key event passed in. - * @param event Keyboard event to be used for determining which element should be active. - */ - onKeydown(event) { - const keyCode = event.keyCode; - const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey']; - const isModifierAllowed = modifiers.every(modifier => { - return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1; - }); - switch (keyCode) { - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.TAB: - this.tabOut.next(); - return; - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.DOWN_ARROW: - if (this._vertical && isModifierAllowed) { - this.setNextItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.UP_ARROW: - if (this._vertical && isModifierAllowed) { - this.setPreviousItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.RIGHT_ARROW: - if (this._horizontal && isModifierAllowed) { - this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.LEFT_ARROW: - if (this._horizontal && isModifierAllowed) { - this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.HOME: - if (this._homeAndEnd && isModifierAllowed) { - this.setFirstItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.END: - if (this._homeAndEnd && isModifierAllowed) { - this.setLastItemActive(); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.PAGE_UP: - if (this._pageUpAndDown.enabled && isModifierAllowed) { - const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta; - this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1); - break; - } else { - return; - } - case _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.PAGE_DOWN: - if (this._pageUpAndDown.enabled && isModifierAllowed) { - const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta; - const itemsLength = this._getItemsArray().length; - this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1); - break; - } else { - return; - } - default: - if (isModifierAllowed || (0,_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.hasModifierKey)(event, 'shiftKey')) { - // Attempt to use the `event.key` which also maps it to the user's keyboard language, - // otherwise fall back to resolving alphanumeric characters via the keyCode. - if (event.key && event.key.length === 1) { - this._letterKeyStream.next(event.key.toLocaleUpperCase()); - } else if (keyCode >= _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.A && keyCode <= _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.Z || keyCode >= _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.ZERO && keyCode <= _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.NINE) { - this._letterKeyStream.next(String.fromCharCode(keyCode)); - } - } - // Note that we return here, in order to avoid preventing - // the default action of non-navigational keys. - return; - } - this._pressedLetters = []; - event.preventDefault(); - } - /** Index of the currently active item. */ - get activeItemIndex() { - return this._activeItemIndex; - } - /** The active item. */ - get activeItem() { - return this._activeItem; - } - /** Gets whether the user is currently typing into the manager using the typeahead feature. */ - isTyping() { - return this._pressedLetters.length > 0; - } - /** Sets the active item to the first enabled item in the list. */ - setFirstItemActive() { - this._setActiveItemByIndex(0, 1); - } - /** Sets the active item to the last enabled item in the list. */ - setLastItemActive() { - this._setActiveItemByIndex(this._items.length - 1, -1); - } - /** Sets the active item to the next enabled item in the list. */ - setNextItemActive() { - this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1); - } - /** Sets the active item to a previous enabled item in the list. */ - setPreviousItemActive() { - this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1); - } - updateActiveItem(item) { - const itemArray = this._getItemsArray(); - const index = typeof item === 'number' ? item : itemArray.indexOf(item); - const activeItem = itemArray[index]; - // Explicitly check for `null` and `undefined` because other falsy values are valid. - this._activeItem = activeItem == null ? null : activeItem; - this._activeItemIndex = index; - } - /** Cleans up the key manager. */ - destroy() { - this._typeaheadSubscription.unsubscribe(); - this._itemChangesSubscription?.unsubscribe(); - this._letterKeyStream.complete(); - this.tabOut.complete(); - this.change.complete(); - this._pressedLetters = []; - } - /** - * This method sets the active item, given a list of items and the delta between the - * currently active item and the new active item. It will calculate differently - * depending on whether wrap mode is turned on. - */ - _setActiveItemByDelta(delta) { - this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta); - } - /** - * Sets the active item properly given "wrap" mode. In other words, it will continue to move - * down the list until it finds an item that is not disabled, and it will wrap if it - * encounters either end of the list. - */ - _setActiveInWrapMode(delta) { - const items = this._getItemsArray(); - for (let i = 1; i <= items.length; i++) { - const index = (this._activeItemIndex + delta * i + items.length) % items.length; - const item = items[index]; - if (!this._skipPredicateFn(item)) { - this.setActiveItem(index); - return; - } - } - } - /** - * Sets the active item properly given the default mode. In other words, it will - * continue to move down the list until it finds an item that is not disabled. If - * it encounters either end of the list, it will stop and not wrap. - */ - _setActiveInDefaultMode(delta) { - this._setActiveItemByIndex(this._activeItemIndex + delta, delta); - } - /** - * Sets the active item to the first enabled item starting at the index specified. If the - * item is disabled, it will move in the fallbackDelta direction until it either - * finds an enabled item or encounters the end of the list. - */ - _setActiveItemByIndex(index, fallbackDelta) { - const items = this._getItemsArray(); - if (!items[index]) { - return; - } - while (this._skipPredicateFn(items[index])) { - index += fallbackDelta; - if (!items[index]) { - return; - } - } - this.setActiveItem(index); - } - /** Returns the items as an array. */ - _getItemsArray() { - return this._items instanceof _angular_core__WEBPACK_IMPORTED_MODULE_0__.QueryList ? this._items.toArray() : this._items; - } -} -class ActiveDescendantKeyManager extends ListKeyManager { - setActiveItem(index) { - if (this.activeItem) { - this.activeItem.setInactiveStyles(); - } - super.setActiveItem(index); - if (this.activeItem) { - this.activeItem.setActiveStyles(); - } - } -} -class FocusKeyManager extends ListKeyManager { - constructor() { - super(...arguments); - this._origin = 'program'; - } - /** - * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls. - * @param origin Focus origin to be used when focusing items. - */ - setFocusOrigin(origin) { - this._origin = origin; - return this; - } - setActiveItem(item) { - super.setActiveItem(item); - if (this.activeItem) { - this.activeItem.focus(this._origin); - } - } -} - -/** - * Configuration for the isFocusable method. - */ -class IsFocusableConfig { - constructor() { - /** - * Whether to count an element as focusable even if it is not currently visible. - */ - this.ignoreVisibility = false; - } -} -// The InteractivityChecker leans heavily on the ally.js accessibility utilities. -// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are -// supported. -/** - * Utility for checking the interactivity of an element, such as whether is is focusable or - * tabbable. - */ -class InteractivityChecker { - constructor(_platform) { - this._platform = _platform; - } - /** - * Gets whether an element is disabled. - * - * @param element Element to be checked. - * @returns Whether the element is disabled. - */ - isDisabled(element) { - // This does not capture some cases, such as a non-form control with a disabled attribute or - // a form control inside of a disabled form, but should capture the most common cases. - return element.hasAttribute('disabled'); - } - /** - * Gets whether an element is visible for the purposes of interactivity. - * - * This will capture states like `display: none` and `visibility: hidden`, but not things like - * being clipped by an `overflow: hidden` parent or being outside the viewport. - * - * @returns Whether the element is visible. - */ - isVisible(element) { - return hasGeometry(element) && getComputedStyle(element).visibility === 'visible'; - } - /** - * Gets whether an element can be reached via Tab key. - * Assumes that the element has already been checked with isFocusable. - * - * @param element Element to be checked. - * @returns Whether the element is tabbable. - */ - isTabbable(element) { - // Nothing is tabbable on the server 😎 - if (!this._platform.isBrowser) { - return false; - } - const frameElement = getFrameElement(getWindow(element)); - if (frameElement) { - // Frame elements inherit their tabindex onto all child elements. - if (getTabIndexValue(frameElement) === -1) { - return false; - } - // Browsers disable tabbing to an element inside of an invisible frame. - if (!this.isVisible(frameElement)) { - return false; - } - } - let nodeName = element.nodeName.toLowerCase(); - let tabIndexValue = getTabIndexValue(element); - if (element.hasAttribute('contenteditable')) { - return tabIndexValue !== -1; - } - if (nodeName === 'iframe' || nodeName === 'object') { - // The frame or object's content may be tabbable depending on the content, but it's - // not possibly to reliably detect the content of the frames. We always consider such - // elements as non-tabbable. - return false; - } - // In iOS, the browser only considers some specific elements as tabbable. - if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) { - return false; - } - if (nodeName === 'audio') { - // Audio elements without controls enabled are never tabbable, regardless - // of the tabindex attribute explicitly being set. - if (!element.hasAttribute('controls')) { - return false; - } - // Audio elements with controls are by default tabbable unless the - // tabindex attribute is set to `-1` explicitly. - return tabIndexValue !== -1; - } - if (nodeName === 'video') { - // For all video elements, if the tabindex attribute is set to `-1`, the video - // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex` - // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The - // tabindex attribute is the source of truth here. - if (tabIndexValue === -1) { - return false; - } - // If the tabindex is explicitly set, and not `-1` (as per check before), the - // video element is always tabbable (regardless of whether it has controls or not). - if (tabIndexValue !== null) { - return true; - } - // Otherwise (when no explicit tabindex is set), a video is only tabbable if it - // has controls enabled. Firefox is special as videos are always tabbable regardless - // of whether there are controls or not. - return this._platform.FIREFOX || element.hasAttribute('controls'); - } - return element.tabIndex >= 0; - } - /** - * Gets whether an element can be focused by the user. - * - * @param element Element to be checked. - * @param config The config object with options to customize this method's behavior - * @returns Whether the element is focusable. - */ - isFocusable(element, config) { - // Perform checks in order of left to most expensive. - // Again, naive approach that does not capture many edge cases and browser quirks. - return isPotentiallyFocusable(element) && !this.isDisabled(element) && (config?.ignoreVisibility || this.isVisible(element)); - } -} -InteractivityChecker.ɵfac = function InteractivityChecker_Factory(t) { - return new (t || InteractivityChecker)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform)); -}; -InteractivityChecker.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: InteractivityChecker, - factory: InteractivityChecker.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](InteractivityChecker, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform - }]; - }, null); -})(); -/** - * Returns the frame element from a window object. Since browsers like MS Edge throw errors if - * the frameElement property is being accessed from a different host address, this property - * should be accessed carefully. - */ -function getFrameElement(window) { - try { - return window.frameElement; - } catch { - return null; - } -} -/** Checks whether the specified element has any geometry / rectangles. */ -function hasGeometry(element) { - // Use logic from jQuery to check for an invisible element. - // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12 - return !!(element.offsetWidth || element.offsetHeight || typeof element.getClientRects === 'function' && element.getClientRects().length); -} -/** Gets whether an element's */ -function isNativeFormElement(element) { - let nodeName = element.nodeName.toLowerCase(); - return nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea'; -} -/** Gets whether an element is an ``. */ -function isHiddenInput(element) { - return isInputElement(element) && element.type == 'hidden'; -} -/** Gets whether an element is an anchor that has an href attribute. */ -function isAnchorWithHref(element) { - return isAnchorElement(element) && element.hasAttribute('href'); -} -/** Gets whether an element is an input element. */ -function isInputElement(element) { - return element.nodeName.toLowerCase() == 'input'; -} -/** Gets whether an element is an anchor element. */ -function isAnchorElement(element) { - return element.nodeName.toLowerCase() == 'a'; -} -/** Gets whether an element has a valid tabindex. */ -function hasValidTabIndex(element) { - if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) { - return false; - } - let tabIndex = element.getAttribute('tabindex'); - return !!(tabIndex && !isNaN(parseInt(tabIndex, 10))); -} -/** - * Returns the parsed tabindex from the element attributes instead of returning the - * evaluated tabindex from the browsers defaults. - */ -function getTabIndexValue(element) { - if (!hasValidTabIndex(element)) { - return null; - } - // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054 - const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10); - return isNaN(tabIndex) ? -1 : tabIndex; -} -/** Checks whether the specified element is potentially tabbable on iOS */ -function isPotentiallyTabbableIOS(element) { - let nodeName = element.nodeName.toLowerCase(); - let inputType = nodeName === 'input' && element.type; - return inputType === 'text' || inputType === 'password' || nodeName === 'select' || nodeName === 'textarea'; -} -/** - * Gets whether an element is potentially focusable without taking current visible/disabled state - * into account. - */ -function isPotentiallyFocusable(element) { - // Inputs are potentially focusable *unless* they're type="hidden". - if (isHiddenInput(element)) { - return false; - } - return isNativeFormElement(element) || isAnchorWithHref(element) || element.hasAttribute('contenteditable') || hasValidTabIndex(element); -} -/** Gets the parent window of a DOM node with regards of being inside of an iframe. */ -function getWindow(node) { - // ownerDocument is null if `node` itself *is* a document. - return node.ownerDocument && node.ownerDocument.defaultView || window; -} - -/** - * Class that allows for trapping focus within a DOM element. - * - * This class currently uses a relatively simple approach to focus trapping. - * It assumes that the tab order is the same as DOM order, which is not necessarily true. - * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned. - * - * @deprecated Use `ConfigurableFocusTrap` instead. - * @breaking-change 11.0.0 - */ -class FocusTrap { - /** Whether the focus trap is active. */ - get enabled() { - return this._enabled; - } - set enabled(value) { - this._enabled = value; - if (this._startAnchor && this._endAnchor) { - this._toggleAnchorTabIndex(value, this._startAnchor); - this._toggleAnchorTabIndex(value, this._endAnchor); - } - } - constructor(_element, _checker, _ngZone, _document, deferAnchors = false) { - this._element = _element; - this._checker = _checker; - this._ngZone = _ngZone; - this._document = _document; - this._hasAttached = false; - // Event listeners for the anchors. Need to be regular functions so that we can unbind them later. - this.startAnchorListener = () => this.focusLastTabbableElement(); - this.endAnchorListener = () => this.focusFirstTabbableElement(); - this._enabled = true; - if (!deferAnchors) { - this.attachAnchors(); - } - } - /** Destroys the focus trap by cleaning up the anchors. */ - destroy() { - const startAnchor = this._startAnchor; - const endAnchor = this._endAnchor; - if (startAnchor) { - startAnchor.removeEventListener('focus', this.startAnchorListener); - startAnchor.remove(); - } - if (endAnchor) { - endAnchor.removeEventListener('focus', this.endAnchorListener); - endAnchor.remove(); - } - this._startAnchor = this._endAnchor = null; - this._hasAttached = false; - } - /** - * Inserts the anchors into the DOM. This is usually done automatically - * in the constructor, but can be deferred for cases like directives with `*ngIf`. - * @returns Whether the focus trap managed to attach successfully. This may not be the case - * if the target element isn't currently in the DOM. - */ - attachAnchors() { - // If we're not on the browser, there can be no focus to trap. - if (this._hasAttached) { - return true; - } - this._ngZone.runOutsideAngular(() => { - if (!this._startAnchor) { - this._startAnchor = this._createAnchor(); - this._startAnchor.addEventListener('focus', this.startAnchorListener); - } - if (!this._endAnchor) { - this._endAnchor = this._createAnchor(); - this._endAnchor.addEventListener('focus', this.endAnchorListener); - } - }); - if (this._element.parentNode) { - this._element.parentNode.insertBefore(this._startAnchor, this._element); - this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling); - this._hasAttached = true; - } - return this._hasAttached; - } - /** - * Waits for the zone to stabilize, then focuses the first tabbable element. - * @returns Returns a promise that resolves with a boolean, depending - * on whether focus was moved successfully. - */ - focusInitialElementWhenReady(options) { - return new Promise(resolve => { - this._executeOnStable(() => resolve(this.focusInitialElement(options))); - }); - } - /** - * Waits for the zone to stabilize, then focuses - * the first tabbable element within the focus trap region. - * @returns Returns a promise that resolves with a boolean, depending - * on whether focus was moved successfully. - */ - focusFirstTabbableElementWhenReady(options) { - return new Promise(resolve => { - this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options))); - }); - } - /** - * Waits for the zone to stabilize, then focuses - * the last tabbable element within the focus trap region. - * @returns Returns a promise that resolves with a boolean, depending - * on whether focus was moved successfully. - */ - focusLastTabbableElementWhenReady(options) { - return new Promise(resolve => { - this._executeOnStable(() => resolve(this.focusLastTabbableElement(options))); - }); - } - /** - * Get the specified boundary element of the trapped region. - * @param bound The boundary to get (start or end of trapped region). - * @returns The boundary element. - */ - _getRegionBoundary(bound) { - // Contains the deprecated version of selector, for temporary backwards comparability. - const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`); - if (typeof ngDevMode === 'undefined' || ngDevMode) { - for (let i = 0; i < markers.length; i++) { - // @breaking-change 8.0.0 - if (markers[i].hasAttribute(`cdk-focus-${bound}`)) { - console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + `attribute will be removed in 8.0.0.`, markers[i]); - } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) { - console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + `will be removed in 8.0.0.`, markers[i]); - } - } - } - if (bound == 'start') { - return markers.length ? markers[0] : this._getFirstTabbableElement(this._element); - } - return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element); - } - /** - * Focuses the element that should be focused when the focus trap is initialized. - * @returns Whether focus was moved successfully. - */ - focusInitialElement(options) { - // Contains the deprecated version of selector, for temporary backwards comparability. - const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`); - if (redirectToElement) { - // @breaking-change 8.0.0 - if ((typeof ngDevMode === 'undefined' || ngDevMode) && redirectToElement.hasAttribute(`cdk-focus-initial`)) { - console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + `will be removed in 8.0.0`, redirectToElement); - } - // Warn the consumer if the element they've pointed to - // isn't focusable, when not in production mode. - if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._checker.isFocusable(redirectToElement)) { - console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement); - } - if (!this._checker.isFocusable(redirectToElement)) { - const focusableChild = this._getFirstTabbableElement(redirectToElement); - focusableChild?.focus(options); - return !!focusableChild; - } - redirectToElement.focus(options); - return true; - } - return this.focusFirstTabbableElement(options); - } - /** - * Focuses the first tabbable element within the focus trap region. - * @returns Whether focus was moved successfully. - */ - focusFirstTabbableElement(options) { - const redirectToElement = this._getRegionBoundary('start'); - if (redirectToElement) { - redirectToElement.focus(options); - } - return !!redirectToElement; - } - /** - * Focuses the last tabbable element within the focus trap region. - * @returns Whether focus was moved successfully. - */ - focusLastTabbableElement(options) { - const redirectToElement = this._getRegionBoundary('end'); - if (redirectToElement) { - redirectToElement.focus(options); - } - return !!redirectToElement; - } - /** - * Checks whether the focus trap has successfully been attached. - */ - hasAttached() { - return this._hasAttached; - } - /** Get the first tabbable element from a DOM subtree (inclusive). */ - _getFirstTabbableElement(root) { - if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) { - return root; - } - const children = root.children; - for (let i = 0; i < children.length; i++) { - const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null; - if (tabbableChild) { - return tabbableChild; - } - } - return null; - } - /** Get the last tabbable element from a DOM subtree (inclusive). */ - _getLastTabbableElement(root) { - if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) { - return root; - } - // Iterate in reverse DOM order. - const children = root.children; - for (let i = children.length - 1; i >= 0; i--) { - const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null; - if (tabbableChild) { - return tabbableChild; - } - } - return null; - } - /** Creates an anchor element. */ - _createAnchor() { - const anchor = this._document.createElement('div'); - this._toggleAnchorTabIndex(this._enabled, anchor); - anchor.classList.add('cdk-visually-hidden'); - anchor.classList.add('cdk-focus-trap-anchor'); - anchor.setAttribute('aria-hidden', 'true'); - return anchor; - } - /** - * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap. - * @param isEnabled Whether the focus trap is enabled. - * @param anchor Anchor on which to toggle the tabindex. - */ - _toggleAnchorTabIndex(isEnabled, anchor) { - // Remove the tabindex completely, rather than setting it to -1, because if the - // element has a tabindex, the user might still hit it when navigating with the arrow keys. - isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex'); - } - /** - * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape. - * @param enabled: Whether the anchors should trap Tab. - */ - toggleAnchors(enabled) { - if (this._startAnchor && this._endAnchor) { - this._toggleAnchorTabIndex(enabled, this._startAnchor); - this._toggleAnchorTabIndex(enabled, this._endAnchor); - } - } - /** Executes a function when the zone is stable. */ - _executeOnStable(fn) { - if (this._ngZone.isStable) { - fn(); - } else { - this._ngZone.onStable.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_10__.take)(1)).subscribe(fn); - } - } -} -/** - * Factory that allows easy instantiation of focus traps. - * @deprecated Use `ConfigurableFocusTrapFactory` instead. - * @breaking-change 11.0.0 - */ -class FocusTrapFactory { - constructor(_checker, _ngZone, _document) { - this._checker = _checker; - this._ngZone = _ngZone; - this._document = _document; - } - /** - * Creates a focus-trapped region around the given element. - * @param element The element around which focus will be trapped. - * @param deferCaptureElements Defers the creation of focus-capturing elements to be done - * manually by the user. - * @returns The created focus trap instance. - */ - create(element, deferCaptureElements = false) { - return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements); - } -} -FocusTrapFactory.ɵfac = function FocusTrapFactory_Factory(t) { - return new (t || FocusTrapFactory)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](InteractivityChecker), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT)); -}; -FocusTrapFactory.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: FocusTrapFactory, - factory: FocusTrapFactory.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](FocusTrapFactory, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: InteractivityChecker - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }]; - }, null); -})(); -/** Directive for trapping focus within a region. */ -class CdkTrapFocus { - /** Whether the focus trap is active. */ - get enabled() { - return this.focusTrap.enabled; - } - set enabled(value) { - this.focusTrap.enabled = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__.coerceBooleanProperty)(value); - } - /** - * Whether the directive should automatically move focus into the trapped region upon - * initialization and return focus to the previous activeElement upon destruction. - */ - get autoCapture() { - return this._autoCapture; - } - set autoCapture(value) { - this._autoCapture = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__.coerceBooleanProperty)(value); - } - constructor(_elementRef, _focusTrapFactory, - /** - * @deprecated No longer being used. To be removed. - * @breaking-change 13.0.0 - */ - _document) { - this._elementRef = _elementRef; - this._focusTrapFactory = _focusTrapFactory; - /** Previously focused element to restore focus to upon destroy when using autoCapture. */ - this._previouslyFocusedElement = null; - this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true); - } - ngOnDestroy() { - this.focusTrap.destroy(); - // If we stored a previously focused element when using autoCapture, return focus to that - // element now that the trapped region is being destroyed. - if (this._previouslyFocusedElement) { - this._previouslyFocusedElement.focus(); - this._previouslyFocusedElement = null; - } - } - ngAfterContentInit() { - this.focusTrap.attachAnchors(); - if (this.autoCapture) { - this._captureFocus(); - } - } - ngDoCheck() { - if (!this.focusTrap.hasAttached()) { - this.focusTrap.attachAnchors(); - } - } - ngOnChanges(changes) { - const autoCaptureChange = changes['autoCapture']; - if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture && this.focusTrap.hasAttached()) { - this._captureFocus(); - } - } - _captureFocus() { - this._previouslyFocusedElement = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getFocusedElementPierceShadowDom)(); - this.focusTrap.focusInitialElementWhenReady(); - } -} -CdkTrapFocus.ɵfac = function CdkTrapFocus_Factory(t) { - return new (t || CdkTrapFocus)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](FocusTrapFactory), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT)); -}; -CdkTrapFocus.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: CdkTrapFocus, - selectors: [["", "cdkTrapFocus", ""]], - inputs: { - enabled: ["cdkTrapFocus", "enabled"], - autoCapture: ["cdkTrapFocusAutoCapture", "autoCapture"] - }, - exportAs: ["cdkTrapFocus"], - features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵNgOnChangesFeature"]] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CdkTrapFocus, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[cdkTrapFocus]', - exportAs: 'cdkTrapFocus' - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: FocusTrapFactory - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }]; - }, { - enabled: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['cdkTrapFocus'] - }], - autoCapture: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['cdkTrapFocusAutoCapture'] - }] - }); -})(); - -/** - * Class that allows for trapping focus within a DOM element. - * - * This class uses a strategy pattern that determines how it traps focus. - * See FocusTrapInertStrategy. - */ -class ConfigurableFocusTrap extends FocusTrap { - /** Whether the FocusTrap is enabled. */ - get enabled() { - return this._enabled; - } - set enabled(value) { - this._enabled = value; - if (this._enabled) { - this._focusTrapManager.register(this); - } else { - this._focusTrapManager.deregister(this); - } - } - constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) { - super(_element, _checker, _ngZone, _document, config.defer); - this._focusTrapManager = _focusTrapManager; - this._inertStrategy = _inertStrategy; - this._focusTrapManager.register(this); - } - /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */ - destroy() { - this._focusTrapManager.deregister(this); - super.destroy(); - } - /** @docs-private Implemented as part of ManagedFocusTrap. */ - _enable() { - this._inertStrategy.preventFocus(this); - this.toggleAnchors(true); - } - /** @docs-private Implemented as part of ManagedFocusTrap. */ - _disable() { - this._inertStrategy.allowFocus(this); - this.toggleAnchors(false); - } -} - -/** The injection token used to specify the inert strategy. */ -const FOCUS_TRAP_INERT_STRATEGY = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('FOCUS_TRAP_INERT_STRATEGY'); - -/** - * Lightweight FocusTrapInertStrategy that adds a document focus event - * listener to redirect focus back inside the FocusTrap. - */ -class EventListenerFocusTrapInertStrategy { - constructor() { - /** Focus event handler. */ - this._listener = null; - } - /** Adds a document event listener that keeps focus inside the FocusTrap. */ - preventFocus(focusTrap) { - // Ensure there's only one listener per document - if (this._listener) { - focusTrap._document.removeEventListener('focus', this._listener, true); - } - this._listener = e => this._trapFocus(focusTrap, e); - focusTrap._ngZone.runOutsideAngular(() => { - focusTrap._document.addEventListener('focus', this._listener, true); - }); - } - /** Removes the event listener added in preventFocus. */ - allowFocus(focusTrap) { - if (!this._listener) { - return; - } - focusTrap._document.removeEventListener('focus', this._listener, true); - this._listener = null; - } - /** - * Refocuses the first element in the FocusTrap if the focus event target was outside - * the FocusTrap. - * - * This is an event listener callback. The event listener is added in runOutsideAngular, - * so all this code runs outside Angular as well. - */ - _trapFocus(focusTrap, event) { - const target = event.target; - const focusTrapRoot = focusTrap._element; - // Don't refocus if target was in an overlay, because the overlay might be associated - // with an element inside the FocusTrap, ex. mat-select. - if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) { - // Some legacy FocusTrap usages have logic that focuses some element on the page - // just before FocusTrap is destroyed. For backwards compatibility, wait - // to be sure FocusTrap is still enabled before refocusing. - setTimeout(() => { - // Check whether focus wasn't put back into the focus trap while the timeout was pending. - if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) { - focusTrap.focusFirstTabbableElement(); - } - }); - } - } -} - -/** Injectable that ensures only the most recently enabled FocusTrap is active. */ -class FocusTrapManager { - constructor() { - // A stack of the FocusTraps on the page. Only the FocusTrap at the - // top of the stack is active. - this._focusTrapStack = []; - } - /** - * Disables the FocusTrap at the top of the stack, and then pushes - * the new FocusTrap onto the stack. - */ - register(focusTrap) { - // Dedupe focusTraps that register multiple times. - this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap); - let stack = this._focusTrapStack; - if (stack.length) { - stack[stack.length - 1]._disable(); - } - stack.push(focusTrap); - focusTrap._enable(); - } - /** - * Removes the FocusTrap from the stack, and activates the - * FocusTrap that is the new top of the stack. - */ - deregister(focusTrap) { - focusTrap._disable(); - const stack = this._focusTrapStack; - const i = stack.indexOf(focusTrap); - if (i !== -1) { - stack.splice(i, 1); - if (stack.length) { - stack[stack.length - 1]._enable(); - } - } - } -} -FocusTrapManager.ɵfac = function FocusTrapManager_Factory(t) { - return new (t || FocusTrapManager)(); -}; -FocusTrapManager.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: FocusTrapManager, - factory: FocusTrapManager.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](FocusTrapManager, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], null, null); -})(); - -/** Factory that allows easy instantiation of configurable focus traps. */ -class ConfigurableFocusTrapFactory { - constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) { - this._checker = _checker; - this._ngZone = _ngZone; - this._focusTrapManager = _focusTrapManager; - this._document = _document; - // TODO split up the strategies into different modules, similar to DateAdapter. - this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy(); - } - create(element, config = { - defer: false - }) { - let configObject; - if (typeof config === 'boolean') { - configObject = { - defer: config - }; - } else { - configObject = config; - } - return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject); - } -} -ConfigurableFocusTrapFactory.ɵfac = function ConfigurableFocusTrapFactory_Factory(t) { - return new (t || ConfigurableFocusTrapFactory)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](InteractivityChecker), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](FocusTrapManager), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](FOCUS_TRAP_INERT_STRATEGY, 8)); -}; -ConfigurableFocusTrapFactory.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: ConfigurableFocusTrapFactory, - factory: ConfigurableFocusTrapFactory.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](ConfigurableFocusTrapFactory, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: InteractivityChecker - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }, { - type: FocusTrapManager - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [FOCUS_TRAP_INERT_STRATEGY] - }] - }]; - }, null); -})(); - -/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */ -function isFakeMousedownFromScreenReader(event) { - // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on - // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are - // zero or `event.buttons` is zero, depending on the browser: - // - `event.buttons` works on Firefox, but fails on Chrome. - // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox. - // Note that there's an edge case where the user could click the 0x0 spot of the - // screen themselves, but that is unlikely to contain interactive elements. - return event.buttons === 0 || event.offsetX === 0 && event.offsetY === 0; -} -/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */ -function isFakeTouchstartFromScreenReader(event) { - const touch = event.touches && event.touches[0] || event.changedTouches && event.changedTouches[0]; - // A fake `touchstart` can be distinguished from a real one by looking at the `identifier` - // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe, - // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10 - // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88. - return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) && (touch.radiusY == null || touch.radiusY === 1); -} - -/** - * Injectable options for the InputModalityDetector. These are shallowly merged with the default - * options. - */ -const INPUT_MODALITY_DETECTOR_OPTIONS = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('cdk-input-modality-detector-options'); -/** - * Default options for the InputModalityDetector. - * - * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect - * keyboard input modality) for two reasons: - * - * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open - * in new tab', and are thus less representative of actual keyboard interaction. - * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but - * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore - * these keys so as to not update the input modality. - * - * Note that we do not by default ignore the right Meta key on Safari because it has the same key - * code as the ContextMenu key on other browsers. When we switch to using event.key, we can - * distinguish between the two. - */ -const INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = { - ignoreKeys: [_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.ALT, _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.CONTROL, _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.MAC_META, _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.META, _angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_9__.SHIFT] -}; -/** - * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown - * event to be attributed as mouse and not touch. - * - * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found - * that a value of around 650ms seems appropriate. - */ -const TOUCH_BUFFER_MS = 650; -/** - * Event listener options that enable capturing and also mark the listener as passive if the browser - * supports it. - */ -const modalityEventListenerOptions = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.normalizePassiveListenerOptions)({ - passive: true, - capture: true -}); -/** - * Service that detects the user's input modality. - * - * This service does not update the input modality when a user navigates with a screen reader - * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC - * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not - * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a - * screen reader is akin to visually scanning a page, and should not be interpreted as actual user - * input interaction. - * - * When a user is not navigating but *interacting* with a screen reader, this service attempts to - * update the input modality to keyboard, but in general this service's behavior is largely - * undefined. - */ -class InputModalityDetector { - /** The most recently detected input modality. */ - get mostRecentModality() { - return this._modality.value; - } - constructor(_platform, ngZone, document, options) { - this._platform = _platform; - /** - * The most recently detected input modality event target. Is null if no input modality has been - * detected or if the associated event target is null for some unknown reason. - */ - this._mostRecentTarget = null; - /** The underlying BehaviorSubject that emits whenever an input modality is detected. */ - this._modality = new rxjs__WEBPACK_IMPORTED_MODULE_12__.BehaviorSubject(null); - /** - * The timestamp of the last touch input modality. Used to determine whether mousedown events - * should be attributed to mouse or touch. - */ - this._lastTouchMs = 0; - /** - * Handles keydown events. Must be an arrow function in order to preserve the context when it gets - * bound. - */ - this._onKeydown = event => { - // If this is one of the keys we should ignore, then ignore it and don't update the input - // modality to keyboard. - if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) { - return; - } - this._modality.next('keyboard'); - this._mostRecentTarget = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getEventTarget)(event); - }; - /** - * Handles mousedown events. Must be an arrow function in order to preserve the context when it - * gets bound. - */ - this._onMousedown = event => { - // Touches trigger both touch and mouse events, so we need to distinguish between mouse events - // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely - // after the previous touch event. - if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) { - return; - } - // Fake mousedown events are fired by some screen readers when controls are activated by the - // screen reader. Attribute them to keyboard input modality. - this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse'); - this._mostRecentTarget = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getEventTarget)(event); - }; - /** - * Handles touchstart events. Must be an arrow function in order to preserve the context when it - * gets bound. - */ - this._onTouchstart = event => { - // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart - // events are fired. Again, attribute to keyboard input modality. - if (isFakeTouchstartFromScreenReader(event)) { - this._modality.next('keyboard'); - return; - } - // Store the timestamp of this touch event, as it's used to distinguish between mouse events - // triggered via mouse vs touch. - this._lastTouchMs = Date.now(); - this._modality.next('touch'); - this._mostRecentTarget = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getEventTarget)(event); - }; - this._options = { - ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, - ...options - }; - // Skip the first emission as it's null. - this.modalityDetected = this._modality.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_13__.skip)(1)); - this.modalityChanged = this.modalityDetected.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_14__.distinctUntilChanged)()); - // If we're not in a browser, this service should do nothing, as there's no relevant input - // modality to detect. - if (_platform.isBrowser) { - ngZone.runOutsideAngular(() => { - document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions); - document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions); - document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions); - }); - } - } - ngOnDestroy() { - this._modality.complete(); - if (this._platform.isBrowser) { - document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions); - document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions); - document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions); - } - } -} -InputModalityDetector.ɵfac = function InputModalityDetector_Factory(t) { - return new (t || InputModalityDetector)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](INPUT_MODALITY_DETECTOR_OPTIONS, 8)); -}; -InputModalityDetector.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: InputModalityDetector, - factory: InputModalityDetector.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](InputModalityDetector, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }, { - type: Document, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [INPUT_MODALITY_DETECTOR_OPTIONS] - }] - }]; - }, null); -})(); -const LIVE_ANNOUNCER_ELEMENT_TOKEN = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('liveAnnouncerElement', { - providedIn: 'root', - factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY -}); -/** @docs-private */ -function LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() { - return null; -} -/** Injection token that can be used to configure the default options for the LiveAnnouncer. */ -const LIVE_ANNOUNCER_DEFAULT_OPTIONS = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS'); -let uniqueIds = 0; -class LiveAnnouncer { - constructor(elementToken, _ngZone, _document, _defaultOptions) { - this._ngZone = _ngZone; - this._defaultOptions = _defaultOptions; - // We inject the live element and document as `any` because the constructor signature cannot - // reference browser globals (HTMLElement, Document) on non-browser environments, since having - // a class decorator causes TypeScript to preserve the constructor signature types. - this._document = _document; - this._liveElement = elementToken || this._createLiveElement(); - } - announce(message, ...args) { - const defaultOptions = this._defaultOptions; - let politeness; - let duration; - if (args.length === 1 && typeof args[0] === 'number') { - duration = args[0]; - } else { - [politeness, duration] = args; - } - this.clear(); - clearTimeout(this._previousTimeout); - if (!politeness) { - politeness = defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite'; - } - if (duration == null && defaultOptions) { - duration = defaultOptions.duration; - } - // TODO: ensure changing the politeness works on all environments we support. - this._liveElement.setAttribute('aria-live', politeness); - if (this._liveElement.id) { - this._exposeAnnouncerToModals(this._liveElement.id); - } - // This 100ms timeout is necessary for some browser + screen-reader combinations: - // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout. - // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a - // second time without clearing and then using a non-zero delay. - // (using JAWS 17 at time of this writing). - return this._ngZone.runOutsideAngular(() => { - if (!this._currentPromise) { - this._currentPromise = new Promise(resolve => this._currentResolve = resolve); - } - clearTimeout(this._previousTimeout); - this._previousTimeout = setTimeout(() => { - this._liveElement.textContent = message; - if (typeof duration === 'number') { - this._previousTimeout = setTimeout(() => this.clear(), duration); - } - this._currentResolve(); - this._currentPromise = this._currentResolve = undefined; - }, 100); - return this._currentPromise; - }); - } - /** - * Clears the current text from the announcer element. Can be used to prevent - * screen readers from reading the text out again while the user is going - * through the page landmarks. - */ - clear() { - if (this._liveElement) { - this._liveElement.textContent = ''; - } - } - ngOnDestroy() { - clearTimeout(this._previousTimeout); - this._liveElement?.remove(); - this._liveElement = null; - this._currentResolve?.(); - this._currentPromise = this._currentResolve = undefined; - } - _createLiveElement() { - const elementClass = 'cdk-live-announcer-element'; - const previousElements = this._document.getElementsByClassName(elementClass); - const liveEl = this._document.createElement('div'); - // Remove any old containers. This can happen when coming in from a server-side-rendered page. - for (let i = 0; i < previousElements.length; i++) { - previousElements[i].remove(); - } - liveEl.classList.add(elementClass); - liveEl.classList.add('cdk-visually-hidden'); - liveEl.setAttribute('aria-atomic', 'true'); - liveEl.setAttribute('aria-live', 'polite'); - liveEl.id = `cdk-live-announcer-${uniqueIds++}`; - this._document.body.appendChild(liveEl); - return liveEl; - } - /** - * Some browsers won't expose the accessibility node of the live announcer element if there is an - * `aria-modal` and the live announcer is outside of it. This method works around the issue by - * pointing the `aria-owns` of all modals to the live announcer element. - */ - _exposeAnnouncerToModals(id) { - // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with - // the `SnakBarContainer` and other usages. - // - // Note that the selector here is limited to CDK overlays at the moment in order to reduce the - // section of the DOM we need to look through. This should cover all the cases we support, but - // the selector can be expanded if it turns out to be too narrow. - const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]'); - for (let i = 0; i < modals.length; i++) { - const modal = modals[i]; - const ariaOwns = modal.getAttribute('aria-owns'); - if (!ariaOwns) { - modal.setAttribute('aria-owns', id); - } else if (ariaOwns.indexOf(id) === -1) { - modal.setAttribute('aria-owns', ariaOwns + ' ' + id); - } - } - } -} -LiveAnnouncer.ɵfac = function LiveAnnouncer_Factory(t) { - return new (t || LiveAnnouncer)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8)); -}; -LiveAnnouncer.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: LiveAnnouncer, - factory: LiveAnnouncer.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](LiveAnnouncer, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [LIVE_ANNOUNCER_ELEMENT_TOKEN] - }] - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS] - }] - }]; - }, null); -})(); -/** - * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility - * with a wider range of browsers and screen readers. - */ -class CdkAriaLive { - /** The aria-live politeness level to use when announcing messages. */ - get politeness() { - return this._politeness; - } - set politeness(value) { - this._politeness = value === 'off' || value === 'assertive' ? value : 'polite'; - if (this._politeness === 'off') { - if (this._subscription) { - this._subscription.unsubscribe(); - this._subscription = null; - } - } else if (!this._subscription) { - this._subscription = this._ngZone.runOutsideAngular(() => { - return this._contentObserver.observe(this._elementRef).subscribe(() => { - // Note that we use textContent here, rather than innerText, in order to avoid a reflow. - const elementText = this._elementRef.nativeElement.textContent; - // The `MutationObserver` fires also for attribute - // changes which we don't want to announce. - if (elementText !== this._previousAnnouncedText) { - this._liveAnnouncer.announce(elementText, this._politeness, this.duration); - this._previousAnnouncedText = elementText; - } - }); - }); - } - } - constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) { - this._elementRef = _elementRef; - this._liveAnnouncer = _liveAnnouncer; - this._contentObserver = _contentObserver; - this._ngZone = _ngZone; - this._politeness = 'polite'; - } - ngOnDestroy() { - if (this._subscription) { - this._subscription.unsubscribe(); - } - } -} -CdkAriaLive.ɵfac = function CdkAriaLive_Factory(t) { - return new (t || CdkAriaLive)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](LiveAnnouncer), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_cdk_observers__WEBPACK_IMPORTED_MODULE_15__.ContentObserver), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone)); -}; -CdkAriaLive.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: CdkAriaLive, - selectors: [["", "cdkAriaLive", ""]], - inputs: { - politeness: ["cdkAriaLive", "politeness"], - duration: ["cdkAriaLiveDuration", "duration"] - }, - exportAs: ["cdkAriaLive"] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CdkAriaLive, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[cdkAriaLive]', - exportAs: 'cdkAriaLive' - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: LiveAnnouncer - }, { - type: _angular_cdk_observers__WEBPACK_IMPORTED_MODULE_15__.ContentObserver - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }]; - }, { - politeness: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['cdkAriaLive'] - }], - duration: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['cdkAriaLiveDuration'] - }] - }); -})(); - -/** InjectionToken for FocusMonitorOptions. */ -const FOCUS_MONITOR_DEFAULT_OPTIONS = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('cdk-focus-monitor-default-options'); -/** - * Event listener options that enable capturing and also - * mark the listener as passive if the browser supports it. - */ -const captureEventListenerOptions = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.normalizePassiveListenerOptions)({ - passive: true, - capture: true -}); -/** Monitors mouse and keyboard events to determine the cause of focus events. */ -class FocusMonitor { - constructor(_ngZone, _platform, _inputModalityDetector, /** @breaking-change 11.0.0 make document required */ - document, options) { - this._ngZone = _ngZone; - this._platform = _platform; - this._inputModalityDetector = _inputModalityDetector; - /** The focus origin that the next focus event is a result of. */ - this._origin = null; - /** Whether the window has just been focused. */ - this._windowFocused = false; - /** - * Whether the origin was determined via a touch interaction. Necessary as properly attributing - * focus events to touch interactions requires special logic. - */ - this._originFromTouchInteraction = false; - /** Map of elements being monitored to their info. */ - this._elementInfo = new Map(); - /** The number of elements currently being monitored. */ - this._monitoredElementCount = 0; - /** - * Keeps track of the root nodes to which we've currently bound a focus/blur handler, - * as well as the number of monitored elements that they contain. We have to treat focus/blur - * handlers differently from the rest of the events, because the browser won't emit events - * to the document when focus moves inside of a shadow root. - */ - this._rootNodeFocusListenerCount = new Map(); - /** - * Event listener for `focus` events on the window. - * Needs to be an arrow function in order to preserve the context when it gets bound. - */ - this._windowFocusListener = () => { - // Make a note of when the window regains focus, so we can - // restore the origin info for the focused element. - this._windowFocused = true; - this._windowFocusTimeoutId = window.setTimeout(() => this._windowFocused = false); - }; - /** Subject for stopping our InputModalityDetector subscription. */ - this._stopInputModalityDetector = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - /** - * Event listener for `focus` and 'blur' events on the document. - * Needs to be an arrow function in order to preserve the context when it gets bound. - */ - this._rootNodeFocusAndBlurListener = event => { - const target = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getEventTarget)(event); - // We need to walk up the ancestor chain in order to support `checkChildren`. - for (let element = target; element; element = element.parentElement) { - if (event.type === 'focus') { - this._onFocus(event, element); - } else { - this._onBlur(event, element); - } - } - }; - this._document = document; - this._detectionMode = options?.detectionMode || 0 /* FocusMonitorDetectionMode.IMMEDIATE */; - } - - monitor(element, checkChildren = false) { - const nativeElement = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__.coerceElement)(element); - // Do nothing if we're not on the browser platform or the passed in node isn't an element. - if (!this._platform.isBrowser || nativeElement.nodeType !== 1) { - // Note: we don't want the observable to emit at all so we don't pass any parameters. - return (0,rxjs__WEBPACK_IMPORTED_MODULE_16__.of)(); - } - // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to - // the shadow root, rather than the `document`, because the browser won't emit focus events - // to the `document`, if focus is moving within the same shadow root. - const rootNode = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getShadowRoot)(nativeElement) || this._getDocument(); - const cachedInfo = this._elementInfo.get(nativeElement); - // Check if we're already monitoring this element. - if (cachedInfo) { - if (checkChildren) { - // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren - // observers into ones that behave as if `checkChildren` was turned on. We need a more - // robust solution. - cachedInfo.checkChildren = true; - } - return cachedInfo.subject; - } - // Create monitored element info. - const info = { - checkChildren: checkChildren, - subject: new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(), - rootNode - }; - this._elementInfo.set(nativeElement, info); - this._registerGlobalListeners(info); - return info.subject; - } - stopMonitoring(element) { - const nativeElement = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__.coerceElement)(element); - const elementInfo = this._elementInfo.get(nativeElement); - if (elementInfo) { - elementInfo.subject.complete(); - this._setClasses(nativeElement); - this._elementInfo.delete(nativeElement); - this._removeGlobalListeners(elementInfo); - } - } - focusVia(element, origin, options) { - const nativeElement = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__.coerceElement)(element); - const focusedElement = this._getDocument().activeElement; - // If the element is focused already, calling `focus` again won't trigger the event listener - // which means that the focus classes won't be updated. If that's the case, update the classes - // directly without waiting for an event. - if (nativeElement === focusedElement) { - this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info)); - } else { - this._setOrigin(origin); - // `focus` isn't available on the server - if (typeof nativeElement.focus === 'function') { - nativeElement.focus(options); - } - } - } - ngOnDestroy() { - this._elementInfo.forEach((_info, element) => this.stopMonitoring(element)); - } - /** Access injected document if available or fallback to global document reference */ - _getDocument() { - return this._document || document; - } - /** Use defaultView of injected document if available or fallback to global window reference */ - _getWindow() { - const doc = this._getDocument(); - return doc.defaultView || window; - } - _getFocusOrigin(focusEventTarget) { - if (this._origin) { - // If the origin was realized via a touch interaction, we need to perform additional checks - // to determine whether the focus origin should be attributed to touch or program. - if (this._originFromTouchInteraction) { - return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program'; - } else { - return this._origin; - } - } - // If the window has just regained focus, we can restore the most recent origin from before the - // window blurred. Otherwise, we've reached the point where we can't identify the source of the - // focus. This typically means one of two things happened: - // - // 1) The element was programmatically focused, or - // 2) The element was focused via screen reader navigation (which generally doesn't fire - // events). - // - // Because we can't distinguish between these two cases, we default to setting `program`. - if (this._windowFocused && this._lastFocusOrigin) { - return this._lastFocusOrigin; - } - // If the interaction is coming from an input label, we consider it a mouse interactions. - // This is a special case where focus moves on `click`, rather than `mousedown` which breaks - // our detection, because all our assumptions are for `mousedown`. We need to handle this - // special case, because it's very common for checkboxes and radio buttons. - if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) { - return 'mouse'; - } - return 'program'; - } - /** - * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a - * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we - * handle a focus event following a touch interaction, we need to determine whether (1) the focus - * event was directly caused by the touch interaction or (2) the focus event was caused by a - * subsequent programmatic focus call triggered by the touch interaction. - * @param focusEventTarget The target of the focus event under examination. - */ - _shouldBeAttributedToTouch(focusEventTarget) { - // Please note that this check is not perfect. Consider the following edge case: - // - //
- //
- //
- // - // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches - // #child, #parent is programmatically focused. This code will attribute the focus to touch - // instead of program. This is a relatively minor edge-case that can be worked around by using - // focusVia(parent, 'program') to focus #parent. - return this._detectionMode === 1 /* FocusMonitorDetectionMode.EVENTUAL */ || !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget); - } - /** - * Sets the focus classes on the element based on the given focus origin. - * @param element The element to update the classes on. - * @param origin The focus origin. - */ - _setClasses(element, origin) { - element.classList.toggle('cdk-focused', !!origin); - element.classList.toggle('cdk-touch-focused', origin === 'touch'); - element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard'); - element.classList.toggle('cdk-mouse-focused', origin === 'mouse'); - element.classList.toggle('cdk-program-focused', origin === 'program'); - } - /** - * Updates the focus origin. If we're using immediate detection mode, we schedule an async - * function to clear the origin at the end of a timeout. The duration of the timeout depends on - * the origin being set. - * @param origin The origin to set. - * @param isFromInteraction Whether we are setting the origin from an interaction event. - */ - _setOrigin(origin, isFromInteraction = false) { - this._ngZone.runOutsideAngular(() => { - this._origin = origin; - this._originFromTouchInteraction = origin === 'touch' && isFromInteraction; - // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms - // for a touch event). We reset the origin at the next tick because Firefox focuses one tick - // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for - // a touch event because when a touch event is fired, the associated focus event isn't yet in - // the event queue. Before doing so, clear any pending timeouts. - if (this._detectionMode === 0 /* FocusMonitorDetectionMode.IMMEDIATE */) { - clearTimeout(this._originTimeoutId); - const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1; - this._originTimeoutId = setTimeout(() => this._origin = null, ms); - } - }); - } - /** - * Handles focus events on a registered element. - * @param event The focus event. - * @param element The monitored element. - */ - _onFocus(event, element) { - // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent - // focus event affecting the monitored element. If we want to use the origin of the first event - // instead we should check for the cdk-focused class here and return if the element already has - // it. (This only matters for elements that have includesChildren = true). - // If we are not counting child-element-focus as focused, make sure that the event target is the - // monitored element itself. - const elementInfo = this._elementInfo.get(element); - const focusEventTarget = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__._getEventTarget)(event); - if (!elementInfo || !elementInfo.checkChildren && element !== focusEventTarget) { - return; - } - this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo); - } - /** - * Handles blur events on a registered element. - * @param event The blur event. - * @param element The monitored element. - */ - _onBlur(event, element) { - // If we are counting child-element-focus as focused, make sure that we aren't just blurring in - // order to focus another child of the monitored element. - const elementInfo = this._elementInfo.get(element); - if (!elementInfo || elementInfo.checkChildren && event.relatedTarget instanceof Node && element.contains(event.relatedTarget)) { - return; - } - this._setClasses(element); - this._emitOrigin(elementInfo, null); - } - _emitOrigin(info, origin) { - if (info.subject.observers.length) { - this._ngZone.run(() => info.subject.next(origin)); - } - } - _registerGlobalListeners(elementInfo) { - if (!this._platform.isBrowser) { - return; - } - const rootNode = elementInfo.rootNode; - const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0; - if (!rootNodeFocusListeners) { - this._ngZone.runOutsideAngular(() => { - rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions); - rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions); - }); - } - this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1); - // Register global listeners when first element is monitored. - if (++this._monitoredElementCount === 1) { - // Note: we listen to events in the capture phase so we - // can detect them even if the user stops propagation. - this._ngZone.runOutsideAngular(() => { - const window = this._getWindow(); - window.addEventListener('focus', this._windowFocusListener); - }); - // The InputModalityDetector is also just a collection of global listeners. - this._inputModalityDetector.modalityDetected.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_17__.takeUntil)(this._stopInputModalityDetector)).subscribe(modality => { - this._setOrigin(modality, true /* isFromInteraction */); - }); - } - } - - _removeGlobalListeners(elementInfo) { - const rootNode = elementInfo.rootNode; - if (this._rootNodeFocusListenerCount.has(rootNode)) { - const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode); - if (rootNodeFocusListeners > 1) { - this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1); - } else { - rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions); - rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions); - this._rootNodeFocusListenerCount.delete(rootNode); - } - } - // Unregister global listeners when last element is unmonitored. - if (! --this._monitoredElementCount) { - const window = this._getWindow(); - window.removeEventListener('focus', this._windowFocusListener); - // Equivalently, stop our InputModalityDetector subscription. - this._stopInputModalityDetector.next(); - // Clear timeouts for all potentially pending timeouts to prevent the leaks. - clearTimeout(this._windowFocusTimeoutId); - clearTimeout(this._originTimeoutId); - } - } - /** Updates all the state on an element once its focus origin has changed. */ - _originChanged(element, origin, elementInfo) { - this._setClasses(element, origin); - this._emitOrigin(elementInfo, origin); - this._lastFocusOrigin = origin; - } - /** - * Collects the `MonitoredElementInfo` of a particular element and - * all of its ancestors that have enabled `checkChildren`. - * @param element Element from which to start the search. - */ - _getClosestElementsInfo(element) { - const results = []; - this._elementInfo.forEach((info, currentElement) => { - if (currentElement === element || info.checkChildren && currentElement.contains(element)) { - results.push([currentElement, info]); - } - }); - return results; - } - /** - * Returns whether an interaction is likely to have come from the user clicking the `label` of - * an `input` or `textarea` in order to focus it. - * @param focusEventTarget Target currently receiving focus. - */ - _isLastInteractionFromInputLabel(focusEventTarget) { - const { - _mostRecentTarget: mostRecentTarget, - mostRecentModality - } = this._inputModalityDetector; - // If the last interaction used the mouse on an element contained by one of the labels - // of an `input`/`textarea` that is currently focused, it is very likely that the - // user redirected focus using the label. - if (mostRecentModality !== 'mouse' || !mostRecentTarget || mostRecentTarget === focusEventTarget || focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA' || focusEventTarget.disabled) { - return false; - } - const labels = focusEventTarget.labels; - if (labels) { - for (let i = 0; i < labels.length; i++) { - if (labels[i].contains(mostRecentTarget)) { - return true; - } - } - } - return false; - } -} -FocusMonitor.ɵfac = function FocusMonitor_Factory(t) { - return new (t || FocusMonitor)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](InputModalityDetector), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT, 8), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](FOCUS_MONITOR_DEFAULT_OPTIONS, 8)); -}; -FocusMonitor.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: FocusMonitor, - factory: FocusMonitor.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](FocusMonitor, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }, { - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform - }, { - type: InputModalityDetector - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [FOCUS_MONITOR_DEFAULT_OPTIONS] - }] - }]; - }, null); -})(); -/** - * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or - * programmatically) and adds corresponding classes to the element. - * - * There are two variants of this directive: - * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is - * focused. - * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused. - */ -class CdkMonitorFocus { - constructor(_elementRef, _focusMonitor) { - this._elementRef = _elementRef; - this._focusMonitor = _focusMonitor; - this._focusOrigin = null; - this.cdkFocusChange = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter(); - } - get focusOrigin() { - return this._focusOrigin; - } - ngAfterViewInit() { - const element = this._elementRef.nativeElement; - this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus')).subscribe(origin => { - this._focusOrigin = origin; - this.cdkFocusChange.emit(origin); - }); - } - ngOnDestroy() { - this._focusMonitor.stopMonitoring(this._elementRef); - if (this._monitorSubscription) { - this._monitorSubscription.unsubscribe(); - } - } -} -CdkMonitorFocus.ɵfac = function CdkMonitorFocus_Factory(t) { - return new (t || CdkMonitorFocus)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](FocusMonitor)); -}; -CdkMonitorFocus.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: CdkMonitorFocus, - selectors: [["", "cdkMonitorElementFocus", ""], ["", "cdkMonitorSubtreeFocus", ""]], - outputs: { - cdkFocusChange: "cdkFocusChange" - }, - exportAs: ["cdkMonitorFocus"] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CdkMonitorFocus, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]', - exportAs: 'cdkMonitorFocus' - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: FocusMonitor - }]; - }, { - cdkFocusChange: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Output - }] - }); -})(); - -/** CSS class applied to the document body when in black-on-white high-contrast mode. */ -const BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white'; -/** CSS class applied to the document body when in white-on-black high-contrast mode. */ -const WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black'; -/** CSS class applied to the document body when in high-contrast mode. */ -const HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active'; -/** - * Service to determine whether the browser is currently in a high-contrast-mode environment. - * - * Microsoft Windows supports an accessibility feature called "High Contrast Mode". This mode - * changes the appearance of all applications, including web applications, to dramatically increase - * contrast. - * - * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast - * Mode. This service does not detect high-contrast mode as added by the Chrome "High Contrast" - * browser extension. - */ -class HighContrastModeDetector { - constructor(_platform, document) { - this._platform = _platform; - this._document = document; - this._breakpointSubscription = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_cdk_layout__WEBPACK_IMPORTED_MODULE_18__.BreakpointObserver).observe('(forced-colors: active)').subscribe(() => { - if (this._hasCheckedHighContrastMode) { - this._hasCheckedHighContrastMode = false; - this._applyBodyHighContrastModeCssClasses(); - } - }); - } - /** Gets the current high-contrast-mode for the page. */ - getHighContrastMode() { - if (!this._platform.isBrowser) { - return 0 /* HighContrastMode.NONE */; - } - // Create a test element with an arbitrary background-color that is neither black nor - // white; high-contrast mode will coerce the color to either black or white. Also ensure that - // appending the test element to the DOM does not affect layout by absolutely positioning it - const testElement = this._document.createElement('div'); - testElement.style.backgroundColor = 'rgb(1,2,3)'; - testElement.style.position = 'absolute'; - this._document.body.appendChild(testElement); - // Get the computed style for the background color, collapsing spaces to normalize between - // browsers. Once we get this color, we no longer need the test element. Access the `window` - // via the document so we can fake it in tests. Note that we have extra null checks, because - // this logic will likely run during app bootstrap and throwing can break the entire app. - const documentWindow = this._document.defaultView || window; - const computedStyle = documentWindow && documentWindow.getComputedStyle ? documentWindow.getComputedStyle(testElement) : null; - const computedColor = (computedStyle && computedStyle.backgroundColor || '').replace(/ /g, ''); - testElement.remove(); - switch (computedColor) { - // Pre Windows 11 dark theme. - case 'rgb(0,0,0)': - // Windows 11 dark themes. - case 'rgb(45,50,54)': - case 'rgb(32,32,32)': - return 2 /* HighContrastMode.WHITE_ON_BLACK */; - // Pre Windows 11 light theme. - case 'rgb(255,255,255)': - // Windows 11 light theme. - case 'rgb(255,250,239)': - return 1 /* HighContrastMode.BLACK_ON_WHITE */; - } - - return 0 /* HighContrastMode.NONE */; - } - - ngOnDestroy() { - this._breakpointSubscription.unsubscribe(); - } - /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */ - _applyBodyHighContrastModeCssClasses() { - if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) { - const bodyClasses = this._document.body.classList; - bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS); - this._hasCheckedHighContrastMode = true; - const mode = this.getHighContrastMode(); - if (mode === 1 /* HighContrastMode.BLACK_ON_WHITE */) { - bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS); - } else if (mode === 2 /* HighContrastMode.WHITE_ON_BLACK */) { - bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS); - } - } - } -} -HighContrastModeDetector.ɵfac = function HighContrastModeDetector_Factory(t) { - return new (t || HighContrastModeDetector)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT)); -}; -HighContrastModeDetector.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: HighContrastModeDetector, - factory: HighContrastModeDetector.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](HighContrastModeDetector, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__.Platform - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT] - }] - }]; - }, null); -})(); -class A11yModule { - constructor(highContrastModeDetector) { - highContrastModeDetector._applyBodyHighContrastModeCssClasses(); - } -} -A11yModule.ɵfac = function A11yModule_Factory(t) { - return new (t || A11yModule)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](HighContrastModeDetector)); -}; -A11yModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ - type: A11yModule -}); -A11yModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ - imports: [_angular_cdk_observers__WEBPACK_IMPORTED_MODULE_15__.ObserversModule] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](A11yModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule, - args: [{ - imports: [_angular_cdk_observers__WEBPACK_IMPORTED_MODULE_15__.ObserversModule], - declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], - exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] - }] - }], function () { - return [{ - type: HighContrastModeDetector - }]; - }, null); -})(); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 4565: -/*!*****************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/bidi.mjs ***! - \*****************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ BidiModule: () => (/* binding */ BidiModule), -/* harmony export */ DIR_DOCUMENT: () => (/* binding */ DIR_DOCUMENT), -/* harmony export */ Dir: () => (/* binding */ Dir), -/* harmony export */ Directionality: () => (/* binding */ Directionality) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common */ 6575); - - - - -/** - * Injection token used to inject the document into Directionality. - * This is used so that the value can be faked in tests. - * - * We can't use the real document in tests because changing the real `dir` causes geometry-based - * tests in Safari to fail. - * - * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests - * themselves use things like `querySelector` in test code. - * - * This token is defined in a separate file from Directionality as a workaround for - * https://github.com/angular/angular/issues/22559 - * - * @docs-private - */ -const DIR_DOCUMENT = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('cdk-dir-doc', { - providedIn: 'root', - factory: DIR_DOCUMENT_FACTORY -}); -/** @docs-private */ -function DIR_DOCUMENT_FACTORY() { - return (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_common__WEBPACK_IMPORTED_MODULE_1__.DOCUMENT); -} - -/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */ -const RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i; -/** Resolves a string value to a specific direction. */ -function _resolveDirectionality(rawValue) { - const value = rawValue?.toLowerCase() || ''; - if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) { - return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr'; - } - return value === 'rtl' ? 'rtl' : 'ltr'; -} -/** - * The directionality (LTR / RTL) context for the application (or a subtree of it). - * Exposes the current direction and a stream of direction changes. - */ -class Directionality { - constructor(_document) { - /** The current 'ltr' or 'rtl' value. */ - this.value = 'ltr'; - /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */ - this.change = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter(); - if (_document) { - const bodyDir = _document.body ? _document.body.dir : null; - const htmlDir = _document.documentElement ? _document.documentElement.dir : null; - this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr'); - } - } - ngOnDestroy() { - this.change.complete(); - } -} -Directionality.ɵfac = function Directionality_Factory(t) { - return new (t || Directionality)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](DIR_DOCUMENT, 8)); -}; -Directionality.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: Directionality, - factory: Directionality.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](Directionality, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [DIR_DOCUMENT] - }] - }]; - }, null); -})(); - -/** - * Directive to listen for changes of direction of part of the DOM. - * - * Provides itself as Directionality such that descendant directives only need to ever inject - * Directionality to get the closest direction. - */ -class Dir { - constructor() { - /** Normalized direction that accounts for invalid/unsupported values. */ - this._dir = 'ltr'; - /** Whether the `value` has been set to its initial value. */ - this._isInitialized = false; - /** Event emitted when the direction changes. */ - this.change = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter(); - } - /** @docs-private */ - get dir() { - return this._dir; - } - set dir(value) { - const previousValue = this._dir; - // Note: `_resolveDirectionality` resolves the language based on the browser's language, - // whereas the browser does it based on the content of the element. Since doing so based - // on the content can be expensive, for now we're doing the simpler matching. - this._dir = _resolveDirectionality(value); - this._rawDir = value; - if (previousValue !== this._dir && this._isInitialized) { - this.change.emit(this._dir); - } - } - /** Current layout direction of the element. */ - get value() { - return this.dir; - } - /** Initialize once default value has been set. */ - ngAfterContentInit() { - this._isInitialized = true; - } - ngOnDestroy() { - this.change.complete(); - } -} -Dir.ɵfac = function Dir_Factory(t) { - return new (t || Dir)(); -}; -Dir.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: Dir, - selectors: [["", "dir", ""]], - hostVars: 1, - hostBindings: function Dir_HostBindings(rf, ctx) { - if (rf & 2) { - _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵattribute"]("dir", ctx._rawDir); - } - }, - inputs: { - dir: "dir" - }, - outputs: { - change: "dirChange" - }, - exportAs: ["dir"], - features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵProvidersFeature"]([{ - provide: Directionality, - useExisting: Dir - }])] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](Dir, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[dir]', - providers: [{ - provide: Directionality, - useExisting: Dir - }], - host: { - '[attr.dir]': '_rawDir' - }, - exportAs: 'dir' - }] - }], null, { - change: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Output, - args: ['dirChange'] - }], - dir: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -class BidiModule {} -BidiModule.ɵfac = function BidiModule_Factory(t) { - return new (t || BidiModule)(); -}; -BidiModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ - type: BidiModule -}); -BidiModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](BidiModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule, - args: [{ - exports: [Dir], - declarations: [Dir] - }] - }], null, null); -})(); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 7149: -/*!****************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/cdk.mjs ***! - \****************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ VERSION: () => (/* binding */ VERSION) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); - - -/** Current version of the Angular Component Development Kit. */ -const VERSION = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.Version('16.1.7'); - - -/***/ }), - -/***/ 5998: -/*!*********************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/coercion.mjs ***! - \*********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ _isNumberValue: () => (/* binding */ _isNumberValue), -/* harmony export */ coerceArray: () => (/* binding */ coerceArray), -/* harmony export */ coerceBooleanProperty: () => (/* binding */ coerceBooleanProperty), -/* harmony export */ coerceCssPixelValue: () => (/* binding */ coerceCssPixelValue), -/* harmony export */ coerceElement: () => (/* binding */ coerceElement), -/* harmony export */ coerceNumberProperty: () => (/* binding */ coerceNumberProperty), -/* harmony export */ coerceStringArray: () => (/* binding */ coerceStringArray) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); - - -/** Coerces a data-bound value (typically a string) to a boolean. */ -function coerceBooleanProperty(value) { - return value != null && `${value}` !== 'false'; -} -function coerceNumberProperty(value, fallbackValue = 0) { - return _isNumberValue(value) ? Number(value) : fallbackValue; -} -/** - * Whether the provided value is considered a number. - * @docs-private - */ -function _isNumberValue(value) { - // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string, - // and other non-number values as NaN, where Number just uses 0) but it considers the string - // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN. - return !isNaN(parseFloat(value)) && !isNaN(Number(value)); -} -function coerceArray(value) { - return Array.isArray(value) ? value : [value]; -} - -/** Coerces a value to a CSS pixel value. */ -function coerceCssPixelValue(value) { - if (value == null) { - return ''; - } - return typeof value === 'string' ? value : `${value}px`; -} - -/** - * Coerces an ElementRef or an Element into an element. - * Useful for APIs that can accept either a ref or the native element itself. - */ -function coerceElement(elementOrRef) { - return elementOrRef instanceof _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef ? elementOrRef.nativeElement : elementOrRef; -} - -/** - * Coerces a value to an array of trimmed non-empty strings. - * Any input that is not an array, `null` or `undefined` will be turned into a string - * via `toString()` and subsequently split with the given separator. - * `null` and `undefined` will result in an empty array. - * This results in the following outcomes: - * - `null` -> `[]` - * - `[null]` -> `["null"]` - * - `["a", "b ", " "]` -> `["a", "b"]` - * - `[1, [2, 3]]` -> `["1", "2,3"]` - * - `[{ a: 0 }]` -> `["[object Object]"]` - * - `{ a: 0 }` -> `["[object", "Object]"]` - * - * Useful for defining CSS classes or table columns. - * @param value the value to coerce into an array of strings - * @param separator split-separator if value isn't an array - */ -function coerceStringArray(value, separator = /\s+/) { - const result = []; - if (value != null) { - const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator); - for (const sourceValue of sourceValues) { - const trimmedString = `${sourceValue}`.trim(); - if (trimmedString) { - result.push(trimmedString); - } - } - } - return result; -} - - -/***/ }), - -/***/ 636: -/*!************************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/collections.mjs ***! - \************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ArrayDataSource: () => (/* binding */ ArrayDataSource), -/* harmony export */ DataSource: () => (/* binding */ DataSource), -/* harmony export */ SelectionModel: () => (/* binding */ SelectionModel), -/* harmony export */ UniqueSelectionDispatcher: () => (/* binding */ UniqueSelectionDispatcher), -/* harmony export */ _DisposeViewRepeaterStrategy: () => (/* binding */ _DisposeViewRepeaterStrategy), -/* harmony export */ _RecycleViewRepeaterStrategy: () => (/* binding */ _RecycleViewRepeaterStrategy), -/* harmony export */ _VIEW_REPEATER_STRATEGY: () => (/* binding */ _VIEW_REPEATER_STRATEGY), -/* harmony export */ getMultipleValuesInSingleSelectionError: () => (/* binding */ getMultipleValuesInSingleSelectionError), -/* harmony export */ isDataSource: () => (/* binding */ isDataSource) -/* harmony export */ }); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ 9148); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 2450); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 9681); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); - - - -class DataSource {} -/** Checks whether an object is a data source. */ -function isDataSource(value) { - // Check if the value is a DataSource by observing if it has a connect function. Cannot - // be checked as an `instanceof DataSource` since people could create their own sources - // that match the interface, but don't extend DataSource. We also can't use `isObservable` - // here, because of some internal apps. - return value && typeof value.connect === 'function' && !(value instanceof rxjs__WEBPACK_IMPORTED_MODULE_0__.ConnectableObservable); -} - -/** DataSource wrapper for a native array. */ -class ArrayDataSource extends DataSource { - constructor(_data) { - super(); - this._data = _data; - } - connect() { - return (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.isObservable)(this._data) ? this._data : (0,rxjs__WEBPACK_IMPORTED_MODULE_2__.of)(this._data); - } - disconnect() {} -} - -/** - * A repeater that destroys views when they are removed from a - * {@link ViewContainerRef}. When new items are inserted into the container, - * the repeater will always construct a new embedded view for each item. - * - * @template T The type for the embedded view's $implicit property. - * @template R The type for the item in each IterableDiffer change record. - * @template C The type for the context passed to each embedded view. - */ -class _DisposeViewRepeaterStrategy { - applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) { - changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => { - let view; - let operation; - if (record.previousIndex == null) { - const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex); - view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index); - operation = 1 /* _ViewRepeaterOperation.INSERTED */; - } else if (currentIndex == null) { - viewContainerRef.remove(adjustedPreviousIndex); - operation = 3 /* _ViewRepeaterOperation.REMOVED */; - } else { - view = viewContainerRef.get(adjustedPreviousIndex); - viewContainerRef.move(view, currentIndex); - operation = 2 /* _ViewRepeaterOperation.MOVED */; - } - - if (itemViewChanged) { - itemViewChanged({ - context: view?.context, - operation, - record - }); - } - }); - } - detach() {} -} - -/** - * A repeater that caches views when they are removed from a - * {@link ViewContainerRef}. When new items are inserted into the container, - * the repeater will reuse one of the cached views instead of creating a new - * embedded view. Recycling cached views reduces the quantity of expensive DOM - * inserts. - * - * @template T The type for the embedded view's $implicit property. - * @template R The type for the item in each IterableDiffer change record. - * @template C The type for the context passed to each embedded view. - */ -class _RecycleViewRepeaterStrategy { - constructor() { - /** - * The size of the cache used to store unused views. - * Setting the cache size to `0` will disable caching. Defaults to 20 views. - */ - this.viewCacheSize = 20; - /** - * View cache that stores embedded view instances that have been previously stamped out, - * but don't are not currently rendered. The view repeater will reuse these views rather than - * creating brand new ones. - * - * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance. - */ - this._viewCache = []; - } - /** Apply changes to the DOM. */ - applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) { - // Rearrange the views to put them in the right location. - changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => { - let view; - let operation; - if (record.previousIndex == null) { - // Item added. - const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex); - view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record)); - operation = view ? 1 /* _ViewRepeaterOperation.INSERTED */ : 0 /* _ViewRepeaterOperation.REPLACED */; - } else if (currentIndex == null) { - // Item removed. - this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef); - operation = 3 /* _ViewRepeaterOperation.REMOVED */; - } else { - // Item moved. - view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record)); - operation = 2 /* _ViewRepeaterOperation.MOVED */; - } - - if (itemViewChanged) { - itemViewChanged({ - context: view?.context, - operation, - record - }); - } - }); - } - detach() { - for (const view of this._viewCache) { - view.destroy(); - } - this._viewCache = []; - } - /** - * Inserts a view for a new item, either from the cache or by creating a new - * one. Returns `undefined` if the item was inserted into a cached view. - */ - _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) { - const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef); - if (cachedView) { - cachedView.context.$implicit = value; - return undefined; - } - const viewArgs = viewArgsFactory(); - return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index); - } - /** Detaches the view at the given index and inserts into the view cache. */ - _detachAndCacheView(index, viewContainerRef) { - const detachedView = viewContainerRef.detach(index); - this._maybeCacheView(detachedView, viewContainerRef); - } - /** Moves view at the previous index to the current index. */ - _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) { - const view = viewContainerRef.get(adjustedPreviousIndex); - viewContainerRef.move(view, currentIndex); - view.context.$implicit = value; - return view; - } - /** - * Cache the given detached view. If the cache is full, the view will be - * destroyed. - */ - _maybeCacheView(view, viewContainerRef) { - if (this._viewCache.length < this.viewCacheSize) { - this._viewCache.push(view); - } else { - const index = viewContainerRef.indexOf(view); - // The host component could remove views from the container outside of - // the view repeater. It's unlikely this will occur, but just in case, - // destroy the view on its own, otherwise destroy it through the - // container to ensure that all the references are removed. - if (index === -1) { - view.destroy(); - } else { - viewContainerRef.remove(index); - } - } - } - /** Inserts a recycled view from the cache at the given index. */ - _insertViewFromCache(index, viewContainerRef) { - const cachedView = this._viewCache.pop(); - if (cachedView) { - viewContainerRef.insert(cachedView, index); - } - return cachedView || null; - } -} - -/** - * Class to be used to power selecting one or more options from a list. - */ -class SelectionModel { - /** Selected values. */ - get selected() { - if (!this._selected) { - this._selected = Array.from(this._selection.values()); - } - return this._selected; - } - constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) { - this._multiple = _multiple; - this._emitChanges = _emitChanges; - this.compareWith = compareWith; - /** Currently-selected values. */ - this._selection = new Set(); - /** Keeps track of the deselected options that haven't been emitted by the change event. */ - this._deselectedToEmit = []; - /** Keeps track of the selected options that haven't been emitted by the change event. */ - this._selectedToEmit = []; - /** Event emitted when the value has changed. */ - this.changed = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - if (initiallySelectedValues && initiallySelectedValues.length) { - if (_multiple) { - initiallySelectedValues.forEach(value => this._markSelected(value)); - } else { - this._markSelected(initiallySelectedValues[0]); - } - // Clear the array in order to avoid firing the change event for preselected values. - this._selectedToEmit.length = 0; - } - } - /** - * Selects a value or an array of values. - * @param values The values to select - * @return Whether the selection changed as a result of this call - * @breaking-change 16.0.0 make return type boolean - */ - select(...values) { - this._verifyValueAssignment(values); - values.forEach(value => this._markSelected(value)); - const changed = this._hasQueuedChanges(); - this._emitChangeEvent(); - return changed; - } - /** - * Deselects a value or an array of values. - * @param values The values to deselect - * @return Whether the selection changed as a result of this call - * @breaking-change 16.0.0 make return type boolean - */ - deselect(...values) { - this._verifyValueAssignment(values); - values.forEach(value => this._unmarkSelected(value)); - const changed = this._hasQueuedChanges(); - this._emitChangeEvent(); - return changed; - } - /** - * Sets the selected values - * @param values The new selected values - * @return Whether the selection changed as a result of this call - * @breaking-change 16.0.0 make return type boolean - */ - setSelection(...values) { - this._verifyValueAssignment(values); - const oldValues = this.selected; - const newSelectedSet = new Set(values); - values.forEach(value => this._markSelected(value)); - oldValues.filter(value => !newSelectedSet.has(value)).forEach(value => this._unmarkSelected(value)); - const changed = this._hasQueuedChanges(); - this._emitChangeEvent(); - return changed; - } - /** - * Toggles a value between selected and deselected. - * @param value The value to toggle - * @return Whether the selection changed as a result of this call - * @breaking-change 16.0.0 make return type boolean - */ - toggle(value) { - return this.isSelected(value) ? this.deselect(value) : this.select(value); - } - /** - * Clears all of the selected values. - * @param flushEvent Whether to flush the changes in an event. - * If false, the changes to the selection will be flushed along with the next event. - * @return Whether the selection changed as a result of this call - * @breaking-change 16.0.0 make return type boolean - */ - clear(flushEvent = true) { - this._unmarkAll(); - const changed = this._hasQueuedChanges(); - if (flushEvent) { - this._emitChangeEvent(); - } - return changed; - } - /** - * Determines whether a value is selected. - */ - isSelected(value) { - return this._selection.has(this._getConcreteValue(value)); - } - /** - * Determines whether the model does not have a value. - */ - isEmpty() { - return this._selection.size === 0; - } - /** - * Determines whether the model has a value. - */ - hasValue() { - return !this.isEmpty(); - } - /** - * Sorts the selected values based on a predicate function. - */ - sort(predicate) { - if (this._multiple && this.selected) { - this._selected.sort(predicate); - } - } - /** - * Gets whether multiple values can be selected. - */ - isMultipleSelection() { - return this._multiple; - } - /** Emits a change event and clears the records of selected and deselected values. */ - _emitChangeEvent() { - // Clear the selected values so they can be re-cached. - this._selected = null; - if (this._selectedToEmit.length || this._deselectedToEmit.length) { - this.changed.next({ - source: this, - added: this._selectedToEmit, - removed: this._deselectedToEmit - }); - this._deselectedToEmit = []; - this._selectedToEmit = []; - } - } - /** Selects a value. */ - _markSelected(value) { - value = this._getConcreteValue(value); - if (!this.isSelected(value)) { - if (!this._multiple) { - this._unmarkAll(); - } - if (!this.isSelected(value)) { - this._selection.add(value); - } - if (this._emitChanges) { - this._selectedToEmit.push(value); - } - } - } - /** Deselects a value. */ - _unmarkSelected(value) { - value = this._getConcreteValue(value); - if (this.isSelected(value)) { - this._selection.delete(value); - if (this._emitChanges) { - this._deselectedToEmit.push(value); - } - } - } - /** Clears out the selected values. */ - _unmarkAll() { - if (!this.isEmpty()) { - this._selection.forEach(value => this._unmarkSelected(value)); - } - } - /** - * Verifies the value assignment and throws an error if the specified value array is - * including multiple values while the selection model is not supporting multiple values. - */ - _verifyValueAssignment(values) { - if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) { - throw getMultipleValuesInSingleSelectionError(); - } - } - /** Whether there are queued up change to be emitted. */ - _hasQueuedChanges() { - return !!(this._deselectedToEmit.length || this._selectedToEmit.length); - } - /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */ - _getConcreteValue(inputValue) { - if (!this.compareWith) { - return inputValue; - } else { - for (let selectedValue of this._selection) { - if (this.compareWith(inputValue, selectedValue)) { - return selectedValue; - } - } - return inputValue; - } - } -} -/** - * Returns an error that reports that multiple values are passed into a selection model - * with a single value. - * @docs-private - */ -function getMultipleValuesInSingleSelectionError() { - return Error('Cannot pass multiple values into SelectionModel with single-value mode.'); -} - -/** - * Class to coordinate unique selection based on name. - * Intended to be consumed as an Angular service. - * This service is needed because native radio change events are only fired on the item currently - * being selected, and we still need to uncheck the previous selection. - * - * This service does not *store* any IDs and names because they may change at any time, so it is - * less error-prone if they are simply passed through when the events occur. - */ -class UniqueSelectionDispatcher { - constructor() { - this._listeners = []; - } - /** - * Notify other items that selection for the given name has been set. - * @param id ID of the item. - * @param name Name of the item. - */ - notify(id, name) { - for (let listener of this._listeners) { - listener(id, name); - } - } - /** - * Listen for future changes to item selection. - * @return Function used to deregister listener - */ - listen(listener) { - this._listeners.push(listener); - return () => { - this._listeners = this._listeners.filter(registered => { - return listener !== registered; - }); - }; - } - ngOnDestroy() { - this._listeners = []; - } -} -UniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) { - return new (t || UniqueSelectionDispatcher)(); -}; -UniqueSelectionDispatcher.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjectable"]({ - token: UniqueSelectionDispatcher, - factory: UniqueSelectionDispatcher.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](UniqueSelectionDispatcher, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable, - args: [{ - providedIn: 'root' - }] - }], null, null); -})(); - -/** - * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only. - * @docs-private - */ -const _VIEW_REPEATER_STRATEGY = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.InjectionToken('_ViewRepeater'); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 554: -/*!*********************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/keycodes.mjs ***! - \*********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ A: () => (/* binding */ A), -/* harmony export */ ALT: () => (/* binding */ ALT), -/* harmony export */ APOSTROPHE: () => (/* binding */ APOSTROPHE), -/* harmony export */ AT_SIGN: () => (/* binding */ AT_SIGN), -/* harmony export */ B: () => (/* binding */ B), -/* harmony export */ BACKSLASH: () => (/* binding */ BACKSLASH), -/* harmony export */ BACKSPACE: () => (/* binding */ BACKSPACE), -/* harmony export */ C: () => (/* binding */ C), -/* harmony export */ CAPS_LOCK: () => (/* binding */ CAPS_LOCK), -/* harmony export */ CLOSE_SQUARE_BRACKET: () => (/* binding */ CLOSE_SQUARE_BRACKET), -/* harmony export */ COMMA: () => (/* binding */ COMMA), -/* harmony export */ CONTEXT_MENU: () => (/* binding */ CONTEXT_MENU), -/* harmony export */ CONTROL: () => (/* binding */ CONTROL), -/* harmony export */ D: () => (/* binding */ D), -/* harmony export */ DASH: () => (/* binding */ DASH), -/* harmony export */ DELETE: () => (/* binding */ DELETE), -/* harmony export */ DOWN_ARROW: () => (/* binding */ DOWN_ARROW), -/* harmony export */ E: () => (/* binding */ E), -/* harmony export */ EIGHT: () => (/* binding */ EIGHT), -/* harmony export */ END: () => (/* binding */ END), -/* harmony export */ ENTER: () => (/* binding */ ENTER), -/* harmony export */ EQUALS: () => (/* binding */ EQUALS), -/* harmony export */ ESCAPE: () => (/* binding */ ESCAPE), -/* harmony export */ F: () => (/* binding */ F), -/* harmony export */ F1: () => (/* binding */ F1), -/* harmony export */ F10: () => (/* binding */ F10), -/* harmony export */ F11: () => (/* binding */ F11), -/* harmony export */ F12: () => (/* binding */ F12), -/* harmony export */ F2: () => (/* binding */ F2), -/* harmony export */ F3: () => (/* binding */ F3), -/* harmony export */ F4: () => (/* binding */ F4), -/* harmony export */ F5: () => (/* binding */ F5), -/* harmony export */ F6: () => (/* binding */ F6), -/* harmony export */ F7: () => (/* binding */ F7), -/* harmony export */ F8: () => (/* binding */ F8), -/* harmony export */ F9: () => (/* binding */ F9), -/* harmony export */ FF_EQUALS: () => (/* binding */ FF_EQUALS), -/* harmony export */ FF_MINUS: () => (/* binding */ FF_MINUS), -/* harmony export */ FF_MUTE: () => (/* binding */ FF_MUTE), -/* harmony export */ FF_SEMICOLON: () => (/* binding */ FF_SEMICOLON), -/* harmony export */ FF_VOLUME_DOWN: () => (/* binding */ FF_VOLUME_DOWN), -/* harmony export */ FF_VOLUME_UP: () => (/* binding */ FF_VOLUME_UP), -/* harmony export */ FIRST_MEDIA: () => (/* binding */ FIRST_MEDIA), -/* harmony export */ FIVE: () => (/* binding */ FIVE), -/* harmony export */ FOUR: () => (/* binding */ FOUR), -/* harmony export */ G: () => (/* binding */ G), -/* harmony export */ H: () => (/* binding */ H), -/* harmony export */ HOME: () => (/* binding */ HOME), -/* harmony export */ I: () => (/* binding */ I), -/* harmony export */ INSERT: () => (/* binding */ INSERT), -/* harmony export */ J: () => (/* binding */ J), -/* harmony export */ K: () => (/* binding */ K), -/* harmony export */ L: () => (/* binding */ L), -/* harmony export */ LAST_MEDIA: () => (/* binding */ LAST_MEDIA), -/* harmony export */ LEFT_ARROW: () => (/* binding */ LEFT_ARROW), -/* harmony export */ M: () => (/* binding */ M), -/* harmony export */ MAC_ENTER: () => (/* binding */ MAC_ENTER), -/* harmony export */ MAC_META: () => (/* binding */ MAC_META), -/* harmony export */ MAC_WK_CMD_LEFT: () => (/* binding */ MAC_WK_CMD_LEFT), -/* harmony export */ MAC_WK_CMD_RIGHT: () => (/* binding */ MAC_WK_CMD_RIGHT), -/* harmony export */ META: () => (/* binding */ META), -/* harmony export */ MUTE: () => (/* binding */ MUTE), -/* harmony export */ N: () => (/* binding */ N), -/* harmony export */ NINE: () => (/* binding */ NINE), -/* harmony export */ NUMPAD_DIVIDE: () => (/* binding */ NUMPAD_DIVIDE), -/* harmony export */ NUMPAD_EIGHT: () => (/* binding */ NUMPAD_EIGHT), -/* harmony export */ NUMPAD_FIVE: () => (/* binding */ NUMPAD_FIVE), -/* harmony export */ NUMPAD_FOUR: () => (/* binding */ NUMPAD_FOUR), -/* harmony export */ NUMPAD_MINUS: () => (/* binding */ NUMPAD_MINUS), -/* harmony export */ NUMPAD_MULTIPLY: () => (/* binding */ NUMPAD_MULTIPLY), -/* harmony export */ NUMPAD_NINE: () => (/* binding */ NUMPAD_NINE), -/* harmony export */ NUMPAD_ONE: () => (/* binding */ NUMPAD_ONE), -/* harmony export */ NUMPAD_PERIOD: () => (/* binding */ NUMPAD_PERIOD), -/* harmony export */ NUMPAD_PLUS: () => (/* binding */ NUMPAD_PLUS), -/* harmony export */ NUMPAD_SEVEN: () => (/* binding */ NUMPAD_SEVEN), -/* harmony export */ NUMPAD_SIX: () => (/* binding */ NUMPAD_SIX), -/* harmony export */ NUMPAD_THREE: () => (/* binding */ NUMPAD_THREE), -/* harmony export */ NUMPAD_TWO: () => (/* binding */ NUMPAD_TWO), -/* harmony export */ NUMPAD_ZERO: () => (/* binding */ NUMPAD_ZERO), -/* harmony export */ NUM_CENTER: () => (/* binding */ NUM_CENTER), -/* harmony export */ NUM_LOCK: () => (/* binding */ NUM_LOCK), -/* harmony export */ O: () => (/* binding */ O), -/* harmony export */ ONE: () => (/* binding */ ONE), -/* harmony export */ OPEN_SQUARE_BRACKET: () => (/* binding */ OPEN_SQUARE_BRACKET), -/* harmony export */ P: () => (/* binding */ P), -/* harmony export */ PAGE_DOWN: () => (/* binding */ PAGE_DOWN), -/* harmony export */ PAGE_UP: () => (/* binding */ PAGE_UP), -/* harmony export */ PAUSE: () => (/* binding */ PAUSE), -/* harmony export */ PERIOD: () => (/* binding */ PERIOD), -/* harmony export */ PLUS_SIGN: () => (/* binding */ PLUS_SIGN), -/* harmony export */ PRINT_SCREEN: () => (/* binding */ PRINT_SCREEN), -/* harmony export */ Q: () => (/* binding */ Q), -/* harmony export */ QUESTION_MARK: () => (/* binding */ QUESTION_MARK), -/* harmony export */ R: () => (/* binding */ R), -/* harmony export */ RIGHT_ARROW: () => (/* binding */ RIGHT_ARROW), -/* harmony export */ S: () => (/* binding */ S), -/* harmony export */ SCROLL_LOCK: () => (/* binding */ SCROLL_LOCK), -/* harmony export */ SEMICOLON: () => (/* binding */ SEMICOLON), -/* harmony export */ SEVEN: () => (/* binding */ SEVEN), -/* harmony export */ SHIFT: () => (/* binding */ SHIFT), -/* harmony export */ SINGLE_QUOTE: () => (/* binding */ SINGLE_QUOTE), -/* harmony export */ SIX: () => (/* binding */ SIX), -/* harmony export */ SLASH: () => (/* binding */ SLASH), -/* harmony export */ SPACE: () => (/* binding */ SPACE), -/* harmony export */ T: () => (/* binding */ T), -/* harmony export */ TAB: () => (/* binding */ TAB), -/* harmony export */ THREE: () => (/* binding */ THREE), -/* harmony export */ TILDE: () => (/* binding */ TILDE), -/* harmony export */ TWO: () => (/* binding */ TWO), -/* harmony export */ U: () => (/* binding */ U), -/* harmony export */ UP_ARROW: () => (/* binding */ UP_ARROW), -/* harmony export */ V: () => (/* binding */ V), -/* harmony export */ VOLUME_DOWN: () => (/* binding */ VOLUME_DOWN), -/* harmony export */ VOLUME_UP: () => (/* binding */ VOLUME_UP), -/* harmony export */ W: () => (/* binding */ W), -/* harmony export */ X: () => (/* binding */ X), -/* harmony export */ Y: () => (/* binding */ Y), -/* harmony export */ Z: () => (/* binding */ Z), -/* harmony export */ ZERO: () => (/* binding */ ZERO), -/* harmony export */ hasModifierKey: () => (/* binding */ hasModifierKey) -/* harmony export */ }); -const MAC_ENTER = 3; -const BACKSPACE = 8; -const TAB = 9; -const NUM_CENTER = 12; -const ENTER = 13; -const SHIFT = 16; -const CONTROL = 17; -const ALT = 18; -const PAUSE = 19; -const CAPS_LOCK = 20; -const ESCAPE = 27; -const SPACE = 32; -const PAGE_UP = 33; -const PAGE_DOWN = 34; -const END = 35; -const HOME = 36; -const LEFT_ARROW = 37; -const UP_ARROW = 38; -const RIGHT_ARROW = 39; -const DOWN_ARROW = 40; -const PLUS_SIGN = 43; -const PRINT_SCREEN = 44; -const INSERT = 45; -const DELETE = 46; -const ZERO = 48; -const ONE = 49; -const TWO = 50; -const THREE = 51; -const FOUR = 52; -const FIVE = 53; -const SIX = 54; -const SEVEN = 55; -const EIGHT = 56; -const NINE = 57; -const FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186 -const FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187 -const QUESTION_MARK = 63; -const AT_SIGN = 64; -const A = 65; -const B = 66; -const C = 67; -const D = 68; -const E = 69; -const F = 70; -const G = 71; -const H = 72; -const I = 73; -const J = 74; -const K = 75; -const L = 76; -const M = 77; -const N = 78; -const O = 79; -const P = 80; -const Q = 81; -const R = 82; -const S = 83; -const T = 84; -const U = 85; -const V = 86; -const W = 87; -const X = 88; -const Y = 89; -const Z = 90; -const META = 91; // WIN_KEY_LEFT -const MAC_WK_CMD_LEFT = 91; -const MAC_WK_CMD_RIGHT = 93; -const CONTEXT_MENU = 93; -const NUMPAD_ZERO = 96; -const NUMPAD_ONE = 97; -const NUMPAD_TWO = 98; -const NUMPAD_THREE = 99; -const NUMPAD_FOUR = 100; -const NUMPAD_FIVE = 101; -const NUMPAD_SIX = 102; -const NUMPAD_SEVEN = 103; -const NUMPAD_EIGHT = 104; -const NUMPAD_NINE = 105; -const NUMPAD_MULTIPLY = 106; -const NUMPAD_PLUS = 107; -const NUMPAD_MINUS = 109; -const NUMPAD_PERIOD = 110; -const NUMPAD_DIVIDE = 111; -const F1 = 112; -const F2 = 113; -const F3 = 114; -const F4 = 115; -const F5 = 116; -const F6 = 117; -const F7 = 118; -const F8 = 119; -const F9 = 120; -const F10 = 121; -const F11 = 122; -const F12 = 123; -const NUM_LOCK = 144; -const SCROLL_LOCK = 145; -const FIRST_MEDIA = 166; -const FF_MINUS = 173; -const MUTE = 173; // Firefox (Gecko) fires 181 for MUTE -const VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN -const VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP -const FF_MUTE = 181; -const FF_VOLUME_DOWN = 182; -const LAST_MEDIA = 183; -const FF_VOLUME_UP = 183; -const SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON -const EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS -const COMMA = 188; -const DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS -const PERIOD = 190; -const SLASH = 191; -const APOSTROPHE = 192; -const TILDE = 192; -const OPEN_SQUARE_BRACKET = 219; -const BACKSLASH = 220; -const CLOSE_SQUARE_BRACKET = 221; -const SINGLE_QUOTE = 222; -const MAC_META = 224; - -/** - * Checks whether a modifier key is pressed. - * @param event Event to be checked. - */ -function hasModifierKey(event, ...modifiers) { - if (modifiers.length) { - return modifiers.some(modifier => event[modifier]); - } - return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey; -} - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 9743: -/*!*******************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/layout.mjs ***! - \*******************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ BreakpointObserver: () => (/* binding */ BreakpointObserver), -/* harmony export */ Breakpoints: () => (/* binding */ Breakpoints), -/* harmony export */ LayoutModule: () => (/* binding */ LayoutModule), -/* harmony export */ MediaMatcher: () => (/* binding */ MediaMatcher) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/cdk/coercion */ 5998); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs */ 4555); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs */ 5774); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! rxjs */ 3064); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs/operators */ 6939); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs/operators */ 1063); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rxjs/operators */ 5933); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! rxjs/operators */ 7422); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! rxjs/operators */ 1062); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! rxjs/operators */ 3303); -/* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/cdk/platform */ 3274); - - - - - - -class LayoutModule {} -LayoutModule.ɵfac = function LayoutModule_Factory(t) { - return new (t || LayoutModule)(); -}; -LayoutModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ - type: LayoutModule -}); -LayoutModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](LayoutModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule, - args: [{}] - }], null, null); -})(); - -/** Global registry for all dynamically-created, injected media queries. */ -const mediaQueriesForWebkitCompatibility = new Set(); -/** Style tag that holds all of the dynamically-created media queries. */ -let mediaQueryStyleNode; -/** A utility for calling matchMedia queries. */ -class MediaMatcher { - constructor(_platform, _nonce) { - this._platform = _platform; - this._nonce = _nonce; - this._matchMedia = this._platform.isBrowser && window.matchMedia ? - // matchMedia is bound to the window scope intentionally as it is an illegal invocation to - // call it from a different scope. - window.matchMedia.bind(window) : noopMatchMedia; - } - /** - * Evaluates the given media query and returns the native MediaQueryList from which results - * can be retrieved. - * Confirms the layout engine will trigger for the selector query provided and returns the - * MediaQueryList for the query provided. - */ - matchMedia(query) { - if (this._platform.WEBKIT || this._platform.BLINK) { - createEmptyStyleRule(query, this._nonce); - } - return this._matchMedia(query); - } -} -MediaMatcher.ɵfac = function MediaMatcher_Factory(t) { - return new (t || MediaMatcher)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_1__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.CSP_NONCE, 8)); -}; -MediaMatcher.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: MediaMatcher, - factory: MediaMatcher.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MediaMatcher, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_1__.Platform - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.CSP_NONCE] - }] - }]; - }, null); -})(); -/** - * Creates an empty stylesheet that is used to work around browser inconsistencies related to - * `matchMedia`. At the time of writing, it handles the following cases: - * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia` - * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration. - * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules - * inside the `@media` match existing elements on the page. We work around it by having one rule - * targeting the `body`. See https://github.com/angular/components/issues/23546. - */ -function createEmptyStyleRule(query, nonce) { - if (mediaQueriesForWebkitCompatibility.has(query)) { - return; - } - try { - if (!mediaQueryStyleNode) { - mediaQueryStyleNode = document.createElement('style'); - if (nonce) { - mediaQueryStyleNode.nonce = nonce; - } - mediaQueryStyleNode.setAttribute('type', 'text/css'); - document.head.appendChild(mediaQueryStyleNode); - } - if (mediaQueryStyleNode.sheet) { - mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0); - mediaQueriesForWebkitCompatibility.add(query); - } - } catch (e) { - console.error(e); - } -} -/** No-op matchMedia replacement for non-browser platforms. */ -function noopMatchMedia(query) { - // Use `as any` here to avoid adding additional necessary properties for - // the noop matcher. - return { - matches: query === 'all' || query === '', - media: query, - addListener: () => {}, - removeListener: () => {} - }; -} - -/** Utility for checking the matching state of @media queries. */ -class BreakpointObserver { - constructor(_mediaMatcher, _zone) { - this._mediaMatcher = _mediaMatcher; - this._zone = _zone; - /** A map of all media queries currently being listened for. */ - this._queries = new Map(); - /** A subject for all other observables to takeUntil based on. */ - this._destroySubject = new rxjs__WEBPACK_IMPORTED_MODULE_2__.Subject(); - } - /** Completes the active subject, signalling to all other observables to complete. */ - ngOnDestroy() { - this._destroySubject.next(); - this._destroySubject.complete(); - } - /** - * Whether one or more media queries match the current viewport size. - * @param value One or more media queries to check. - * @returns Whether any of the media queries match. - */ - isMatched(value) { - const queries = splitQueries((0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_3__.coerceArray)(value)); - return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches); - } - /** - * Gets an observable of results for the given queries that will emit new results for any changes - * in matching of the given queries. - * @param value One or more media queries to check. - * @returns A stream of matches for the given queries. - */ - observe(value) { - const queries = splitQueries((0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_3__.coerceArray)(value)); - const observables = queries.map(query => this._registerQuery(query).observable); - let stateObservable = (0,rxjs__WEBPACK_IMPORTED_MODULE_4__.combineLatest)(observables); - // Emit the first state immediately, and then debounce the subsequent emissions. - stateObservable = (0,rxjs__WEBPACK_IMPORTED_MODULE_5__.concat)(stateObservable.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_6__.take)(1)), stateObservable.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__.skip)(1), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_8__.debounceTime)(0))); - return stateObservable.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_9__.map)(breakpointStates => { - const response = { - matches: false, - breakpoints: {} - }; - breakpointStates.forEach(({ - matches, - query - }) => { - response.matches = response.matches || matches; - response.breakpoints[query] = matches; - }); - return response; - })); - } - /** Registers a specific query to be listened for. */ - _registerQuery(query) { - // Only set up a new MediaQueryList if it is not already being listened for. - if (this._queries.has(query)) { - return this._queries.get(query); - } - const mql = this._mediaMatcher.matchMedia(query); - // Create callback for match changes and add it is as a listener. - const queryObservable = new rxjs__WEBPACK_IMPORTED_MODULE_10__.Observable(observer => { - // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed - // back into the zone because matchMedia is only included in Zone.js by loading the - // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not - // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js - // patches it. - const handler = e => this._zone.run(() => observer.next(e)); - mql.addListener(handler); - return () => { - mql.removeListener(handler); - }; - }).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_11__.startWith)(mql), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_9__.map)(({ - matches - }) => ({ - query, - matches - })), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_12__.takeUntil)(this._destroySubject)); - // Add the MediaQueryList to the set of queries. - const output = { - observable: queryObservable, - mql - }; - this._queries.set(query, output); - return output; - } -} -BreakpointObserver.ɵfac = function BreakpointObserver_Factory(t) { - return new (t || BreakpointObserver)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](MediaMatcher), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone)); -}; -BreakpointObserver.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: BreakpointObserver, - factory: BreakpointObserver.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](BreakpointObserver, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: MediaMatcher - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }]; - }, null); -})(); -/** - * Split each query string into separate query strings if two queries are provided as comma - * separated. - */ -function splitQueries(queries) { - return queries.map(query => query.split(',')).reduce((a1, a2) => a1.concat(a2)).map(query => query.trim()); -} - -// PascalCase is being used as Breakpoints is used like an enum. -// tslint:disable-next-line:variable-name -const Breakpoints = { - XSmall: '(max-width: 599.98px)', - Small: '(min-width: 600px) and (max-width: 959.98px)', - Medium: '(min-width: 960px) and (max-width: 1279.98px)', - Large: '(min-width: 1280px) and (max-width: 1919.98px)', - XLarge: '(min-width: 1920px)', - Handset: '(max-width: 599.98px) and (orientation: portrait), ' + '(max-width: 959.98px) and (orientation: landscape)', - Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' + '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)', - Web: '(min-width: 840px) and (orientation: portrait), ' + '(min-width: 1280px) and (orientation: landscape)', - HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)', - TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)', - WebPortrait: '(min-width: 840px) and (orientation: portrait)', - HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)', - TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)', - WebLandscape: '(min-width: 1280px) and (orientation: landscape)' -}; - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 6787: -/*!**********************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/observers.mjs ***! - \**********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ CdkObserveContent: () => (/* binding */ CdkObserveContent), -/* harmony export */ ContentObserver: () => (/* binding */ ContentObserver), -/* harmony export */ MutationObserverFactory: () => (/* binding */ MutationObserverFactory), -/* harmony export */ ObserversModule: () => (/* binding */ ObserversModule) -/* harmony export */ }); -/* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/cdk/coercion */ 5998); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ 3064); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/operators */ 5933); - - - - - - -/** - * Factory that creates a new MutationObserver and allows us to stub it out in unit tests. - * @docs-private - */ -class MutationObserverFactory { - create(callback) { - return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback); - } -} -MutationObserverFactory.ɵfac = function MutationObserverFactory_Factory(t) { - return new (t || MutationObserverFactory)(); -}; -MutationObserverFactory.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: MutationObserverFactory, - factory: MutationObserverFactory.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](MutationObserverFactory, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], null, null); -})(); -/** An injectable service that allows watching elements for changes to their content. */ -class ContentObserver { - constructor(_mutationObserverFactory) { - this._mutationObserverFactory = _mutationObserverFactory; - /** Keeps track of the existing MutationObservers so they can be reused. */ - this._observedElements = new Map(); - } - ngOnDestroy() { - this._observedElements.forEach((_, element) => this._cleanupObserver(element)); - } - observe(elementOrRef) { - const element = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.coerceElement)(elementOrRef); - return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable(observer => { - const stream = this._observeElement(element); - const subscription = stream.subscribe(observer); - return () => { - subscription.unsubscribe(); - this._unobserveElement(element); - }; - }); - } - /** - * Observes the given element by using the existing MutationObserver if available, or creating a - * new one if not. - */ - _observeElement(element) { - if (!this._observedElements.has(element)) { - const stream = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations)); - if (observer) { - observer.observe(element, { - characterData: true, - childList: true, - subtree: true - }); - } - this._observedElements.set(element, { - observer, - stream, - count: 1 - }); - } else { - this._observedElements.get(element).count++; - } - return this._observedElements.get(element).stream; - } - /** - * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is - * observing this element. - */ - _unobserveElement(element) { - if (this._observedElements.has(element)) { - this._observedElements.get(element).count--; - if (!this._observedElements.get(element).count) { - this._cleanupObserver(element); - } - } - } - /** Clean up the underlying MutationObserver for the specified element. */ - _cleanupObserver(element) { - if (this._observedElements.has(element)) { - const { - observer, - stream - } = this._observedElements.get(element); - if (observer) { - observer.disconnect(); - } - stream.complete(); - this._observedElements.delete(element); - } - } -} -ContentObserver.ɵfac = function ContentObserver_Factory(t) { - return new (t || ContentObserver)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](MutationObserverFactory)); -}; -ContentObserver.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: ContentObserver, - factory: ContentObserver.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](ContentObserver, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: MutationObserverFactory - }]; - }, null); -})(); -/** - * Directive that triggers a callback whenever the content of - * its associated element has changed. - */ -class CdkObserveContent { - /** - * Whether observing content is disabled. This option can be used - * to disconnect the underlying MutationObserver until it is needed. - */ - get disabled() { - return this._disabled; - } - set disabled(value) { - this._disabled = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.coerceBooleanProperty)(value); - this._disabled ? this._unsubscribe() : this._subscribe(); - } - /** Debounce interval for emitting the changes. */ - get debounce() { - return this._debounce; - } - set debounce(value) { - this._debounce = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__.coerceNumberProperty)(value); - this._subscribe(); - } - constructor(_contentObserver, _elementRef, _ngZone) { - this._contentObserver = _contentObserver; - this._elementRef = _elementRef; - this._ngZone = _ngZone; - /** Event emitted for each change in the element's content. */ - this.event = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter(); - this._disabled = false; - this._currentSubscription = null; - } - ngAfterContentInit() { - if (!this._currentSubscription && !this.disabled) { - this._subscribe(); - } - } - ngOnDestroy() { - this._unsubscribe(); - } - _subscribe() { - this._unsubscribe(); - const stream = this._contentObserver.observe(this._elementRef); - // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone. - // Consider brining it back inside the zone next time we're making breaking changes. - // Bringing it back inside can cause things like infinite change detection loops and changed - // after checked errors if people's code isn't handling it properly. - this._ngZone.runOutsideAngular(() => { - this._currentSubscription = (this.debounce ? stream.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.debounceTime)(this.debounce)) : stream).subscribe(this.event); - }); - } - _unsubscribe() { - this._currentSubscription?.unsubscribe(); - } -} -CdkObserveContent.ɵfac = function CdkObserveContent_Factory(t) { - return new (t || CdkObserveContent)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](ContentObserver), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone)); -}; -CdkObserveContent.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: CdkObserveContent, - selectors: [["", "cdkObserveContent", ""]], - inputs: { - disabled: ["cdkObserveContentDisabled", "disabled"], - debounce: "debounce" - }, - outputs: { - event: "cdkObserveContent" - }, - exportAs: ["cdkObserveContent"] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CdkObserveContent, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[cdkObserveContent]', - exportAs: 'cdkObserveContent' - }] - }], function () { - return [{ - type: ContentObserver - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone - }]; - }, { - event: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Output, - args: ['cdkObserveContent'] - }], - disabled: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['cdkObserveContentDisabled'] - }], - debounce: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -class ObserversModule {} -ObserversModule.ɵfac = function ObserversModule_Factory(t) { - return new (t || ObserversModule)(); -}; -ObserversModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ - type: ObserversModule -}); -ObserversModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({ - providers: [MutationObserverFactory] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](ObserversModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule, - args: [{ - exports: [CdkObserveContent], - declarations: [CdkObserveContent], - providers: [MutationObserverFactory] - }] - }], null, null); -})(); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 9291: -/*!******************************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/observers/private.mjs ***! - \******************************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ SharedResizeObserver: () => (/* binding */ SharedResizeObserver) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 3064); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ 5046); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ 680); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/operators */ 3303); - - - - - -/** - * Handler that logs "ResizeObserver loop limit exceeded" errors. - * These errors are not shown in the Chrome console, so we log them to ensure developers are aware. - * @param e The error - */ -const loopLimitExceededErrorHandler = e => { - if (e instanceof Error && e.message === 'ResizeObserver loop limit exceeded') { - console.error(`${e.message}. This could indicate a performance issue with your app. See https://github.com/WICG/resize-observer/blob/master/explainer.md#error-handling`); - } -}; -/** - * A shared ResizeObserver to be used for a particular box type (content-box, border-box, or - * device-pixel-content-box) - */ -class SingleBoxSharedResizeObserver { - constructor( /** The box type to observe for resizes. */ - _box) { - this._box = _box; - /** Stream that emits when the shared observer is destroyed. */ - this._destroyed = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject(); - /** Stream of all events from the ResizeObserver. */ - this._resizeSubject = new rxjs__WEBPACK_IMPORTED_MODULE_0__.Subject(); - /** A map of elements to streams of their resize events. */ - this._elementObservables = new Map(); - if (typeof ResizeObserver !== 'undefined') { - this._resizeObserver = new ResizeObserver(entries => this._resizeSubject.next(entries)); - } - } - /** - * Gets a stream of resize events for the given element. - * @param target The element to observe. - * @return The stream of resize events for the element. - */ - observe(target) { - if (!this._elementObservables.has(target)) { - this._elementObservables.set(target, new rxjs__WEBPACK_IMPORTED_MODULE_1__.Observable(observer => { - const subscription = this._resizeSubject.subscribe(observer); - this._resizeObserver?.observe(target, { - box: this._box - }); - return () => { - this._resizeObserver?.unobserve(target); - subscription.unsubscribe(); - this._elementObservables.delete(target); - }; - }).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.filter)(entries => entries.some(entry => entry.target === target)), - // Share a replay of the last event so that subsequent calls to observe the same element - // receive initial sizing info like the first one. Also enable ref counting so the - // element will be automatically unobserved when there are no more subscriptions. - (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.shareReplay)({ - bufferSize: 1, - refCount: true - }), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.takeUntil)(this._destroyed))); - } - return this._elementObservables.get(target); - } - /** Destroys this instance. */ - destroy() { - this._destroyed.next(); - this._destroyed.complete(); - this._resizeSubject.complete(); - this._elementObservables.clear(); - } -} -/** - * Allows observing resize events on multiple elements using a shared set of ResizeObserver. - * Sharing a ResizeObserver instance is recommended for better performance (see - * https://github.com/WICG/resize-observer/issues/59). - * - * Rather than share a single `ResizeObserver`, this class creates one `ResizeObserver` per type - * of observed box ('content-box', 'border-box', and 'device-pixel-content-box'). This avoids - * later calls to `observe` with a different box type from influencing the events dispatched to - * earlier calls. - */ -class SharedResizeObserver { - constructor() { - /** Map of box type to shared resize observer. */ - this._observers = new Map(); - /** The Angular zone. */ - this._ngZone = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_5__.NgZone); - if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) { - this._ngZone.runOutsideAngular(() => { - window.addEventListener('error', loopLimitExceededErrorHandler); - }); - } - } - ngOnDestroy() { - for (const [, observer] of this._observers) { - observer.destroy(); - } - this._observers.clear(); - if (typeof ResizeObserver !== 'undefined' && (typeof ngDevMode === 'undefined' || ngDevMode)) { - window.removeEventListener('error', loopLimitExceededErrorHandler); - } - } - /** - * Gets a stream of resize events for the given target element and box type. - * @param target The element to observe for resizes. - * @param options Options to pass to the `ResizeObserver` - * @return The stream of resize events for the element. - */ - observe(target, options) { - const box = options?.box || 'content-box'; - if (!this._observers.has(box)) { - this._observers.set(box, new SingleBoxSharedResizeObserver(box)); - } - return this._observers.get(box).observe(target); - } -} -SharedResizeObserver.ɵfac = function SharedResizeObserver_Factory(t) { - return new (t || SharedResizeObserver)(); -}; -SharedResizeObserver.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵdefineInjectable"]({ - token: SharedResizeObserver, - factory: SharedResizeObserver.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵsetClassMetadata"](SharedResizeObserver, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return []; - }, null); -})(); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 3274: -/*!*********************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/platform.mjs ***! - \*********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Platform: () => (/* binding */ Platform), -/* harmony export */ PlatformModule: () => (/* binding */ PlatformModule), -/* harmony export */ _getEventTarget: () => (/* binding */ _getEventTarget), -/* harmony export */ _getFocusedElementPierceShadowDom: () => (/* binding */ _getFocusedElementPierceShadowDom), -/* harmony export */ _getShadowRoot: () => (/* binding */ _getShadowRoot), -/* harmony export */ _isTestEnvironment: () => (/* binding */ _isTestEnvironment), -/* harmony export */ _supportsShadowDom: () => (/* binding */ _supportsShadowDom), -/* harmony export */ getRtlScrollAxisType: () => (/* binding */ getRtlScrollAxisType), -/* harmony export */ getSupportedInputTypes: () => (/* binding */ getSupportedInputTypes), -/* harmony export */ normalizePassiveListenerOptions: () => (/* binding */ normalizePassiveListenerOptions), -/* harmony export */ supportsPassiveEventListeners: () => (/* binding */ supportsPassiveEventListeners), -/* harmony export */ supportsScrollBehavior: () => (/* binding */ supportsScrollBehavior) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/common */ 6575); - - - - -// Whether the current platform supports the V8 Break Iterator. The V8 check -// is necessary to detect all Blink based browsers. -let hasV8BreakIterator; -// We need a try/catch around the reference to `Intl`, because accessing it in some cases can -// cause IE to throw. These cases are tied to particular versions of Windows and can happen if -// the consumer is providing a polyfilled `Map`. See: -// https://github.com/Microsoft/ChakraCore/issues/3189 -// https://github.com/angular/components/issues/15687 -try { - hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator; -} catch { - hasV8BreakIterator = false; -} -/** - * Service to detect the current platform by comparing the userAgent strings and - * checking browser-specific global properties. - */ -class Platform { - constructor(_platformId) { - this._platformId = _platformId; - // We want to use the Angular platform check because if the Document is shimmed - // without the navigator, the following checks will fail. This is preferred because - // sometimes the Document may be shimmed without the user's knowledge or intention - /** Whether the Angular application is being rendered in the browser. */ - this.isBrowser = this._platformId ? (0,_angular_common__WEBPACK_IMPORTED_MODULE_0__.isPlatformBrowser)(this._platformId) : typeof document === 'object' && !!document; - /** Whether the current browser is Microsoft Edge. */ - this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent); - /** Whether the current rendering engine is Microsoft Trident. */ - this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent); - // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check. - /** Whether the current rendering engine is Blink. */ - this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT; - // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to - // ensure that Webkit runs standalone and is not used as another engine's base. - /** Whether the current rendering engine is WebKit. */ - this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT; - /** Whether the current platform is Apple iOS. */ - this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window); - // It's difficult to detect the plain Gecko engine, because most of the browsers identify - // them self as Gecko-like browsers and modify the userAgent's according to that. - // Since we only cover one explicit Firefox case, we can simply check for Firefox - // instead of having an unstable check for Gecko. - /** Whether the current browser is Firefox. */ - this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent); - /** Whether the current platform is Android. */ - // Trident on mobile adds the android platform to the userAgent to trick detections. - this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT; - // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake - // this and just place the Safari keyword in the userAgent. To be more safe about Safari every - // Safari browser should also use Webkit as its layout engine. - /** Whether the current browser is Safari. */ - this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT; - } -} -Platform.ɵfac = function Platform_Factory(t) { - return new (t || Platform)(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_1__.PLATFORM_ID)); -}; -Platform.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjectable"]({ - token: Platform, - factory: Platform.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](Platform, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: Object, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_1__.PLATFORM_ID] - }] - }]; - }, null); -})(); -class PlatformModule {} -PlatformModule.ɵfac = function PlatformModule_Factory(t) { - return new (t || PlatformModule)(); -}; -PlatformModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineNgModule"]({ - type: PlatformModule -}); -PlatformModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵɵdefineInjector"]({}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_1__["ɵsetClassMetadata"](PlatformModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_1__.NgModule, - args: [{}] - }], null, null); -})(); - -/** Cached result Set of input types support by the current browser. */ -let supportedInputTypes; -/** Types of `` that *might* be supported. */ -const candidateInputTypes = [ -// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after -// first changing it to something else: -// The specified value "" does not conform to the required format. -// The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers. -'color', 'button', 'checkbox', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week']; -/** @returns The input types supported by this browser. */ -function getSupportedInputTypes() { - // Result is cached. - if (supportedInputTypes) { - return supportedInputTypes; - } - // We can't check if an input type is not supported until we're on the browser, so say that - // everything is supported when not on the browser. We don't use `Platform` here since it's - // just a helper function and can't inject it. - if (typeof document !== 'object' || !document) { - supportedInputTypes = new Set(candidateInputTypes); - return supportedInputTypes; - } - let featureTestInput = document.createElement('input'); - supportedInputTypes = new Set(candidateInputTypes.filter(value => { - featureTestInput.setAttribute('type', value); - return featureTestInput.type === value; - })); - return supportedInputTypes; -} - -/** Cached result of whether the user's browser supports passive event listeners. */ -let supportsPassiveEvents; -/** - * Checks whether the user's browser supports passive event listeners. - * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md - */ -function supportsPassiveEventListeners() { - if (supportsPassiveEvents == null && typeof window !== 'undefined') { - try { - window.addEventListener('test', null, Object.defineProperty({}, 'passive', { - get: () => supportsPassiveEvents = true - })); - } finally { - supportsPassiveEvents = supportsPassiveEvents || false; - } - } - return supportsPassiveEvents; -} -/** - * Normalizes an `AddEventListener` object to something that can be passed - * to `addEventListener` on any browser, no matter whether it supports the - * `options` parameter. - * @param options Object to be normalized. - */ -function normalizePassiveListenerOptions(options) { - return supportsPassiveEventListeners() ? options : !!options.capture; -} - -/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */ -let rtlScrollAxisType; -/** Cached result of the check that indicates whether the browser supports scroll behaviors. */ -let scrollBehaviorSupported; -/** Check whether the browser supports scroll behaviors. */ -function supportsScrollBehavior() { - if (scrollBehaviorSupported == null) { - // If we're not in the browser, it can't be supported. Also check for `Element`, because - // some projects stub out the global `document` during SSR which can throw us off. - if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) { - scrollBehaviorSupported = false; - return scrollBehaviorSupported; - } - // If the element can have a `scrollBehavior` style, we can be sure that it's supported. - if ('scrollBehavior' in document.documentElement.style) { - scrollBehaviorSupported = true; - } else { - // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's - // supported but it doesn't handle scroll behavior, or it has been polyfilled. - const scrollToFunction = Element.prototype.scrollTo; - if (scrollToFunction) { - // We can detect if the function has been polyfilled by calling `toString` on it. Native - // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get - // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider - // polyfilled functions as supporting scroll behavior. - scrollBehaviorSupported = !/\{\s*\[native code\]\s*\}/.test(scrollToFunction.toString()); - } else { - scrollBehaviorSupported = false; - } - } - } - return scrollBehaviorSupported; -} -/** - * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL, - * Firefox & Safari are NEGATED, and IE & Edge are INVERTED. - */ -function getRtlScrollAxisType() { - // We can't check unless we're on the browser. Just assume 'normal' if we're not. - if (typeof document !== 'object' || !document) { - return 0 /* RtlScrollAxisType.NORMAL */; - } - - if (rtlScrollAxisType == null) { - // Create a 1px wide scrolling container and a 2px wide content element. - const scrollContainer = document.createElement('div'); - const containerStyle = scrollContainer.style; - scrollContainer.dir = 'rtl'; - containerStyle.width = '1px'; - containerStyle.overflow = 'auto'; - containerStyle.visibility = 'hidden'; - containerStyle.pointerEvents = 'none'; - containerStyle.position = 'absolute'; - const content = document.createElement('div'); - const contentStyle = content.style; - contentStyle.width = '2px'; - contentStyle.height = '1px'; - scrollContainer.appendChild(content); - document.body.appendChild(scrollContainer); - rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */; - // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL - // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're - // dealing with one of the other two types of browsers. - if (scrollContainer.scrollLeft === 0) { - // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an - // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by - // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will - // return 0 when we read it again. - scrollContainer.scrollLeft = 1; - rtlScrollAxisType = scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */; - } - - scrollContainer.remove(); - } - return rtlScrollAxisType; -} -let shadowDomIsSupported; -/** Checks whether the user's browser support Shadow DOM. */ -function _supportsShadowDom() { - if (shadowDomIsSupported == null) { - const head = typeof document !== 'undefined' ? document.head : null; - shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow)); - } - return shadowDomIsSupported; -} -/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */ -function _getShadowRoot(element) { - if (_supportsShadowDom()) { - const rootNode = element.getRootNode ? element.getRootNode() : null; - // Note that this should be caught by `_supportsShadowDom`, but some - // teams have been able to hit this code path on unsupported browsers. - if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) { - return rootNode; - } - } - return null; -} -/** - * Gets the currently-focused element on the page while - * also piercing through Shadow DOM boundaries. - */ -function _getFocusedElementPierceShadowDom() { - let activeElement = typeof document !== 'undefined' && document ? document.activeElement : null; - while (activeElement && activeElement.shadowRoot) { - const newActiveElement = activeElement.shadowRoot.activeElement; - if (newActiveElement === activeElement) { - break; - } else { - activeElement = newActiveElement; - } - } - return activeElement; -} -/** Gets the target of an event while accounting for Shadow DOM. */ -function _getEventTarget(event) { - // If an event is bound outside the Shadow DOM, the `event.target` will - // point to the shadow root so we have to use `composedPath` instead. - return event.composedPath ? event.composedPath()[0] : event.target; -} - -/** Gets whether the code is currently running in a test environment. */ -function _isTestEnvironment() { - // We can't use `declare const` because it causes conflicts inside Google with the real typings - // for these symbols and we can't read them off the global object, because they don't appear to - // be attached there for some runners like Jest. - // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643) - return ( - // @ts-ignore - typeof __karma__ !== 'undefined' && !!__karma__ || - // @ts-ignore - typeof jasmine !== 'undefined' && !!jasmine || - // @ts-ignore - typeof jest !== 'undefined' && !!jest || - // @ts-ignore - typeof Mocha !== 'undefined' && !!Mocha - ); -} - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 5802: -/*!***********************************************************!*\ - !*** ./node_modules/@angular/cdk/fesm2022/text-field.mjs ***! - \***********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ AutofillMonitor: () => (/* binding */ AutofillMonitor), -/* harmony export */ CdkAutofill: () => (/* binding */ CdkAutofill), -/* harmony export */ CdkTextareaAutosize: () => (/* binding */ CdkTextareaAutosize), -/* harmony export */ TextFieldModule: () => (/* binding */ TextFieldModule) -/* harmony export */ }); -/* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/cdk/platform */ 3274); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var _angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/coercion */ 5998); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 506); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ 2484); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs */ 3190); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs/operators */ 1270); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs/operators */ 3303); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common */ 6575); - - - - - - - - - -/** Options to pass to the animationstart listener. */ -const listenerOptions = (0,_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__.normalizePassiveListenerOptions)({ - passive: true -}); -/** - * An injectable service that can be used to monitor the autofill state of an input. - * Based on the following blog post: - * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7 - */ -class AutofillMonitor { - constructor(_platform, _ngZone) { - this._platform = _platform; - this._ngZone = _ngZone; - this._monitoredElements = new Map(); - } - monitor(elementOrRef) { - if (!this._platform.isBrowser) { - return rxjs__WEBPACK_IMPORTED_MODULE_1__.EMPTY; - } - const element = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__.coerceElement)(elementOrRef); - const info = this._monitoredElements.get(element); - if (info) { - return info.subject; - } - const result = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - const cssClass = 'cdk-text-field-autofilled'; - const listener = event => { - // Animation events fire on initial element render, we check for the presence of the autofill - // CSS class to make sure this is a real change in state, not just the initial render before - // we fire off events. - if (event.animationName === 'cdk-text-field-autofill-start' && !element.classList.contains(cssClass)) { - element.classList.add(cssClass); - this._ngZone.run(() => result.next({ - target: event.target, - isAutofilled: true - })); - } else if (event.animationName === 'cdk-text-field-autofill-end' && element.classList.contains(cssClass)) { - element.classList.remove(cssClass); - this._ngZone.run(() => result.next({ - target: event.target, - isAutofilled: false - })); - } - }; - this._ngZone.runOutsideAngular(() => { - element.addEventListener('animationstart', listener, listenerOptions); - element.classList.add('cdk-text-field-autofill-monitored'); - }); - this._monitoredElements.set(element, { - subject: result, - unlisten: () => { - element.removeEventListener('animationstart', listener, listenerOptions); - } - }); - return result; - } - stopMonitoring(elementOrRef) { - const element = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__.coerceElement)(elementOrRef); - const info = this._monitoredElements.get(element); - if (info) { - info.unlisten(); - info.subject.complete(); - element.classList.remove('cdk-text-field-autofill-monitored'); - element.classList.remove('cdk-text-field-autofilled'); - this._monitoredElements.delete(element); - } - } - ngOnDestroy() { - this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element)); - } -} -AutofillMonitor.ɵfac = function AutofillMonitor_Factory(t) { - return new (t || AutofillMonitor)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵinject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__.NgZone)); -}; -AutofillMonitor.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjectable"]({ - token: AutofillMonitor, - factory: AutofillMonitor.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](AutofillMonitor, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__.Platform - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.NgZone - }]; - }, null); -})(); -/** A directive that can be used to monitor the autofill state of an input. */ -class CdkAutofill { - constructor(_elementRef, _autofillMonitor) { - this._elementRef = _elementRef; - this._autofillMonitor = _autofillMonitor; - /** Emits when the autofill state of the element changes. */ - this.cdkAutofill = new _angular_core__WEBPACK_IMPORTED_MODULE_4__.EventEmitter(); - } - ngOnInit() { - this._autofillMonitor.monitor(this._elementRef).subscribe(event => this.cdkAutofill.emit(event)); - } - ngOnDestroy() { - this._autofillMonitor.stopMonitoring(this._elementRef); - } -} -CdkAutofill.ɵfac = function CdkAutofill_Factory(t) { - return new (t || CdkAutofill)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](AutofillMonitor)); -}; -CdkAutofill.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ - type: CdkAutofill, - selectors: [["", "cdkAutofill", ""]], - outputs: { - cdkAutofill: "cdkAutofill" - } -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkAutofill, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Directive, - args: [{ - selector: '[cdkAutofill]' - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ElementRef - }, { - type: AutofillMonitor - }]; - }, { - cdkAutofill: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Output - }] - }); -})(); - -/** Directive to automatically resize a textarea to fit its content. */ -class CdkTextareaAutosize { - /** Minimum amount of rows in the textarea. */ - get minRows() { - return this._minRows; - } - set minRows(value) { - this._minRows = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__.coerceNumberProperty)(value); - this._setMinHeight(); - } - /** Maximum amount of rows in the textarea. */ - get maxRows() { - return this._maxRows; - } - set maxRows(value) { - this._maxRows = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__.coerceNumberProperty)(value); - this._setMaxHeight(); - } - /** Whether autosizing is enabled or not */ - get enabled() { - return this._enabled; - } - set enabled(value) { - value = (0,_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__.coerceBooleanProperty)(value); - // Only act if the actual value changed. This specifically helps to not run - // resizeToFitContent too early (i.e. before ngAfterViewInit) - if (this._enabled !== value) { - (this._enabled = value) ? this.resizeToFitContent(true) : this.reset(); - } - } - get placeholder() { - return this._textareaElement.placeholder; - } - set placeholder(value) { - this._cachedPlaceholderHeight = undefined; - if (value) { - this._textareaElement.setAttribute('placeholder', value); - } else { - this._textareaElement.removeAttribute('placeholder'); - } - this._cacheTextareaPlaceholderHeight(); - } - constructor(_elementRef, _platform, _ngZone, /** @breaking-change 11.0.0 make document required */ - document) { - this._elementRef = _elementRef; - this._platform = _platform; - this._ngZone = _ngZone; - this._destroyed = new rxjs__WEBPACK_IMPORTED_MODULE_3__.Subject(); - this._enabled = true; - /** - * Value of minRows as of last resize. If the minRows has decreased, the - * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight - * does not have the same problem because it does not affect the textarea's scrollHeight. - */ - this._previousMinRows = -1; - this._isViewInited = false; - /** Handles `focus` and `blur` events. */ - this._handleFocusEvent = event => { - this._hasFocus = event.type === 'focus'; - }; - this._document = document; - this._textareaElement = this._elementRef.nativeElement; - } - /** Sets the minimum height of the textarea as determined by minRows. */ - _setMinHeight() { - const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null; - if (minHeight) { - this._textareaElement.style.minHeight = minHeight; - } - } - /** Sets the maximum height of the textarea as determined by maxRows. */ - _setMaxHeight() { - const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null; - if (maxHeight) { - this._textareaElement.style.maxHeight = maxHeight; - } - } - ngAfterViewInit() { - if (this._platform.isBrowser) { - // Remember the height which we started with in case autosizing is disabled - this._initialHeight = this._textareaElement.style.height; - this.resizeToFitContent(); - this._ngZone.runOutsideAngular(() => { - const window = this._getWindow(); - (0,rxjs__WEBPACK_IMPORTED_MODULE_5__.fromEvent)(window, 'resize').pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_6__.auditTime)(16), (0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__.takeUntil)(this._destroyed)).subscribe(() => this.resizeToFitContent(true)); - this._textareaElement.addEventListener('focus', this._handleFocusEvent); - this._textareaElement.addEventListener('blur', this._handleFocusEvent); - }); - this._isViewInited = true; - this.resizeToFitContent(true); - } - } - ngOnDestroy() { - this._textareaElement.removeEventListener('focus', this._handleFocusEvent); - this._textareaElement.removeEventListener('blur', this._handleFocusEvent); - this._destroyed.next(); - this._destroyed.complete(); - } - /** - * Cache the height of a single-row textarea if it has not already been cached. - * - * We need to know how large a single "row" of a textarea is in order to apply minRows and - * maxRows. For the initial version, we will assume that the height of a single line in the - * textarea does not ever change. - */ - _cacheTextareaLineHeight() { - if (this._cachedLineHeight) { - return; - } - // Use a clone element because we have to override some styles. - let textareaClone = this._textareaElement.cloneNode(false); - textareaClone.rows = 1; - // Use `position: absolute` so that this doesn't cause a browser layout and use - // `visibility: hidden` so that nothing is rendered. Clear any other styles that - // would affect the height. - textareaClone.style.position = 'absolute'; - textareaClone.style.visibility = 'hidden'; - textareaClone.style.border = 'none'; - textareaClone.style.padding = '0'; - textareaClone.style.height = ''; - textareaClone.style.minHeight = ''; - textareaClone.style.maxHeight = ''; - // In Firefox it happens that textarea elements are always bigger than the specified amount - // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar. - // As a workaround that removes the extra space for the scrollbar, we can just set overflow - // to hidden. This ensures that there is no invalid calculation of the line height. - // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654 - textareaClone.style.overflow = 'hidden'; - this._textareaElement.parentNode.appendChild(textareaClone); - this._cachedLineHeight = textareaClone.clientHeight; - textareaClone.remove(); - // Min and max heights have to be re-calculated if the cached line height changes - this._setMinHeight(); - this._setMaxHeight(); - } - _measureScrollHeight() { - const element = this._textareaElement; - const previousMargin = element.style.marginBottom || ''; - const isFirefox = this._platform.FIREFOX; - const needsMarginFiller = isFirefox && this._hasFocus; - const measuringClass = isFirefox ? 'cdk-textarea-autosize-measuring-firefox' : 'cdk-textarea-autosize-measuring'; - // In some cases the page might move around while we're measuring the `textarea` on Firefox. We - // work around it by assigning a temporary margin with the same height as the `textarea` so that - // it occupies the same amount of space. See #23233. - if (needsMarginFiller) { - element.style.marginBottom = `${element.clientHeight}px`; - } - // Reset the textarea height to auto in order to shrink back to its default size. - // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations. - element.classList.add(measuringClass); - // The measuring class includes a 2px padding to workaround an issue with Chrome, - // so we account for that extra space here by subtracting 4 (2px top + 2px bottom). - const scrollHeight = element.scrollHeight - 4; - element.classList.remove(measuringClass); - if (needsMarginFiller) { - element.style.marginBottom = previousMargin; - } - return scrollHeight; - } - _cacheTextareaPlaceholderHeight() { - if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) { - return; - } - if (!this.placeholder) { - this._cachedPlaceholderHeight = 0; - return; - } - const value = this._textareaElement.value; - this._textareaElement.value = this._textareaElement.placeholder; - this._cachedPlaceholderHeight = this._measureScrollHeight(); - this._textareaElement.value = value; - } - ngDoCheck() { - if (this._platform.isBrowser) { - this.resizeToFitContent(); - } - } - /** - * Resize the textarea to fit its content. - * @param force Whether to force a height recalculation. By default the height will be - * recalculated only if the value changed since the last call. - */ - resizeToFitContent(force = false) { - // If autosizing is disabled, just skip everything else - if (!this._enabled) { - return; - } - this._cacheTextareaLineHeight(); - this._cacheTextareaPlaceholderHeight(); - // If we haven't determined the line-height yet, we know we're still hidden and there's no point - // in checking the height of the textarea. - if (!this._cachedLineHeight) { - return; - } - const textarea = this._elementRef.nativeElement; - const value = textarea.value; - // Only resize if the value or minRows have changed since these calculations can be expensive. - if (!force && this._minRows === this._previousMinRows && value === this._previousValue) { - return; - } - const scrollHeight = this._measureScrollHeight(); - const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0); - // Use the scrollHeight to know how large the textarea *would* be if fit its entire value. - textarea.style.height = `${height}px`; - this._ngZone.runOutsideAngular(() => { - if (typeof requestAnimationFrame !== 'undefined') { - requestAnimationFrame(() => this._scrollToCaretPosition(textarea)); - } else { - setTimeout(() => this._scrollToCaretPosition(textarea)); - } - }); - this._previousValue = value; - this._previousMinRows = this._minRows; - } - /** - * Resets the textarea to its original size - */ - reset() { - // Do not try to change the textarea, if the initialHeight has not been determined yet - // This might potentially remove styles when reset() is called before ngAfterViewInit - if (this._initialHeight !== undefined) { - this._textareaElement.style.height = this._initialHeight; - } - } - _noopInputHandler() { - // no-op handler that ensures we're running change detection on input events. - } - /** Access injected document if available or fallback to global document reference */ - _getDocument() { - return this._document || document; - } - /** Use defaultView of injected document if available or fallback to global window reference */ - _getWindow() { - const doc = this._getDocument(); - return doc.defaultView || window; - } - /** - * Scrolls a textarea to the caret position. On Firefox resizing the textarea will - * prevent it from scrolling to the caret position. We need to re-set the selection - * in order for it to scroll to the proper position. - */ - _scrollToCaretPosition(textarea) { - const { - selectionStart, - selectionEnd - } = textarea; - // IE will throw an "Unspecified error" if we try to set the selection range after the - // element has been removed from the DOM. Assert that the directive hasn't been destroyed - // between the time we requested the animation frame and when it was executed. - // Also note that we have to assert that the textarea is focused before we set the - // selection range. Setting the selection range on a non-focused textarea will cause - // it to receive focus on IE and Edge. - if (!this._destroyed.isStopped && this._hasFocus) { - textarea.setSelectionRange(selectionStart, selectionEnd); - } - } -} -CdkTextareaAutosize.ɵfac = function CdkTextareaAutosize_Factory(t) { - return new (t || CdkTextareaAutosize)(_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__.Platform), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_4__.NgZone), _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdirectiveInject"](_angular_common__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT, 8)); -}; -CdkTextareaAutosize.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineDirective"]({ - type: CdkTextareaAutosize, - selectors: [["textarea", "cdkTextareaAutosize", ""]], - hostAttrs: ["rows", "1", 1, "cdk-textarea-autosize"], - hostBindings: function CdkTextareaAutosize_HostBindings(rf, ctx) { - if (rf & 1) { - _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵlistener"]("input", function CdkTextareaAutosize_input_HostBindingHandler() { - return ctx._noopInputHandler(); - }); - } - }, - inputs: { - minRows: ["cdkAutosizeMinRows", "minRows"], - maxRows: ["cdkAutosizeMaxRows", "maxRows"], - enabled: ["cdkTextareaAutosize", "enabled"], - placeholder: "placeholder" - }, - exportAs: ["cdkTextareaAutosize"] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](CdkTextareaAutosize, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Directive, - args: [{ - selector: 'textarea[cdkTextareaAutosize]', - exportAs: 'cdkTextareaAutosize', - host: { - 'class': 'cdk-textarea-autosize', - // Textarea elements that have the directive applied should have a single row by default. - // Browsers normally show two rows by default and therefore this limits the minRows binding. - 'rows': '1', - '(input)': '_noopInputHandler()' - } - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.ElementRef - }, { - type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_0__.Platform - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.NgZone - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Inject, - args: [_angular_common__WEBPACK_IMPORTED_MODULE_8__.DOCUMENT] - }] - }]; - }, { - minRows: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input, - args: ['cdkAutosizeMinRows'] - }], - maxRows: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input, - args: ['cdkAutosizeMaxRows'] - }], - enabled: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input, - args: ['cdkTextareaAutosize'] - }], - placeholder: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.Input - }] - }); -})(); -class TextFieldModule {} -TextFieldModule.ɵfac = function TextFieldModule_Factory(t) { - return new (t || TextFieldModule)(); -}; -TextFieldModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineNgModule"]({ - type: TextFieldModule -}); -TextFieldModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵɵdefineInjector"]({}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_4__["ɵsetClassMetadata"](TextFieldModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_4__.NgModule, - args: [{ - declarations: [CdkAutofill, CdkTextareaAutosize], - exports: [CdkAutofill, CdkTextareaAutosize] - }] - }], null, null); -})(); - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 6575: -/*!**********************************************************!*\ - !*** ./node_modules/@angular/common/fesm2022/common.mjs ***! - \**********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ APP_BASE_HREF: () => (/* binding */ APP_BASE_HREF), -/* harmony export */ AsyncPipe: () => (/* binding */ AsyncPipe), -/* harmony export */ BrowserPlatformLocation: () => (/* binding */ BrowserPlatformLocation), -/* harmony export */ CommonModule: () => (/* binding */ CommonModule), -/* harmony export */ CurrencyPipe: () => (/* binding */ CurrencyPipe), -/* harmony export */ DATE_PIPE_DEFAULT_OPTIONS: () => (/* binding */ DATE_PIPE_DEFAULT_OPTIONS), -/* harmony export */ DATE_PIPE_DEFAULT_TIMEZONE: () => (/* binding */ DATE_PIPE_DEFAULT_TIMEZONE), -/* harmony export */ DOCUMENT: () => (/* binding */ DOCUMENT), -/* harmony export */ DatePipe: () => (/* binding */ DatePipe), -/* harmony export */ DecimalPipe: () => (/* binding */ DecimalPipe), -/* harmony export */ FormStyle: () => (/* binding */ FormStyle), -/* harmony export */ FormatWidth: () => (/* binding */ FormatWidth), -/* harmony export */ HashLocationStrategy: () => (/* binding */ HashLocationStrategy), -/* harmony export */ I18nPluralPipe: () => (/* binding */ I18nPluralPipe), -/* harmony export */ I18nSelectPipe: () => (/* binding */ I18nSelectPipe), -/* harmony export */ IMAGE_CONFIG: () => (/* binding */ IMAGE_CONFIG), -/* harmony export */ IMAGE_LOADER: () => (/* binding */ IMAGE_LOADER), -/* harmony export */ JsonPipe: () => (/* binding */ JsonPipe), -/* harmony export */ KeyValuePipe: () => (/* binding */ KeyValuePipe), -/* harmony export */ LOCATION_INITIALIZED: () => (/* binding */ LOCATION_INITIALIZED), -/* harmony export */ Location: () => (/* binding */ Location), -/* harmony export */ LocationStrategy: () => (/* binding */ LocationStrategy), -/* harmony export */ LowerCasePipe: () => (/* binding */ LowerCasePipe), -/* harmony export */ NgClass: () => (/* binding */ NgClass), -/* harmony export */ NgComponentOutlet: () => (/* binding */ NgComponentOutlet), -/* harmony export */ NgFor: () => (/* binding */ NgForOf), -/* harmony export */ NgForOf: () => (/* binding */ NgForOf), -/* harmony export */ NgForOfContext: () => (/* binding */ NgForOfContext), -/* harmony export */ NgIf: () => (/* binding */ NgIf), -/* harmony export */ NgIfContext: () => (/* binding */ NgIfContext), -/* harmony export */ NgLocaleLocalization: () => (/* binding */ NgLocaleLocalization), -/* harmony export */ NgLocalization: () => (/* binding */ NgLocalization), -/* harmony export */ NgOptimizedImage: () => (/* binding */ NgOptimizedImage), -/* harmony export */ NgPlural: () => (/* binding */ NgPlural), -/* harmony export */ NgPluralCase: () => (/* binding */ NgPluralCase), -/* harmony export */ NgStyle: () => (/* binding */ NgStyle), -/* harmony export */ NgSwitch: () => (/* binding */ NgSwitch), -/* harmony export */ NgSwitchCase: () => (/* binding */ NgSwitchCase), -/* harmony export */ NgSwitchDefault: () => (/* binding */ NgSwitchDefault), -/* harmony export */ NgTemplateOutlet: () => (/* binding */ NgTemplateOutlet), -/* harmony export */ NumberFormatStyle: () => (/* binding */ NumberFormatStyle), -/* harmony export */ NumberSymbol: () => (/* binding */ NumberSymbol), -/* harmony export */ PRECONNECT_CHECK_BLOCKLIST: () => (/* binding */ PRECONNECT_CHECK_BLOCKLIST), -/* harmony export */ PathLocationStrategy: () => (/* binding */ PathLocationStrategy), -/* harmony export */ PercentPipe: () => (/* binding */ PercentPipe), -/* harmony export */ PlatformLocation: () => (/* binding */ PlatformLocation), -/* harmony export */ Plural: () => (/* binding */ Plural), -/* harmony export */ SlicePipe: () => (/* binding */ SlicePipe), -/* harmony export */ TitleCasePipe: () => (/* binding */ TitleCasePipe), -/* harmony export */ TranslationWidth: () => (/* binding */ TranslationWidth), -/* harmony export */ UpperCasePipe: () => (/* binding */ UpperCasePipe), -/* harmony export */ VERSION: () => (/* binding */ VERSION), -/* harmony export */ ViewportScroller: () => (/* binding */ ViewportScroller), -/* harmony export */ WeekDay: () => (/* binding */ WeekDay), -/* harmony export */ XhrFactory: () => (/* binding */ XhrFactory), -/* harmony export */ formatCurrency: () => (/* binding */ formatCurrency), -/* harmony export */ formatDate: () => (/* binding */ formatDate), -/* harmony export */ formatNumber: () => (/* binding */ formatNumber), -/* harmony export */ formatPercent: () => (/* binding */ formatPercent), -/* harmony export */ getCurrencySymbol: () => (/* binding */ getCurrencySymbol), -/* harmony export */ getLocaleCurrencyCode: () => (/* binding */ getLocaleCurrencyCode), -/* harmony export */ getLocaleCurrencyName: () => (/* binding */ getLocaleCurrencyName), -/* harmony export */ getLocaleCurrencySymbol: () => (/* binding */ getLocaleCurrencySymbol), -/* harmony export */ getLocaleDateFormat: () => (/* binding */ getLocaleDateFormat), -/* harmony export */ getLocaleDateTimeFormat: () => (/* binding */ getLocaleDateTimeFormat), -/* harmony export */ getLocaleDayNames: () => (/* binding */ getLocaleDayNames), -/* harmony export */ getLocaleDayPeriods: () => (/* binding */ getLocaleDayPeriods), -/* harmony export */ getLocaleDirection: () => (/* binding */ getLocaleDirection), -/* harmony export */ getLocaleEraNames: () => (/* binding */ getLocaleEraNames), -/* harmony export */ getLocaleExtraDayPeriodRules: () => (/* binding */ getLocaleExtraDayPeriodRules), -/* harmony export */ getLocaleExtraDayPeriods: () => (/* binding */ getLocaleExtraDayPeriods), -/* harmony export */ getLocaleFirstDayOfWeek: () => (/* binding */ getLocaleFirstDayOfWeek), -/* harmony export */ getLocaleId: () => (/* binding */ getLocaleId), -/* harmony export */ getLocaleMonthNames: () => (/* binding */ getLocaleMonthNames), -/* harmony export */ getLocaleNumberFormat: () => (/* binding */ getLocaleNumberFormat), -/* harmony export */ getLocaleNumberSymbol: () => (/* binding */ getLocaleNumberSymbol), -/* harmony export */ getLocalePluralCase: () => (/* binding */ getLocalePluralCase), -/* harmony export */ getLocaleTimeFormat: () => (/* binding */ getLocaleTimeFormat), -/* harmony export */ getLocaleWeekEndRange: () => (/* binding */ getLocaleWeekEndRange), -/* harmony export */ getNumberOfCurrencyDigits: () => (/* binding */ getNumberOfCurrencyDigits), -/* harmony export */ isPlatformBrowser: () => (/* binding */ isPlatformBrowser), -/* harmony export */ isPlatformServer: () => (/* binding */ isPlatformServer), -/* harmony export */ isPlatformWorkerApp: () => (/* binding */ isPlatformWorkerApp), -/* harmony export */ isPlatformWorkerUi: () => (/* binding */ isPlatformWorkerUi), -/* harmony export */ provideCloudflareLoader: () => (/* binding */ provideCloudflareLoader), -/* harmony export */ provideCloudinaryLoader: () => (/* binding */ provideCloudinaryLoader), -/* harmony export */ provideImageKitLoader: () => (/* binding */ provideImageKitLoader), -/* harmony export */ provideImgixLoader: () => (/* binding */ provideImgixLoader), -/* harmony export */ registerLocaleData: () => (/* binding */ registerLocaleData), -/* harmony export */ "ɵDomAdapter": () => (/* binding */ DomAdapter), -/* harmony export */ "ɵNullViewportScroller": () => (/* binding */ NullViewportScroller), -/* harmony export */ "ɵPLATFORM_BROWSER_ID": () => (/* binding */ PLATFORM_BROWSER_ID), -/* harmony export */ "ɵPLATFORM_SERVER_ID": () => (/* binding */ PLATFORM_SERVER_ID), -/* harmony export */ "ɵPLATFORM_WORKER_APP_ID": () => (/* binding */ PLATFORM_WORKER_APP_ID), -/* harmony export */ "ɵPLATFORM_WORKER_UI_ID": () => (/* binding */ PLATFORM_WORKER_UI_ID), -/* harmony export */ "ɵgetDOM": () => (/* binding */ getDOM), -/* harmony export */ "ɵparseCookieValue": () => (/* binding */ parseCookieValue), -/* harmony export */ "ɵsetRootDomAdapter": () => (/* binding */ setRootDomAdapter) -/* harmony export */ }); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ 1699); -/** - * @license Angular v16.1.8 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ - - - -let _DOM = null; -function getDOM() { - return _DOM; -} -function setRootDomAdapter(adapter) { - if (!_DOM) { - _DOM = adapter; - } -} -/* tslint:disable:requireParameterType */ -/** - * Provides DOM operations in an environment-agnostic way. - * - * @security Tread carefully! Interacting with the DOM directly is dangerous and - * can introduce XSS risks. - */ -class DomAdapter {} - -/** - * A DI Token representing the main rendering context. - * In a browser and SSR this is the DOM Document. - * When using SSR, that document is created by [Domino](https://github.com/angular/domino). - * - * @publicApi - */ -const DOCUMENT = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('DocumentToken'); - -/** - * This class should not be used directly by an application developer. Instead, use - * {@link Location}. - * - * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be - * platform-agnostic. - * This means that we can have different implementation of `PlatformLocation` for the different - * platforms that Angular supports. For example, `@angular/platform-browser` provides an - * implementation specific to the browser environment, while `@angular/platform-server` provides - * one suitable for use with server-side rendering. - * - * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy} - * when they need to interact with the DOM APIs like pushState, popState, etc. - * - * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly - * by the {@link Router} in order to navigate between routes. Since all interactions between {@link - * Router} / - * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation` - * class, they are all platform-agnostic. - * - * @publicApi - */ -class PlatformLocation { - historyGo(relativePosition) { - throw new Error('Not implemented'); - } -} -PlatformLocation.ɵfac = function PlatformLocation_Factory(t) { - return new (t || PlatformLocation)(); -}; -PlatformLocation.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: PlatformLocation, - factory: function () { - return (() => (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(BrowserPlatformLocation))(); - }, - providedIn: 'platform' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](PlatformLocation, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'platform', - useFactory: () => (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(BrowserPlatformLocation) - }] - }], null, null); -})(); -/** - * @description - * Indicates when a location is initialized. - * - * @publicApi - */ -const LOCATION_INITIALIZED = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('Location Initialized'); -/** - * `PlatformLocation` encapsulates all of the direct calls to platform APIs. - * This class should not be used directly by an application developer. Instead, use - * {@link Location}. - * - * @publicApi - */ -class BrowserPlatformLocation extends PlatformLocation { - constructor() { - super(); - this._doc = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(DOCUMENT); - this._location = window.location; - this._history = window.history; - } - getBaseHrefFromDOM() { - return getDOM().getBaseHref(this._doc); - } - onPopState(fn) { - const window = getDOM().getGlobalEventTarget(this._doc, 'window'); - window.addEventListener('popstate', fn, false); - return () => window.removeEventListener('popstate', fn); - } - onHashChange(fn) { - const window = getDOM().getGlobalEventTarget(this._doc, 'window'); - window.addEventListener('hashchange', fn, false); - return () => window.removeEventListener('hashchange', fn); - } - get href() { - return this._location.href; - } - get protocol() { - return this._location.protocol; - } - get hostname() { - return this._location.hostname; - } - get port() { - return this._location.port; - } - get pathname() { - return this._location.pathname; - } - get search() { - return this._location.search; - } - get hash() { - return this._location.hash; - } - set pathname(newPath) { - this._location.pathname = newPath; - } - pushState(state, title, url) { - this._history.pushState(state, title, url); - } - replaceState(state, title, url) { - this._history.replaceState(state, title, url); - } - forward() { - this._history.forward(); - } - back() { - this._history.back(); - } - historyGo(relativePosition = 0) { - this._history.go(relativePosition); - } - getState() { - return this._history.state; - } -} -BrowserPlatformLocation.ɵfac = function BrowserPlatformLocation_Factory(t) { - return new (t || BrowserPlatformLocation)(); -}; -BrowserPlatformLocation.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: BrowserPlatformLocation, - factory: function () { - return (() => new BrowserPlatformLocation())(); - }, - providedIn: 'platform' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](BrowserPlatformLocation, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'platform', - useFactory: () => new BrowserPlatformLocation() - }] - }], function () { - return []; - }, null); -})(); - -/** - * Joins two parts of a URL with a slash if needed. - * - * @param start URL string - * @param end URL string - * - * - * @returns The joined URL string. - */ -function joinWithSlash(start, end) { - if (start.length == 0) { - return end; - } - if (end.length == 0) { - return start; - } - let slashes = 0; - if (start.endsWith('/')) { - slashes++; - } - if (end.startsWith('/')) { - slashes++; - } - if (slashes == 2) { - return start + end.substring(1); - } - if (slashes == 1) { - return start + end; - } - return start + '/' + end; -} -/** - * Removes a trailing slash from a URL string if needed. - * Looks for the first occurrence of either `#`, `?`, or the end of the - * line as `/` characters and removes the trailing slash if one exists. - * - * @param url URL string. - * - * @returns The URL string, modified if needed. - */ -function stripTrailingSlash(url) { - const match = url.match(/#|\?|$/); - const pathEndIdx = match && match.index || url.length; - const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0); - return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx); -} -/** - * Normalizes URL parameters by prepending with `?` if needed. - * - * @param params String of URL parameters. - * - * @returns The normalized URL parameters string. - */ -function normalizeQueryParams(params) { - return params && params[0] !== '?' ? '?' + params : params; -} - -/** - * Enables the `Location` service to read route state from the browser's URL. - * Angular provides two strategies: - * `HashLocationStrategy` and `PathLocationStrategy`. - * - * Applications should use the `Router` or `Location` services to - * interact with application route state. - * - * For instance, `HashLocationStrategy` produces URLs like - * http://example.com#/foo, - * and `PathLocationStrategy` produces - * http://example.com/foo as an equivalent URL. - * - * See these two classes for more. - * - * @publicApi - */ -class LocationStrategy { - historyGo(relativePosition) { - throw new Error('Not implemented'); - } -} -LocationStrategy.ɵfac = function LocationStrategy_Factory(t) { - return new (t || LocationStrategy)(); -}; -LocationStrategy.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: LocationStrategy, - factory: function () { - return (() => (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(PathLocationStrategy))(); - }, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](LocationStrategy, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root', - useFactory: () => (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(PathLocationStrategy) - }] - }], null, null); -})(); -/** - * A predefined [DI token](guide/glossary#di-token) for the base href - * to be used with the `PathLocationStrategy`. - * The base href is the URL prefix that should be preserved when generating - * and recognizing URLs. - * - * @usageNotes - * - * The following example shows how to use this token to configure the root app injector - * with a base href value, so that the DI framework can supply the dependency anywhere in the app. - * - * ```typescript - * import {Component, NgModule} from '@angular/core'; - * import {APP_BASE_HREF} from '@angular/common'; - * - * @NgModule({ - * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}] - * }) - * class AppModule {} - * ``` - * - * @publicApi - */ -const APP_BASE_HREF = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('appBaseHref'); -/** - * @description - * A {@link LocationStrategy} used to configure the {@link Location} service to - * represent its state in the - * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the - * browser's URL. - * - * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF} - * or add a `` element to the document to override the default. - * - * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call - * `location.go('/foo')`, the browser's URL will become - * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly, - * the `` and/or `APP_BASE_HREF` should end with a `/`. - * - * Similarly, if you add `` to the document and call - * `location.go('/foo')`, the browser's URL will become - * `example.com/my/app/foo`. - * - * Note that when using `PathLocationStrategy`, neither the query nor - * the fragment in the `` will be preserved, as outlined - * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2). - * - * @usageNotes - * - * ### Example - * - * {@example common/location/ts/path_location_component.ts region='LocationComponent'} - * - * @publicApi - */ -class PathLocationStrategy extends LocationStrategy { - constructor(_platformLocation, href) { - super(); - this._platformLocation = _platformLocation; - this._removeListenerFns = []; - this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ?? (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(DOCUMENT).location?.origin ?? ''; - } - /** @nodoc */ - ngOnDestroy() { - while (this._removeListenerFns.length) { - this._removeListenerFns.pop()(); - } - } - onPopState(fn) { - this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn)); - } - getBaseHref() { - return this._baseHref; - } - prepareExternalUrl(internal) { - return joinWithSlash(this._baseHref, internal); - } - path(includeHash = false) { - const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search); - const hash = this._platformLocation.hash; - return hash && includeHash ? `${pathname}${hash}` : pathname; - } - pushState(state, title, url, queryParams) { - const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams)); - this._platformLocation.pushState(state, title, externalUrl); - } - replaceState(state, title, url, queryParams) { - const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams)); - this._platformLocation.replaceState(state, title, externalUrl); - } - forward() { - this._platformLocation.forward(); - } - back() { - this._platformLocation.back(); - } - getState() { - return this._platformLocation.getState(); - } - historyGo(relativePosition = 0) { - this._platformLocation.historyGo?.(relativePosition); - } -} -PathLocationStrategy.ɵfac = function PathLocationStrategy_Factory(t) { - return new (t || PathLocationStrategy)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](PlatformLocation), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](APP_BASE_HREF, 8)); -}; -PathLocationStrategy.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: PathLocationStrategy, - factory: PathLocationStrategy.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](PathLocationStrategy, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return [{ - type: PlatformLocation - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [APP_BASE_HREF] - }] - }]; - }, null); -})(); - -/** - * @description - * A {@link LocationStrategy} used to configure the {@link Location} service to - * represent its state in the - * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) - * of the browser's URL. - * - * For instance, if you call `location.go('/foo')`, the browser's URL will become - * `example.com#/foo`. - * - * @usageNotes - * - * ### Example - * - * {@example common/location/ts/hash_location_component.ts region='LocationComponent'} - * - * @publicApi - */ -class HashLocationStrategy extends LocationStrategy { - constructor(_platformLocation, _baseHref) { - super(); - this._platformLocation = _platformLocation; - this._baseHref = ''; - this._removeListenerFns = []; - if (_baseHref != null) { - this._baseHref = _baseHref; - } - } - /** @nodoc */ - ngOnDestroy() { - while (this._removeListenerFns.length) { - this._removeListenerFns.pop()(); - } - } - onPopState(fn) { - this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn)); - } - getBaseHref() { - return this._baseHref; - } - path(includeHash = false) { - // the hash value is always prefixed with a `#` - // and if it is empty then it will stay empty - let path = this._platformLocation.hash; - if (path == null) path = '#'; - return path.length > 0 ? path.substring(1) : path; - } - prepareExternalUrl(internal) { - const url = joinWithSlash(this._baseHref, internal); - return url.length > 0 ? '#' + url : url; - } - pushState(state, title, path, queryParams) { - let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams)); - if (url.length == 0) { - url = this._platformLocation.pathname; - } - this._platformLocation.pushState(state, title, url); - } - replaceState(state, title, path, queryParams) { - let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams)); - if (url.length == 0) { - url = this._platformLocation.pathname; - } - this._platformLocation.replaceState(state, title, url); - } - forward() { - this._platformLocation.forward(); - } - back() { - this._platformLocation.back(); - } - getState() { - return this._platformLocation.getState(); - } - historyGo(relativePosition = 0) { - this._platformLocation.historyGo?.(relativePosition); - } -} -HashLocationStrategy.ɵfac = function HashLocationStrategy_Factory(t) { - return new (t || HashLocationStrategy)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](PlatformLocation), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](APP_BASE_HREF, 8)); -}; -HashLocationStrategy.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: HashLocationStrategy, - factory: HashLocationStrategy.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](HashLocationStrategy, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable - }], function () { - return [{ - type: PlatformLocation - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [APP_BASE_HREF] - }] - }]; - }, null); -})(); - -/** - * @description - * - * A service that applications can use to interact with a browser's URL. - * - * Depending on the `LocationStrategy` used, `Location` persists - * to the URL's path or the URL's hash segment. - * - * @usageNotes - * - * It's better to use the `Router.navigate()` service to trigger route changes. Use - * `Location` only if you need to interact with or create normalized URLs outside of - * routing. - * - * `Location` is responsible for normalizing the URL against the application's base href. - * A normalized URL is absolute from the URL host, includes the application's base href, and has no - * trailing slash: - * - `/my/app/user/123` is normalized - * - `my/app/user/123` **is not** normalized - * - `/my/app/user/123/` **is not** normalized - * - * ### Example - * - * - * - * @publicApi - */ -class Location { - constructor(locationStrategy) { - /** @internal */ - this._subject = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.EventEmitter(); - /** @internal */ - this._urlChangeListeners = []; - /** @internal */ - this._urlChangeSubscription = null; - this._locationStrategy = locationStrategy; - const baseHref = this._locationStrategy.getBaseHref(); - // Note: This class's interaction with base HREF does not fully follow the rules - // outlined in the spec https://www.freesoft.org/CIE/RFC/1808/18.htm. - // Instead of trying to fix individual bugs with more and more code, we should - // investigate using the URL constructor and providing the base as a second - // argument. - // https://developer.mozilla.org/en-US/docs/Web/API/URL/URL#parameters - this._basePath = _stripOrigin(stripTrailingSlash(_stripIndexHtml(baseHref))); - this._locationStrategy.onPopState(ev => { - this._subject.emit({ - 'url': this.path(true), - 'pop': true, - 'state': ev.state, - 'type': ev.type - }); - }); - } - /** @nodoc */ - ngOnDestroy() { - this._urlChangeSubscription?.unsubscribe(); - this._urlChangeListeners = []; - } - /** - * Normalizes the URL path for this location. - * - * @param includeHash True to include an anchor fragment in the path. - * - * @returns The normalized URL path. - */ - // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is - // removed. - path(includeHash = false) { - return this.normalize(this._locationStrategy.path(includeHash)); - } - /** - * Reports the current state of the location history. - * @returns The current value of the `history.state` object. - */ - getState() { - return this._locationStrategy.getState(); - } - /** - * Normalizes the given path and compares to the current normalized path. - * - * @param path The given URL path. - * @param query Query parameters. - * - * @returns True if the given URL path is equal to the current normalized path, false - * otherwise. - */ - isCurrentPathEqualTo(path, query = '') { - return this.path() == this.normalize(path + normalizeQueryParams(query)); - } - /** - * Normalizes a URL path by stripping any trailing slashes. - * - * @param url String representing a URL. - * - * @returns The normalized URL string. - */ - normalize(url) { - return Location.stripTrailingSlash(_stripBasePath(this._basePath, _stripIndexHtml(url))); - } - /** - * Normalizes an external URL path. - * If the given URL doesn't begin with a leading slash (`'/'`), adds one - * before normalizing. Adds a hash if `HashLocationStrategy` is - * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use. - * - * @param url String representing a URL. - * - * @returns A normalized platform-specific URL. - */ - prepareExternalUrl(url) { - if (url && url[0] !== '/') { - url = '/' + url; - } - return this._locationStrategy.prepareExternalUrl(url); - } - // TODO: rename this method to pushState - /** - * Changes the browser's URL to a normalized version of a given URL, and pushes a - * new item onto the platform's history. - * - * @param path URL path to normalize. - * @param query Query parameters. - * @param state Location history state. - * - */ - go(path, query = '', state = null) { - this._locationStrategy.pushState(state, '', path, query); - this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state); - } - /** - * Changes the browser's URL to a normalized version of the given URL, and replaces - * the top item on the platform's history stack. - * - * @param path URL path to normalize. - * @param query Query parameters. - * @param state Location history state. - */ - replaceState(path, query = '', state = null) { - this._locationStrategy.replaceState(state, '', path, query); - this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state); - } - /** - * Navigates forward in the platform's history. - */ - forward() { - this._locationStrategy.forward(); - } - /** - * Navigates back in the platform's history. - */ - back() { - this._locationStrategy.back(); - } - /** - * Navigate to a specific page from session history, identified by its relative position to the - * current page. - * - * @param relativePosition Position of the target page in the history relative to the current - * page. - * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)` - * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go - * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs - * when `relativePosition` equals 0. - * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history - */ - historyGo(relativePosition = 0) { - this._locationStrategy.historyGo?.(relativePosition); - } - /** - * Registers a URL change listener. Use to catch updates performed by the Angular - * framework that are not detectible through "popstate" or "hashchange" events. - * - * @param fn The change handler function, which take a URL and a location history state. - * @returns A function that, when executed, unregisters a URL change listener. - */ - onUrlChange(fn) { - this._urlChangeListeners.push(fn); - if (!this._urlChangeSubscription) { - this._urlChangeSubscription = this.subscribe(v => { - this._notifyUrlChangeListeners(v.url, v.state); - }); - } - return () => { - const fnIndex = this._urlChangeListeners.indexOf(fn); - this._urlChangeListeners.splice(fnIndex, 1); - if (this._urlChangeListeners.length === 0) { - this._urlChangeSubscription?.unsubscribe(); - this._urlChangeSubscription = null; - } - }; - } - /** @internal */ - _notifyUrlChangeListeners(url = '', state) { - this._urlChangeListeners.forEach(fn => fn(url, state)); - } - /** - * Subscribes to the platform's `popState` events. - * - * Note: `Location.go()` does not trigger the `popState` event in the browser. Use - * `Location.onUrlChange()` to subscribe to URL changes instead. - * - * @param value Event that is triggered when the state history changes. - * @param exception The exception to throw. - * - * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate) - * - * @returns Subscribed events. - */ - subscribe(onNext, onThrow, onReturn) { - return this._subject.subscribe({ - next: onNext, - error: onThrow, - complete: onReturn - }); - } - /** - * Normalizes URL parameters by prepending with `?` if needed. - * - * @param params String of URL parameters. - * - * @returns The normalized URL parameters string. - */ -} -Location.normalizeQueryParams = normalizeQueryParams; -/** - * Joins two parts of a URL with a slash if needed. - * - * @param start URL string - * @param end URL string - * - * - * @returns The joined URL string. - */ -Location.joinWithSlash = joinWithSlash; -/** - * Removes a trailing slash from a URL string if needed. - * Looks for the first occurrence of either `#`, `?`, or the end of the - * line as `/` characters and removes the trailing slash if one exists. - * - * @param url URL string. - * - * @returns The URL string, modified if needed. - */ -Location.stripTrailingSlash = stripTrailingSlash; -Location.ɵfac = function Location_Factory(t) { - return new (t || Location)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](LocationStrategy)); -}; -Location.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: Location, - factory: function () { - return createLocation(); - }, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](Location, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root', - // See #23917 - useFactory: createLocation - }] - }], function () { - return [{ - type: LocationStrategy - }]; - }, null); -})(); -function createLocation() { - return new Location((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"])(LocationStrategy)); -} -function _stripBasePath(basePath, url) { - if (!basePath || !url.startsWith(basePath)) { - return url; - } - const strippedUrl = url.substring(basePath.length); - if (strippedUrl === '' || ['/', ';', '?', '#'].includes(strippedUrl[0])) { - return strippedUrl; - } - return url; -} -function _stripIndexHtml(url) { - return url.replace(/\/index.html$/, ''); -} -function _stripOrigin(baseHref) { - // DO NOT REFACTOR! Previously, this check looked like this: - // `/^(https?:)?\/\//.test(baseHref)`, but that resulted in - // syntactically incorrect code after Closure Compiler minification. - // This was likely caused by a bug in Closure Compiler, but - // for now, the check is rewritten to use `new RegExp` instead. - const isAbsoluteUrl = new RegExp('^(https?:)?//').test(baseHref); - if (isAbsoluteUrl) { - const [, pathname] = baseHref.split(/\/\/[^\/]+/); - return pathname; - } - return baseHref; -} - -/** @internal */ -const CURRENCIES_EN = { - "ADP": [undefined, undefined, 0], - "AFN": [undefined, "؋", 0], - "ALL": [undefined, undefined, 0], - "AMD": [undefined, "֏", 2], - "AOA": [undefined, "Kz"], - "ARS": [undefined, "$"], - "AUD": ["A$", "$"], - "AZN": [undefined, "₼"], - "BAM": [undefined, "KM"], - "BBD": [undefined, "$"], - "BDT": [undefined, "৳"], - "BHD": [undefined, undefined, 3], - "BIF": [undefined, undefined, 0], - "BMD": [undefined, "$"], - "BND": [undefined, "$"], - "BOB": [undefined, "Bs"], - "BRL": ["R$"], - "BSD": [undefined, "$"], - "BWP": [undefined, "P"], - "BYN": [undefined, undefined, 2], - "BYR": [undefined, undefined, 0], - "BZD": [undefined, "$"], - "CAD": ["CA$", "$", 2], - "CHF": [undefined, undefined, 2], - "CLF": [undefined, undefined, 4], - "CLP": [undefined, "$", 0], - "CNY": ["CN¥", "¥"], - "COP": [undefined, "$", 2], - "CRC": [undefined, "₡", 2], - "CUC": [undefined, "$"], - "CUP": [undefined, "$"], - "CZK": [undefined, "Kč", 2], - "DJF": [undefined, undefined, 0], - "DKK": [undefined, "kr", 2], - "DOP": [undefined, "$"], - "EGP": [undefined, "E£"], - "ESP": [undefined, "₧", 0], - "EUR": ["€"], - "FJD": [undefined, "$"], - "FKP": [undefined, "£"], - "GBP": ["£"], - "GEL": [undefined, "₾"], - "GHS": [undefined, "GH₵"], - "GIP": [undefined, "£"], - "GNF": [undefined, "FG", 0], - "GTQ": [undefined, "Q"], - "GYD": [undefined, "$", 2], - "HKD": ["HK$", "$"], - "HNL": [undefined, "L"], - "HRK": [undefined, "kn"], - "HUF": [undefined, "Ft", 2], - "IDR": [undefined, "Rp", 2], - "ILS": ["₪"], - "INR": ["₹"], - "IQD": [undefined, undefined, 0], - "IRR": [undefined, undefined, 0], - "ISK": [undefined, "kr", 0], - "ITL": [undefined, undefined, 0], - "JMD": [undefined, "$"], - "JOD": [undefined, undefined, 3], - "JPY": ["¥", undefined, 0], - "KHR": [undefined, "៛"], - "KMF": [undefined, "CF", 0], - "KPW": [undefined, "₩", 0], - "KRW": ["₩", undefined, 0], - "KWD": [undefined, undefined, 3], - "KYD": [undefined, "$"], - "KZT": [undefined, "₸"], - "LAK": [undefined, "₭", 0], - "LBP": [undefined, "L£", 0], - "LKR": [undefined, "Rs"], - "LRD": [undefined, "$"], - "LTL": [undefined, "Lt"], - "LUF": [undefined, undefined, 0], - "LVL": [undefined, "Ls"], - "LYD": [undefined, undefined, 3], - "MGA": [undefined, "Ar", 0], - "MGF": [undefined, undefined, 0], - "MMK": [undefined, "K", 0], - "MNT": [undefined, "₮", 2], - "MRO": [undefined, undefined, 0], - "MUR": [undefined, "Rs", 2], - "MXN": ["MX$", "$"], - "MYR": [undefined, "RM"], - "NAD": [undefined, "$"], - "NGN": [undefined, "₦"], - "NIO": [undefined, "C$"], - "NOK": [undefined, "kr", 2], - "NPR": [undefined, "Rs"], - "NZD": ["NZ$", "$"], - "OMR": [undefined, undefined, 3], - "PHP": ["₱"], - "PKR": [undefined, "Rs", 2], - "PLN": [undefined, "zł"], - "PYG": [undefined, "₲", 0], - "RON": [undefined, "lei"], - "RSD": [undefined, undefined, 0], - "RUB": [undefined, "₽"], - "RWF": [undefined, "RF", 0], - "SBD": [undefined, "$"], - "SEK": [undefined, "kr", 2], - "SGD": [undefined, "$"], - "SHP": [undefined, "£"], - "SLE": [undefined, undefined, 2], - "SLL": [undefined, undefined, 0], - "SOS": [undefined, undefined, 0], - "SRD": [undefined, "$"], - "SSP": [undefined, "£"], - "STD": [undefined, undefined, 0], - "STN": [undefined, "Db"], - "SYP": [undefined, "£", 0], - "THB": [undefined, "฿"], - "TMM": [undefined, undefined, 0], - "TND": [undefined, undefined, 3], - "TOP": [undefined, "T$"], - "TRL": [undefined, undefined, 0], - "TRY": [undefined, "₺"], - "TTD": [undefined, "$"], - "TWD": ["NT$", "$", 2], - "TZS": [undefined, undefined, 2], - "UAH": [undefined, "₴"], - "UGX": [undefined, undefined, 0], - "USD": ["$"], - "UYI": [undefined, undefined, 0], - "UYU": [undefined, "$"], - "UYW": [undefined, undefined, 4], - "UZS": [undefined, undefined, 2], - "VEF": [undefined, "Bs", 2], - "VND": ["₫", undefined, 0], - "VUV": [undefined, undefined, 0], - "XAF": ["FCFA", undefined, 0], - "XCD": ["EC$", "$"], - "XOF": ["F CFA", undefined, 0], - "XPF": ["CFPF", undefined, 0], - "XXX": ["¤"], - "YER": [undefined, undefined, 0], - "ZAR": [undefined, "R"], - "ZMK": [undefined, undefined, 0], - "ZMW": [undefined, "ZK"], - "ZWD": [undefined, undefined, 0] -}; - -/** - * Format styles that can be used to represent numbers. - * @see {@link getLocaleNumberFormat} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -var NumberFormatStyle; -(function (NumberFormatStyle) { - NumberFormatStyle[NumberFormatStyle["Decimal"] = 0] = "Decimal"; - NumberFormatStyle[NumberFormatStyle["Percent"] = 1] = "Percent"; - NumberFormatStyle[NumberFormatStyle["Currency"] = 2] = "Currency"; - NumberFormatStyle[NumberFormatStyle["Scientific"] = 3] = "Scientific"; -})(NumberFormatStyle || (NumberFormatStyle = {})); -/** - * Plurality cases used for translating plurals to different languages. - * - * @see {@link NgPlural} - * @see {@link NgPluralCase} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -var Plural; -(function (Plural) { - Plural[Plural["Zero"] = 0] = "Zero"; - Plural[Plural["One"] = 1] = "One"; - Plural[Plural["Two"] = 2] = "Two"; - Plural[Plural["Few"] = 3] = "Few"; - Plural[Plural["Many"] = 4] = "Many"; - Plural[Plural["Other"] = 5] = "Other"; -})(Plural || (Plural = {})); -/** - * Context-dependant translation forms for strings. - * Typically the standalone version is for the nominative form of the word, - * and the format version is used for the genitive case. - * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles) - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -var FormStyle; -(function (FormStyle) { - FormStyle[FormStyle["Format"] = 0] = "Format"; - FormStyle[FormStyle["Standalone"] = 1] = "Standalone"; -})(FormStyle || (FormStyle = {})); -/** - * String widths available for translations. - * The specific character widths are locale-specific. - * Examples are given for the word "Sunday" in English. - * - * @publicApi - */ -var TranslationWidth; -(function (TranslationWidth) { - /** 1 character for `en-US`. For example: 'S' */ - TranslationWidth[TranslationWidth["Narrow"] = 0] = "Narrow"; - /** 3 characters for `en-US`. For example: 'Sun' */ - TranslationWidth[TranslationWidth["Abbreviated"] = 1] = "Abbreviated"; - /** Full length for `en-US`. For example: "Sunday" */ - TranslationWidth[TranslationWidth["Wide"] = 2] = "Wide"; - /** 2 characters for `en-US`, For example: "Su" */ - TranslationWidth[TranslationWidth["Short"] = 3] = "Short"; -})(TranslationWidth || (TranslationWidth = {})); -/** - * String widths available for date-time formats. - * The specific character widths are locale-specific. - * Examples are given for `en-US`. - * - * @see {@link getLocaleDateFormat} - * @see {@link getLocaleTimeFormat} - * @see {@link getLocaleDateTimeFormat} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * @publicApi - */ -var FormatWidth; -(function (FormatWidth) { - /** - * For `en-US`, 'M/d/yy, h:mm a'` - * (Example: `6/15/15, 9:03 AM`) - */ - FormatWidth[FormatWidth["Short"] = 0] = "Short"; - /** - * For `en-US`, `'MMM d, y, h:mm:ss a'` - * (Example: `Jun 15, 2015, 9:03:01 AM`) - */ - FormatWidth[FormatWidth["Medium"] = 1] = "Medium"; - /** - * For `en-US`, `'MMMM d, y, h:mm:ss a z'` - * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`) - */ - FormatWidth[FormatWidth["Long"] = 2] = "Long"; - /** - * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'` - * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`) - */ - FormatWidth[FormatWidth["Full"] = 3] = "Full"; -})(FormatWidth || (FormatWidth = {})); -/** - * Symbols that can be used to replace placeholders in number patterns. - * Examples are based on `en-US` values. - * - * @see {@link getLocaleNumberSymbol} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -var NumberSymbol; -(function (NumberSymbol) { - /** - * Decimal separator. - * For `en-US`, the dot character. - * Example: 2,345`.`67 - */ - NumberSymbol[NumberSymbol["Decimal"] = 0] = "Decimal"; - /** - * Grouping separator, typically for thousands. - * For `en-US`, the comma character. - * Example: 2`,`345.67 - */ - NumberSymbol[NumberSymbol["Group"] = 1] = "Group"; - /** - * List-item separator. - * Example: "one, two, and three" - */ - NumberSymbol[NumberSymbol["List"] = 2] = "List"; - /** - * Sign for percentage (out of 100). - * Example: 23.4% - */ - NumberSymbol[NumberSymbol["PercentSign"] = 3] = "PercentSign"; - /** - * Sign for positive numbers. - * Example: +23 - */ - NumberSymbol[NumberSymbol["PlusSign"] = 4] = "PlusSign"; - /** - * Sign for negative numbers. - * Example: -23 - */ - NumberSymbol[NumberSymbol["MinusSign"] = 5] = "MinusSign"; - /** - * Computer notation for exponential value (n times a power of 10). - * Example: 1.2E3 - */ - NumberSymbol[NumberSymbol["Exponential"] = 6] = "Exponential"; - /** - * Human-readable format of exponential. - * Example: 1.2x103 - */ - NumberSymbol[NumberSymbol["SuperscriptingExponent"] = 7] = "SuperscriptingExponent"; - /** - * Sign for permille (out of 1000). - * Example: 23.4‰ - */ - NumberSymbol[NumberSymbol["PerMille"] = 8] = "PerMille"; - /** - * Infinity, can be used with plus and minus. - * Example: ∞, +∞, -∞ - */ - NumberSymbol[NumberSymbol["Infinity"] = 9] = "Infinity"; - /** - * Not a number. - * Example: NaN - */ - NumberSymbol[NumberSymbol["NaN"] = 10] = "NaN"; - /** - * Symbol used between time units. - * Example: 10:52 - */ - NumberSymbol[NumberSymbol["TimeSeparator"] = 11] = "TimeSeparator"; - /** - * Decimal separator for currency values (fallback to `Decimal`). - * Example: $2,345.67 - */ - NumberSymbol[NumberSymbol["CurrencyDecimal"] = 12] = "CurrencyDecimal"; - /** - * Group separator for currency values (fallback to `Group`). - * Example: $2,345.67 - */ - NumberSymbol[NumberSymbol["CurrencyGroup"] = 13] = "CurrencyGroup"; -})(NumberSymbol || (NumberSymbol = {})); -/** - * The value for each day of the week, based on the `en-US` locale - * - * @publicApi - */ -var WeekDay; -(function (WeekDay) { - WeekDay[WeekDay["Sunday"] = 0] = "Sunday"; - WeekDay[WeekDay["Monday"] = 1] = "Monday"; - WeekDay[WeekDay["Tuesday"] = 2] = "Tuesday"; - WeekDay[WeekDay["Wednesday"] = 3] = "Wednesday"; - WeekDay[WeekDay["Thursday"] = 4] = "Thursday"; - WeekDay[WeekDay["Friday"] = 5] = "Friday"; - WeekDay[WeekDay["Saturday"] = 6] = "Saturday"; -})(WeekDay || (WeekDay = {})); -/** - * Retrieves the locale ID from the currently loaded locale. - * The loaded locale could be, for example, a global one rather than a regional one. - * @param locale A locale code, such as `fr-FR`. - * @returns The locale code. For example, `fr`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleId(locale) { - return (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale)[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].LocaleId]; -} -/** - * Retrieves day period strings for the given locale. - * - * @param locale A locale code for the locale format rules to use. - * @param formStyle The required grammatical form. - * @param width The required character width. - * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleDayPeriods(locale, formStyle, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const amPmData = [data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DayPeriodsFormat], data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DayPeriodsStandalone]]; - const amPm = getLastDefinedValue(amPmData, formStyle); - return getLastDefinedValue(amPm, width); -} -/** - * Retrieves days of the week for the given locale, using the Gregorian calendar. - * - * @param locale A locale code for the locale format rules to use. - * @param formStyle The required grammatical form. - * @param width The required character width. - * @returns An array of localized name strings. - * For example,`[Sunday, Monday, ... Saturday]` for `en-US`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleDayNames(locale, formStyle, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const daysData = [data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DaysFormat], data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DaysStandalone]]; - const days = getLastDefinedValue(daysData, formStyle); - return getLastDefinedValue(days, width); -} -/** - * Retrieves months of the year for the given locale, using the Gregorian calendar. - * - * @param locale A locale code for the locale format rules to use. - * @param formStyle The required grammatical form. - * @param width The required character width. - * @returns An array of localized name strings. - * For example, `[January, February, ...]` for `en-US`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleMonthNames(locale, formStyle, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const monthsData = [data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].MonthsFormat], data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].MonthsStandalone]]; - const months = getLastDefinedValue(monthsData, formStyle); - return getLastDefinedValue(months, width); -} -/** - * Retrieves Gregorian-calendar eras for the given locale. - * @param locale A locale code for the locale format rules to use. - * @param width The required character width. - - * @returns An array of localized era strings. - * For example, `[AD, BC]` for `en-US`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleEraNames(locale, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const erasData = data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].Eras]; - return getLastDefinedValue(erasData, width); -} -/** - * Retrieves the first day of the week for the given locale. - * - * @param locale A locale code for the locale format rules to use. - * @returns A day index number, using the 0-based week-day index for `en-US` - * (Sunday = 0, Monday = 1, ...). - * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleFirstDayOfWeek(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].FirstDayOfWeek]; -} -/** - * Range of week days that are considered the week-end for the given locale. - * - * @param locale A locale code for the locale format rules to use. - * @returns The range of day values, `[startDay, endDay]`. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleWeekEndRange(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].WeekendRange]; -} -/** - * Retrieves a localized date-value formatting string. - * - * @param locale A locale code for the locale format rules to use. - * @param width The format type. - * @returns The localized formatting string. - * @see {@link FormatWidth} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleDateFormat(locale, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return getLastDefinedValue(data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DateFormat], width); -} -/** - * Retrieves a localized time-value formatting string. - * - * @param locale A locale code for the locale format rules to use. - * @param width The format type. - * @returns The localized formatting string. - * @see {@link FormatWidth} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - - * @publicApi - */ -function getLocaleTimeFormat(locale, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return getLastDefinedValue(data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].TimeFormat], width); -} -/** - * Retrieves a localized date-time formatting string. - * - * @param locale A locale code for the locale format rules to use. - * @param width The format type. - * @returns The localized formatting string. - * @see {@link FormatWidth} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleDateTimeFormat(locale, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const dateTimeFormatData = data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].DateTimeFormat]; - return getLastDefinedValue(dateTimeFormatData, width); -} -/** - * Retrieves a localized number symbol that can be used to replace placeholders in number formats. - * @param locale The locale code. - * @param symbol The symbol to localize. - * @returns The character for the localized symbol. - * @see {@link NumberSymbol} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleNumberSymbol(locale, symbol) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - const res = data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].NumberSymbols][symbol]; - if (typeof res === 'undefined') { - if (symbol === NumberSymbol.CurrencyDecimal) { - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].NumberSymbols][NumberSymbol.Decimal]; - } else if (symbol === NumberSymbol.CurrencyGroup) { - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].NumberSymbols][NumberSymbol.Group]; - } - } - return res; -} -/** - * Retrieves a number format for a given locale. - * - * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00` - * when used to format the number 12345.678 could result in "12'345,678". That would happen if the - * grouping separator for your language is an apostrophe, and the decimal separator is a comma. - * - * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders - * that stand for the decimal separator, and so on, and are NOT real characters. - * You must NOT "translate" the placeholders. For example, don't change `.` to `,` even though in - * your language the decimal point is written with a comma. The symbols should be replaced by the - * local equivalents, using the appropriate `NumberSymbol` for your language. - * - * Here are the special characters used in number patterns: - * - * | Symbol | Meaning | - * |--------|---------| - * | . | Replaced automatically by the character used for the decimal point. | - * | , | Replaced by the "grouping" (thousands) separator. | - * | 0 | Replaced by a digit (or zero if there aren't enough digits). | - * | # | Replaced by a digit (or nothing if there aren't enough). | - * | ¤ | Replaced by a currency symbol, such as $ or USD. | - * | % | Marks a percent format. The % symbol may change position, but must be retained. | - * | E | Marks a scientific format. The E symbol may change position, but must be retained. | - * | ' | Special characters used as literal characters are quoted with ASCII single quotes. | - * - * @param locale A locale code for the locale format rules to use. - * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.) - * @returns The localized format string. - * @see {@link NumberFormatStyle} - * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns) - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleNumberFormat(locale, type) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].NumberFormats][type]; -} -/** - * Retrieves the symbol used to represent the currency for the main country - * corresponding to a given locale. For example, '$' for `en-US`. - * - * @param locale A locale code for the locale format rules to use. - * @returns The localized symbol character, - * or `null` if the main country cannot be determined. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleCurrencySymbol(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].CurrencySymbol] || null; -} -/** - * Retrieves the name of the currency for the main country corresponding - * to a given locale. For example, 'US Dollar' for `en-US`. - * @param locale A locale code for the locale format rules to use. - * @returns The currency name, - * or `null` if the main country cannot be determined. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleCurrencyName(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].CurrencyName] || null; -} -/** - * Retrieves the default currency code for the given locale. - * - * The default is defined as the first currency which is still in use. - * - * @param locale The code of the locale whose currency code we want. - * @returns The code of the default currency for the given locale. - * - * @publicApi - */ -function getLocaleCurrencyCode(locale) { - return (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵgetLocaleCurrencyCode"])(locale); -} -/** - * Retrieves the currency values for a given locale. - * @param locale A locale code for the locale format rules to use. - * @returns The currency values. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - */ -function getLocaleCurrencies(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].Currencies]; -} -/** - * @alias core/ɵgetLocalePluralCase - * @publicApi - */ -const getLocalePluralCase = _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵgetLocalePluralCase"]; -function checkFullData(data) { - if (!data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].ExtraData]) { - throw new Error(`Missing extra locale data for the locale "${data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`); - } -} -/** - * Retrieves locale-specific rules used to determine which day period to use - * when more than one period is defined for a locale. - * - * There is a rule for each defined day period. The - * first rule is applied to the first day period and so on. - * Fall back to AM/PM when no rules are available. - * - * A rule can specify a period as time range, or as a single time value. - * - * This functionality is only available when you have loaded the full locale data. - * See the ["I18n guide"](guide/i18n-common-format-data-locale). - * - * @param locale A locale code for the locale format rules to use. - * @returns The rules for the locale, a single time value or array of *from-time, to-time*, - * or null if no periods are available. - * - * @see {@link getLocaleExtraDayPeriods} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleExtraDayPeriodRules(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - checkFullData(data); - const rules = data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].ExtraData][2 /* ɵExtraLocaleDataIndex.ExtraDayPeriodsRules */] || []; - return rules.map(rule => { - if (typeof rule === 'string') { - return extractTime(rule); - } - return [extractTime(rule[0]), extractTime(rule[1])]; - }); -} -/** - * Retrieves locale-specific day periods, which indicate roughly how a day is broken up - * in different languages. - * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight. - * - * This functionality is only available when you have loaded the full locale data. - * See the ["I18n guide"](guide/i18n-common-format-data-locale). - * - * @param locale A locale code for the locale format rules to use. - * @param formStyle The required grammatical form. - * @param width The required character width. - * @returns The translated day-period strings. - * @see {@link getLocaleExtraDayPeriodRules} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLocaleExtraDayPeriods(locale, formStyle, width) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - checkFullData(data); - const dayPeriodsData = [data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].ExtraData][0 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */], data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].ExtraData][1 /* ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone */]]; - - const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || []; - return getLastDefinedValue(dayPeriods, width) || []; -} -/** - * Retrieves the writing direction of a specified locale - * @param locale A locale code for the locale format rules to use. - * @publicApi - * @returns 'rtl' or 'ltr' - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - */ -function getLocaleDirection(locale) { - const data = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵfindLocaleData"])(locale); - return data[_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵLocaleDataIndex"].Directionality]; -} -/** - * Retrieves the first value that is defined in an array, going backwards from an index position. - * - * To avoid repeating the same data (as when the "format" and "standalone" forms are the same) - * add the first value to the locale data arrays, and add other values only if they are different. - * - * @param data The data array to retrieve from. - * @param index A 0-based index into the array to start from. - * @returns The value immediately before the given index position. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getLastDefinedValue(data, index) { - for (let i = index; i > -1; i--) { - if (typeof data[i] !== 'undefined') { - return data[i]; - } - } - throw new Error('Locale data API: locale data undefined'); -} -/** - * Extracts the hours and minutes from a string like "15:45" - */ -function extractTime(time) { - const [h, m] = time.split(':'); - return { - hours: +h, - minutes: +m - }; -} -/** - * Retrieves the currency symbol for a given currency code. - * - * For example, for the default `en-US` locale, the code `USD` can - * be represented by the narrow symbol `$` or the wide symbol `US$`. - * - * @param code The currency code. - * @param format The format, `wide` or `narrow`. - * @param locale A locale code for the locale format rules to use. - * - * @returns The symbol, or the currency code if no symbol is available. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getCurrencySymbol(code, format, locale = 'en') { - const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || []; - const symbolNarrow = currency[1 /* ɵCurrencyIndex.SymbolNarrow */]; - if (format === 'narrow' && typeof symbolNarrow === 'string') { - return symbolNarrow; - } - return currency[0 /* ɵCurrencyIndex.Symbol */] || code; -} -// Most currencies have cents, that's why the default is 2 -const DEFAULT_NB_OF_CURRENCY_DIGITS = 2; -/** - * Reports the number of decimal digits for a given currency. - * The value depends upon the presence of cents in that particular currency. - * - * @param code The currency code. - * @returns The number of decimal digits, typically 0 or 2. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function getNumberOfCurrencyDigits(code) { - let digits; - const currency = CURRENCIES_EN[code]; - if (currency) { - digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */]; - } - - return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS; -} -const ISO8601_DATE_REGEX = /^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; -// 1 2 3 4 5 6 7 8 9 10 11 -const NAMED_FORMATS = {}; -const DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/; -var ZoneWidth; -(function (ZoneWidth) { - ZoneWidth[ZoneWidth["Short"] = 0] = "Short"; - ZoneWidth[ZoneWidth["ShortGMT"] = 1] = "ShortGMT"; - ZoneWidth[ZoneWidth["Long"] = 2] = "Long"; - ZoneWidth[ZoneWidth["Extended"] = 3] = "Extended"; -})(ZoneWidth || (ZoneWidth = {})); -var DateType; -(function (DateType) { - DateType[DateType["FullYear"] = 0] = "FullYear"; - DateType[DateType["Month"] = 1] = "Month"; - DateType[DateType["Date"] = 2] = "Date"; - DateType[DateType["Hours"] = 3] = "Hours"; - DateType[DateType["Minutes"] = 4] = "Minutes"; - DateType[DateType["Seconds"] = 5] = "Seconds"; - DateType[DateType["FractionalSeconds"] = 6] = "FractionalSeconds"; - DateType[DateType["Day"] = 7] = "Day"; -})(DateType || (DateType = {})); -var TranslationType; -(function (TranslationType) { - TranslationType[TranslationType["DayPeriods"] = 0] = "DayPeriods"; - TranslationType[TranslationType["Days"] = 1] = "Days"; - TranslationType[TranslationType["Months"] = 2] = "Months"; - TranslationType[TranslationType["Eras"] = 3] = "Eras"; -})(TranslationType || (TranslationType = {})); -/** - * @ngModule CommonModule - * @description - * - * Formats a date according to locale rules. - * - * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch) - * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime). - * @param format The date-time components to include. See `DatePipe` for details. - * @param locale A locale code for the locale format rules to use. - * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`), - * or a standard UTC/GMT or continental US time zone abbreviation. - * If not specified, uses host system settings. - * - * @returns The formatted date string. - * - * @see {@link DatePipe} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function formatDate(value, format, locale, timezone) { - let date = toDate(value); - const namedFormat = getNamedFormat(locale, format); - format = namedFormat || format; - let parts = []; - let match; - while (format) { - match = DATE_FORMATS_SPLIT.exec(format); - if (match) { - parts = parts.concat(match.slice(1)); - const part = parts.pop(); - if (!part) { - break; - } - format = part; - } else { - parts.push(format); - break; - } - } - let dateTimezoneOffset = date.getTimezoneOffset(); - if (timezone) { - dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); - date = convertTimezoneToLocal(date, timezone, true); - } - let text = ''; - parts.forEach(value => { - const dateFormatter = getDateFormatter(value); - text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) : value === '\'\'' ? '\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\''); - }); - return text; -} -/** - * Create a new Date object with the given date value, and the time set to midnight. - * - * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999. - * See: https://github.com/angular/angular/issues/40377 - * - * Note that this function returns a Date object whose time is midnight in the current locale's - * timezone. In the future we might want to change this to be midnight in UTC, but this would be a - * considerable breaking change. - */ -function createDate(year, month, date) { - // The `newDate` is set to midnight (UTC) on January 1st 1970. - // - In PST this will be December 31st 1969 at 4pm. - // - In GMT this will be January 1st 1970 at 1am. - // Note that they even have different years, dates and months! - const newDate = new Date(0); - // `setFullYear()` allows years like 0001 to be set correctly. This function does not - // change the internal time of the date. - // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019). - // - In PST this will now be September 20, 2019 at 4pm - // - In GMT this will now be September 20, 2019 at 1am - newDate.setFullYear(year, month, date); - // We want the final date to be at local midnight, so we reset the time. - // - In PST this will now be September 20, 2019 at 12am - // - In GMT this will now be September 20, 2019 at 12am - newDate.setHours(0, 0, 0); - return newDate; -} -function getNamedFormat(locale, format) { - const localeId = getLocaleId(locale); - NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {}; - if (NAMED_FORMATS[localeId][format]) { - return NAMED_FORMATS[localeId][format]; - } - let formatValue = ''; - switch (format) { - case 'shortDate': - formatValue = getLocaleDateFormat(locale, FormatWidth.Short); - break; - case 'mediumDate': - formatValue = getLocaleDateFormat(locale, FormatWidth.Medium); - break; - case 'longDate': - formatValue = getLocaleDateFormat(locale, FormatWidth.Long); - break; - case 'fullDate': - formatValue = getLocaleDateFormat(locale, FormatWidth.Full); - break; - case 'shortTime': - formatValue = getLocaleTimeFormat(locale, FormatWidth.Short); - break; - case 'mediumTime': - formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium); - break; - case 'longTime': - formatValue = getLocaleTimeFormat(locale, FormatWidth.Long); - break; - case 'fullTime': - formatValue = getLocaleTimeFormat(locale, FormatWidth.Full); - break; - case 'short': - const shortTime = getNamedFormat(locale, 'shortTime'); - const shortDate = getNamedFormat(locale, 'shortDate'); - formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]); - break; - case 'medium': - const mediumTime = getNamedFormat(locale, 'mediumTime'); - const mediumDate = getNamedFormat(locale, 'mediumDate'); - formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]); - break; - case 'long': - const longTime = getNamedFormat(locale, 'longTime'); - const longDate = getNamedFormat(locale, 'longDate'); - formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]); - break; - case 'full': - const fullTime = getNamedFormat(locale, 'fullTime'); - const fullDate = getNamedFormat(locale, 'fullDate'); - formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]); - break; - } - if (formatValue) { - NAMED_FORMATS[localeId][format] = formatValue; - } - return formatValue; -} -function formatDateTime(str, opt_values) { - if (opt_values) { - str = str.replace(/\{([^}]+)}/g, function (match, key) { - return opt_values != null && key in opt_values ? opt_values[key] : match; - }); - } - return str; -} -function padNumber(num, digits, minusSign = '-', trim, negWrap) { - let neg = ''; - if (num < 0 || negWrap && num <= 0) { - if (negWrap) { - num = -num + 1; - } else { - num = -num; - neg = minusSign; - } - } - let strNum = String(num); - while (strNum.length < digits) { - strNum = '0' + strNum; - } - if (trim) { - strNum = strNum.slice(strNum.length - digits); - } - return neg + strNum; -} -function formatFractionalSeconds(milliseconds, digits) { - const strMs = padNumber(milliseconds, 3); - return strMs.substring(0, digits); -} -/** - * Returns a date formatter that transforms a date into its locale digit representation - */ -function dateGetter(name, size, offset = 0, trim = false, negWrap = false) { - return function (date, locale) { - let part = getDatePart(name, date); - if (offset > 0 || part > -offset) { - part += offset; - } - if (name === DateType.Hours) { - if (part === 0 && offset === -12) { - part = 12; - } - } else if (name === DateType.FractionalSeconds) { - return formatFractionalSeconds(part, size); - } - const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign); - return padNumber(part, size, localeMinus, trim, negWrap); - }; -} -function getDatePart(part, date) { - switch (part) { - case DateType.FullYear: - return date.getFullYear(); - case DateType.Month: - return date.getMonth(); - case DateType.Date: - return date.getDate(); - case DateType.Hours: - return date.getHours(); - case DateType.Minutes: - return date.getMinutes(); - case DateType.Seconds: - return date.getSeconds(); - case DateType.FractionalSeconds: - return date.getMilliseconds(); - case DateType.Day: - return date.getDay(); - default: - throw new Error(`Unknown DateType value "${part}".`); - } -} -/** - * Returns a date formatter that transforms a date into its locale string representation - */ -function dateStrGetter(name, width, form = FormStyle.Format, extended = false) { - return function (date, locale) { - return getDateTranslation(date, locale, name, width, form, extended); - }; -} -/** - * Returns the locale translation of a date for a given form, type and width - */ -function getDateTranslation(date, locale, name, width, form, extended) { - switch (name) { - case TranslationType.Months: - return getLocaleMonthNames(locale, form, width)[date.getMonth()]; - case TranslationType.Days: - return getLocaleDayNames(locale, form, width)[date.getDay()]; - case TranslationType.DayPeriods: - const currentHours = date.getHours(); - const currentMinutes = date.getMinutes(); - if (extended) { - const rules = getLocaleExtraDayPeriodRules(locale); - const dayPeriods = getLocaleExtraDayPeriods(locale, form, width); - const index = rules.findIndex(rule => { - if (Array.isArray(rule)) { - // morning, afternoon, evening, night - const [from, to] = rule; - const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes; - const beforeTo = currentHours < to.hours || currentHours === to.hours && currentMinutes < to.minutes; - // We must account for normal rules that span a period during the day (e.g. 6am-9am) - // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g. - // 10pm - 5am) where `from` is greater (later!) than `to`. - // - // In the first case the current time must be BOTH after `from` AND before `to` - // (e.g. 8am is after 6am AND before 10am). - // - // In the second case the current time must be EITHER after `from` OR before `to` - // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is - // after 10pm). - if (from.hours < to.hours) { - if (afterFrom && beforeTo) { - return true; - } - } else if (afterFrom || beforeTo) { - return true; - } - } else { - // noon or midnight - if (rule.hours === currentHours && rule.minutes === currentMinutes) { - return true; - } - } - return false; - }); - if (index !== -1) { - return dayPeriods[index]; - } - } - // if no rules for the day periods, we use am/pm by default - return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1]; - case TranslationType.Eras: - return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1]; - default: - // This default case is not needed by TypeScript compiler, as the switch is exhaustive. - // However Closure Compiler does not understand that and reports an error in typed mode. - // The `throw new Error` below works around the problem, and the unexpected: never variable - // makes sure tsc still checks this code is unreachable. - const unexpected = name; - throw new Error(`unexpected translation type ${unexpected}`); - } -} -/** - * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or - * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30, - * extended = +04:30) - */ -function timeZoneGetter(width) { - return function (date, locale, offset) { - const zone = -1 * offset; - const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign); - const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60); - switch (width) { - case ZoneWidth.Short: - return (zone >= 0 ? '+' : '') + padNumber(hours, 2, minusSign) + padNumber(Math.abs(zone % 60), 2, minusSign); - case ZoneWidth.ShortGMT: - return 'GMT' + (zone >= 0 ? '+' : '') + padNumber(hours, 1, minusSign); - case ZoneWidth.Long: - return 'GMT' + (zone >= 0 ? '+' : '') + padNumber(hours, 2, minusSign) + ':' + padNumber(Math.abs(zone % 60), 2, minusSign); - case ZoneWidth.Extended: - if (offset === 0) { - return 'Z'; - } else { - return (zone >= 0 ? '+' : '') + padNumber(hours, 2, minusSign) + ':' + padNumber(Math.abs(zone % 60), 2, minusSign); - } - default: - throw new Error(`Unknown zone width "${width}"`); - } - }; -} -const JANUARY = 0; -const THURSDAY = 4; -function getFirstThursdayOfYear(year) { - const firstDayOfYear = createDate(year, JANUARY, 1).getDay(); - return createDate(year, 0, 1 + (firstDayOfYear <= THURSDAY ? THURSDAY : THURSDAY + 7) - firstDayOfYear); -} -function getThursdayThisWeek(datetime) { - return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay())); -} -function weekGetter(size, monthBased = false) { - return function (date, locale) { - let result; - if (monthBased) { - const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1; - const today = date.getDate(); - result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7); - } else { - const thisThurs = getThursdayThisWeek(date); - // Some days of a year are part of next year according to ISO 8601. - // Compute the firstThurs from the year of this week's Thursday - const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear()); - const diff = thisThurs.getTime() - firstThurs.getTime(); - result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week - } - - return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign)); - }; -} -/** - * Returns a date formatter that provides the week-numbering year for the input date. - */ -function weekNumberingYearGetter(size, trim = false) { - return function (date, locale) { - const thisThurs = getThursdayThisWeek(date); - const weekNumberingYear = thisThurs.getFullYear(); - return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim); - }; -} -const DATE_FORMATS = {}; -// Based on CLDR formats: -// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table -// See also explanations: http://cldr.unicode.org/translation/date-time -// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x -function getDateFormatter(format) { - if (DATE_FORMATS[format]) { - return DATE_FORMATS[format]; - } - let formatter; - switch (format) { - // Era name (AD/BC) - case 'G': - case 'GG': - case 'GGG': - formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated); - break; - case 'GGGG': - formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide); - break; - case 'GGGGG': - formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow); - break; - // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199) - case 'y': - formatter = dateGetter(DateType.FullYear, 1, 0, false, true); - break; - // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) - case 'yy': - formatter = dateGetter(DateType.FullYear, 2, 0, true, true); - break; - // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10) - case 'yyy': - formatter = dateGetter(DateType.FullYear, 3, 0, false, true); - break; - // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010) - case 'yyyy': - formatter = dateGetter(DateType.FullYear, 4, 0, false, true); - break; - // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199) - case 'Y': - formatter = weekNumberingYearGetter(1); - break; - // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD - // 2010 => 10) - case 'YY': - formatter = weekNumberingYearGetter(2, true); - break; - // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD - // 2010 => 2010) - case 'YYY': - formatter = weekNumberingYearGetter(3); - break; - // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010) - case 'YYYY': - formatter = weekNumberingYearGetter(4); - break; - // Month of the year (1-12), numeric - case 'M': - case 'L': - formatter = dateGetter(DateType.Month, 1, 1); - break; - case 'MM': - case 'LL': - formatter = dateGetter(DateType.Month, 2, 1); - break; - // Month of the year (January, ...), string, format - case 'MMM': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated); - break; - case 'MMMM': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide); - break; - case 'MMMMM': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow); - break; - // Month of the year (January, ...), string, standalone - case 'LLL': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone); - break; - case 'LLLL': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone); - break; - case 'LLLLL': - formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone); - break; - // Week of the year (1, ... 52) - case 'w': - formatter = weekGetter(1); - break; - case 'ww': - formatter = weekGetter(2); - break; - // Week of the month (1, ...) - case 'W': - formatter = weekGetter(1, true); - break; - // Day of the month (1-31) - case 'd': - formatter = dateGetter(DateType.Date, 1); - break; - case 'dd': - formatter = dateGetter(DateType.Date, 2); - break; - // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo) - case 'c': - case 'cc': - formatter = dateGetter(DateType.Day, 1); - break; - case 'ccc': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone); - break; - case 'cccc': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone); - break; - case 'ccccc': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone); - break; - case 'cccccc': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone); - break; - // Day of the Week - case 'E': - case 'EE': - case 'EEE': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated); - break; - case 'EEEE': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide); - break; - case 'EEEEE': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow); - break; - case 'EEEEEE': - formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short); - break; - // Generic period of the day (am-pm) - case 'a': - case 'aa': - case 'aaa': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated); - break; - case 'aaaa': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide); - break; - case 'aaaaa': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow); - break; - // Extended period of the day (midnight, at night, ...), standalone - case 'b': - case 'bb': - case 'bbb': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true); - break; - case 'bbbb': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true); - break; - case 'bbbbb': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true); - break; - // Extended period of the day (midnight, night, ...), standalone - case 'B': - case 'BB': - case 'BBB': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true); - break; - case 'BBBB': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true); - break; - case 'BBBBB': - formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true); - break; - // Hour in AM/PM, (1-12) - case 'h': - formatter = dateGetter(DateType.Hours, 1, -12); - break; - case 'hh': - formatter = dateGetter(DateType.Hours, 2, -12); - break; - // Hour of the day (0-23) - case 'H': - formatter = dateGetter(DateType.Hours, 1); - break; - // Hour in day, padded (00-23) - case 'HH': - formatter = dateGetter(DateType.Hours, 2); - break; - // Minute of the hour (0-59) - case 'm': - formatter = dateGetter(DateType.Minutes, 1); - break; - case 'mm': - formatter = dateGetter(DateType.Minutes, 2); - break; - // Second of the minute (0-59) - case 's': - formatter = dateGetter(DateType.Seconds, 1); - break; - case 'ss': - formatter = dateGetter(DateType.Seconds, 2); - break; - // Fractional second - case 'S': - formatter = dateGetter(DateType.FractionalSeconds, 1); - break; - case 'SS': - formatter = dateGetter(DateType.FractionalSeconds, 2); - break; - case 'SSS': - formatter = dateGetter(DateType.FractionalSeconds, 3); - break; - // Timezone ISO8601 short format (-0430) - case 'Z': - case 'ZZ': - case 'ZZZ': - formatter = timeZoneGetter(ZoneWidth.Short); - break; - // Timezone ISO8601 extended format (-04:30) - case 'ZZZZZ': - formatter = timeZoneGetter(ZoneWidth.Extended); - break; - // Timezone GMT short format (GMT+4) - case 'O': - case 'OO': - case 'OOO': - // Should be location, but fallback to format O instead because we don't have the data yet - case 'z': - case 'zz': - case 'zzz': - formatter = timeZoneGetter(ZoneWidth.ShortGMT); - break; - // Timezone GMT long format (GMT+0430) - case 'OOOO': - case 'ZZZZ': - // Should be location, but fallback to format O instead because we don't have the data yet - case 'zzzz': - formatter = timeZoneGetter(ZoneWidth.Long); - break; - default: - return null; - } - DATE_FORMATS[format] = formatter; - return formatter; -} -function timezoneToOffset(timezone, fallback) { - // Support: IE 11 only, Edge 13-15+ - // IE/Edge do not "understand" colon (`:`) in timezone - timezone = timezone.replace(/:/g, ''); - const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000; - return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; -} -function addDateMinutes(date, minutes) { - date = new Date(date.getTime()); - date.setMinutes(date.getMinutes() + minutes); - return date; -} -function convertTimezoneToLocal(date, timezone, reverse) { - const reverseValue = reverse ? -1 : 1; - const dateTimezoneOffset = date.getTimezoneOffset(); - const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); - return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset)); -} -/** - * Converts a value to date. - * - * Supported input formats: - * - `Date` - * - number: timestamp - * - string: numeric (e.g. "1234"), ISO and date strings in a format supported by - * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse). - * Note: ISO strings without time return a date without timeoffset. - * - * Throws if unable to convert to a date. - */ -function toDate(value) { - if (isDate(value)) { - return value; - } - if (typeof value === 'number' && !isNaN(value)) { - return new Date(value); - } - if (typeof value === 'string') { - value = value.trim(); - if (/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(value)) { - /* For ISO Strings without time the day, month and year must be extracted from the ISO String - before Date creation to avoid time offset and errors in the new Date. - If we only replace '-' with ',' in the ISO String ("2015,01,01"), and try to create a new - date, some browsers (e.g. IE 9) will throw an invalid Date error. - If we leave the '-' ("2015-01-01") and try to create a new Date("2015-01-01") the timeoffset - is applied. - Note: ISO months are 0 for January, 1 for February, ... */ - const [y, m = 1, d = 1] = value.split('-').map(val => +val); - return createDate(y, m - 1, d); - } - const parsedNb = parseFloat(value); - // any string that only contains numbers, like "1234" but not like "1234hello" - if (!isNaN(value - parsedNb)) { - return new Date(parsedNb); - } - let match; - if (match = value.match(ISO8601_DATE_REGEX)) { - return isoStringToDate(match); - } - } - const date = new Date(value); - if (!isDate(date)) { - throw new Error(`Unable to convert "${value}" into a date`); - } - return date; -} -/** - * Converts a date in ISO8601 to a Date. - * Used instead of `Date.parse` because of browser discrepancies. - */ -function isoStringToDate(match) { - const date = new Date(0); - let tzHour = 0; - let tzMin = 0; - // match[8] means that the string contains "Z" (UTC) or a timezone like "+01:00" or "+0100" - const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear; - const timeSetter = match[8] ? date.setUTCHours : date.setHours; - // if there is a timezone defined like "+01:00" or "+0100" - if (match[9]) { - tzHour = Number(match[9] + match[10]); - tzMin = Number(match[9] + match[11]); - } - dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3])); - const h = Number(match[4] || 0) - tzHour; - const m = Number(match[5] || 0) - tzMin; - const s = Number(match[6] || 0); - // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11) - // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms` - // becomes `999ms`. - const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000); - timeSetter.call(date, h, m, s, ms); - return date; -} -function isDate(value) { - return value instanceof Date && !isNaN(value.valueOf()); -} -const NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/; -const MAX_DIGITS = 22; -const DECIMAL_SEP = '.'; -const ZERO_CHAR = '0'; -const PATTERN_SEP = ';'; -const GROUP_SEP = ','; -const DIGIT_CHAR = '#'; -const CURRENCY_CHAR = '¤'; -const PERCENT_CHAR = '%'; -/** - * Transforms a number to a locale string based on a style and a format. - */ -function formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) { - let formattedText = ''; - let isZero = false; - if (!isFinite(value)) { - formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity); - } else { - let parsedNumber = parseNumber(value); - if (isPercent) { - parsedNumber = toPercent(parsedNumber); - } - let minInt = pattern.minInt; - let minFraction = pattern.minFrac; - let maxFraction = pattern.maxFrac; - if (digitsInfo) { - const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP); - if (parts === null) { - throw new Error(`${digitsInfo} is not a valid digit info`); - } - const minIntPart = parts[1]; - const minFractionPart = parts[3]; - const maxFractionPart = parts[5]; - if (minIntPart != null) { - minInt = parseIntAutoRadix(minIntPart); - } - if (minFractionPart != null) { - minFraction = parseIntAutoRadix(minFractionPart); - } - if (maxFractionPart != null) { - maxFraction = parseIntAutoRadix(maxFractionPart); - } else if (minFractionPart != null && minFraction > maxFraction) { - maxFraction = minFraction; - } - } - roundNumber(parsedNumber, minFraction, maxFraction); - let digits = parsedNumber.digits; - let integerLen = parsedNumber.integerLen; - const exponent = parsedNumber.exponent; - let decimals = []; - isZero = digits.every(d => !d); - // pad zeros for small numbers - for (; integerLen < minInt; integerLen++) { - digits.unshift(0); - } - // pad zeros for small numbers - for (; integerLen < 0; integerLen++) { - digits.unshift(0); - } - // extract decimals digits - if (integerLen > 0) { - decimals = digits.splice(integerLen, digits.length); - } else { - decimals = digits; - digits = [0]; - } - // format the integer digits with grouping separators - const groups = []; - if (digits.length >= pattern.lgSize) { - groups.unshift(digits.splice(-pattern.lgSize, digits.length).join('')); - } - while (digits.length > pattern.gSize) { - groups.unshift(digits.splice(-pattern.gSize, digits.length).join('')); - } - if (digits.length) { - groups.unshift(digits.join('')); - } - formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol)); - // append the decimal digits - if (decimals.length) { - formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join(''); - } - if (exponent) { - formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent; - } - } - if (value < 0 && !isZero) { - formattedText = pattern.negPre + formattedText + pattern.negSuf; - } else { - formattedText = pattern.posPre + formattedText + pattern.posSuf; - } - return formattedText; -} -/** - * @ngModule CommonModule - * @description - * - * Formats a number as currency using locale rules. - * - * @param value The number to format. - * @param locale A locale code for the locale format rules to use. - * @param currency A string containing the currency symbol or its name, - * such as "$" or "Canadian Dollar". Used in output string, but does not affect the operation - * of the function. - * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) - * currency code, such as `USD` for the US dollar and `EUR` for the euro. - * Used to determine the number of digits in the decimal part. - * @param digitsInfo Decimal representation options, specified by a string in the following format: - * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details. - * - * @returns The formatted currency value. - * - * @see {@link formatNumber} - * @see {@link DecimalPipe} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function formatCurrency(value, locale, currency, currencyCode, digitsInfo) { - const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency); - const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign)); - pattern.minFrac = getNumberOfCurrencyDigits(currencyCode); - pattern.maxFrac = pattern.minFrac; - const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo); - return res.replace(CURRENCY_CHAR, currency) - // if we have 2 time the currency character, the second one is ignored - .replace(CURRENCY_CHAR, '') - // If there is a spacing between currency character and the value and - // the currency character is suppressed by passing an empty string, the - // spacing character would remain as part of the string. Then we - // should remove it. - .trim(); -} -/** - * @ngModule CommonModule - * @description - * - * Formats a number as a percentage according to locale rules. - * - * @param value The number to format. - * @param locale A locale code for the locale format rules to use. - * @param digitsInfo Decimal representation options, specified by a string in the following format: - * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details. - * - * @returns The formatted percentage value. - * - * @see {@link formatNumber} - * @see {@link DecimalPipe} - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * @publicApi - * - */ -function formatPercent(value, locale, digitsInfo) { - const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent); - const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign)); - const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true); - return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign)); -} -/** - * @ngModule CommonModule - * @description - * - * Formats a number as text, with group sizing, separator, and other - * parameters based on the locale. - * - * @param value The number to format. - * @param locale A locale code for the locale format rules to use. - * @param digitsInfo Decimal representation options, specified by a string in the following format: - * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details. - * - * @returns The formatted text string. - * @see [Internationalization (i18n) Guide](/guide/i18n-overview) - * - * @publicApi - */ -function formatNumber(value, locale, digitsInfo) { - const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal); - const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign)); - return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo); -} -function parseNumberFormat(format, minusSign = '-') { - const p = { - minInt: 1, - minFrac: 0, - maxFrac: 0, - posPre: '', - posSuf: '', - negPre: '', - negSuf: '', - gSize: 0, - lgSize: 0 - }; - const patternParts = format.split(PATTERN_SEP); - const positive = patternParts[0]; - const negative = patternParts[1]; - const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ? positive.split(DECIMAL_SEP) : [positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1), positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)], - integer = positiveParts[0], - fraction = positiveParts[1] || ''; - p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR)); - for (let i = 0; i < fraction.length; i++) { - const ch = fraction.charAt(i); - if (ch === ZERO_CHAR) { - p.minFrac = p.maxFrac = i + 1; - } else if (ch === DIGIT_CHAR) { - p.maxFrac = i + 1; - } else { - p.posSuf += ch; - } - } - const groups = integer.split(GROUP_SEP); - p.gSize = groups[1] ? groups[1].length : 0; - p.lgSize = groups[2] || groups[1] ? (groups[2] || groups[1]).length : 0; - if (negative) { - const trunkLen = positive.length - p.posPre.length - p.posSuf.length, - pos = negative.indexOf(DIGIT_CHAR); - p.negPre = negative.substring(0, pos).replace(/'/g, ''); - p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, ''); - } else { - p.negPre = minusSign + p.posPre; - p.negSuf = p.posSuf; - } - return p; -} -// Transforms a parsed number into a percentage by multiplying it by 100 -function toPercent(parsedNumber) { - // if the number is 0, don't do anything - if (parsedNumber.digits[0] === 0) { - return parsedNumber; - } - // Getting the current number of decimals - const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen; - if (parsedNumber.exponent) { - parsedNumber.exponent += 2; - } else { - if (fractionLen === 0) { - parsedNumber.digits.push(0, 0); - } else if (fractionLen === 1) { - parsedNumber.digits.push(0); - } - parsedNumber.integerLen += 2; - } - return parsedNumber; -} -/** - * Parses a number. - * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/ - */ -function parseNumber(num) { - let numStr = Math.abs(num) + ''; - let exponent = 0, - digits, - integerLen; - let i, j, zeros; - // Decimal point? - if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) { - numStr = numStr.replace(DECIMAL_SEP, ''); - } - // Exponential form? - if ((i = numStr.search(/e/i)) > 0) { - // Work out the exponent. - if (integerLen < 0) integerLen = i; - integerLen += +numStr.slice(i + 1); - numStr = numStr.substring(0, i); - } else if (integerLen < 0) { - // There was no decimal point or exponent so it is an integer. - integerLen = numStr.length; - } - // Count the number of leading zeros. - for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) {/* empty */ - } - if (i === (zeros = numStr.length)) { - // The digits are all zero. - digits = [0]; - integerLen = 1; - } else { - // Count the number of trailing zeros - zeros--; - while (numStr.charAt(zeros) === ZERO_CHAR) zeros--; - // Trailing zeros are insignificant so ignore them - integerLen -= i; - digits = []; - // Convert string to array of digits without leading/trailing zeros. - for (j = 0; i <= zeros; i++, j++) { - digits[j] = Number(numStr.charAt(i)); - } - } - // If the number overflows the maximum allowed digits then use an exponent. - if (integerLen > MAX_DIGITS) { - digits = digits.splice(0, MAX_DIGITS - 1); - exponent = integerLen - 1; - integerLen = 1; - } - return { - digits, - exponent, - integerLen - }; -} -/** - * Round the parsed number to the specified number of decimal places - * This function changes the parsedNumber in-place - */ -function roundNumber(parsedNumber, minFrac, maxFrac) { - if (minFrac > maxFrac) { - throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`); - } - let digits = parsedNumber.digits; - let fractionLen = digits.length - parsedNumber.integerLen; - const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac); - // The index of the digit to where rounding is to occur - let roundAt = fractionSize + parsedNumber.integerLen; - let digit = digits[roundAt]; - if (roundAt > 0) { - // Drop fractional digits beyond `roundAt` - digits.splice(Math.max(parsedNumber.integerLen, roundAt)); - // Set non-fractional digits beyond `roundAt` to 0 - for (let j = roundAt; j < digits.length; j++) { - digits[j] = 0; - } - } else { - // We rounded to zero so reset the parsedNumber - fractionLen = Math.max(0, fractionLen); - parsedNumber.integerLen = 1; - digits.length = Math.max(1, roundAt = fractionSize + 1); - digits[0] = 0; - for (let i = 1; i < roundAt; i++) digits[i] = 0; - } - if (digit >= 5) { - if (roundAt - 1 < 0) { - for (let k = 0; k > roundAt; k--) { - digits.unshift(0); - parsedNumber.integerLen++; - } - digits.unshift(1); - parsedNumber.integerLen++; - } else { - digits[roundAt - 1]++; - } - } - // Pad out with zeros to get the required fraction length - for (; fractionLen < Math.max(0, fractionSize); fractionLen++) digits.push(0); - let dropTrailingZeros = fractionSize !== 0; - // Minimal length = nb of decimals required + current nb of integers - // Any number besides that is optional and can be removed if it's a trailing 0 - const minLen = minFrac + parsedNumber.integerLen; - // Do any carrying, e.g. a digit was rounded up to 10 - const carry = digits.reduceRight(function (carry, d, i, digits) { - d = d + carry; - digits[i] = d < 10 ? d : d - 10; // d % 10 - if (dropTrailingZeros) { - // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52) - if (digits[i] === 0 && i >= minLen) { - digits.pop(); - } else { - dropTrailingZeros = false; - } - } - return d >= 10 ? 1 : 0; // Math.floor(d / 10); - }, 0); - if (carry) { - digits.unshift(carry); - parsedNumber.integerLen++; - } -} -function parseIntAutoRadix(text) { - const result = parseInt(text); - if (isNaN(result)) { - throw new Error('Invalid integer literal when parsing ' + text); - } - return result; -} - -/** - * @publicApi - */ -class NgLocalization {} -NgLocalization.ɵfac = function NgLocalization_Factory(t) { - return new (t || NgLocalization)(); -}; -NgLocalization.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: NgLocalization, - factory: function NgLocalization_Factory(t) { - let r = null; - if (t) { - r = new t(); - } else { - r = (locale => new NgLocaleLocalization(locale))(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID)); - } - return r; - }, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgLocalization, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root', - useFactory: locale => new NgLocaleLocalization(locale), - deps: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }], null, null); -})(); -/** - * Returns the plural category for a given value. - * - "=value" when the case exists, - * - the plural category otherwise - */ -function getPluralCategory(value, cases, ngLocalization, locale) { - let key = `=${value}`; - if (cases.indexOf(key) > -1) { - return key; - } - key = ngLocalization.getPluralCategory(value, locale); - if (cases.indexOf(key) > -1) { - return key; - } - if (cases.indexOf('other') > -1) { - return 'other'; - } - throw new Error(`No plural message found for value "${value}"`); -} -/** - * Returns the plural case based on the locale - * - * @publicApi - */ -class NgLocaleLocalization extends NgLocalization { - constructor(locale) { - super(); - this.locale = locale; - } - getPluralCategory(value, locale) { - const plural = getLocalePluralCase(locale || this.locale)(value); - switch (plural) { - case Plural.Zero: - return 'zero'; - case Plural.One: - return 'one'; - case Plural.Two: - return 'two'; - case Plural.Few: - return 'few'; - case Plural.Many: - return 'many'; - default: - return 'other'; - } - } -} -NgLocaleLocalization.ɵfac = function NgLocaleLocalization_Factory(t) { - return new (t || NgLocaleLocalization)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID)); -}; -NgLocaleLocalization.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: NgLocaleLocalization, - factory: NgLocaleLocalization.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgLocaleLocalization, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }]; - }, null); -})(); - -/** - * Register global data to be used internally by Angular. See the - * ["I18n guide"](guide/i18n-common-format-data-locale) to know how to import additional locale - * data. - * - * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1 - * - * @publicApi - */ -function registerLocaleData(data, localeId, extraData) { - return (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵregisterLocaleData"])(data, localeId, extraData); -} -function parseCookieValue(cookieStr, name) { - name = encodeURIComponent(name); - for (const cookie of cookieStr.split(';')) { - const eqIndex = cookie.indexOf('='); - const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)]; - if (cookieName.trim() === name) { - return decodeURIComponent(cookieValue); - } - } - return null; -} -const WS_REGEXP = /\s+/; -const EMPTY_ARRAY = []; -/** - * @ngModule CommonModule - * - * @usageNotes - * ``` - * ... - * - * ... - * - * ... - * - * ... - * - * ... - * ``` - * - * @description - * - * Adds and removes CSS classes on an HTML element. - * - * The CSS classes are updated as follows, depending on the type of the expression evaluation: - * - `string` - the CSS classes listed in the string (space delimited) are added, - * - `Array` - the CSS classes declared as Array elements are added, - * - `Object` - keys are CSS classes that get added when the expression given in the value - * evaluates to a truthy value, otherwise they are removed. - * - * @publicApi - */ -class NgClass { - constructor( - // leaving references to differs in place since flex layout is extending NgClass... - _iterableDiffers, _keyValueDiffers, _ngEl, _renderer) { - this._iterableDiffers = _iterableDiffers; - this._keyValueDiffers = _keyValueDiffers; - this._ngEl = _ngEl; - this._renderer = _renderer; - this.initialClasses = EMPTY_ARRAY; - this.stateMap = new Map(); - } - set klass(value) { - this.initialClasses = value != null ? value.trim().split(WS_REGEXP) : EMPTY_ARRAY; - } - set ngClass(value) { - this.rawClass = typeof value === 'string' ? value.trim().split(WS_REGEXP) : value; - } - /* - The NgClass directive uses the custom change detection algorithm for its inputs. The custom - algorithm is necessary since inputs are represented as complex object or arrays that need to be - deeply-compared. - This algorithm is perf-sensitive since NgClass is used very frequently and its poor performance - might negatively impact runtime performance of the entire change detection cycle. The design of - this algorithm is making sure that: - - there is no unnecessary DOM manipulation (CSS classes are added / removed from the DOM only when - needed), even if references to bound objects change; - - there is no memory allocation if nothing changes (even relatively modest memory allocation - during the change detection cycle can result in GC pauses for some of the CD cycles). - The algorithm works by iterating over the set of bound classes, staring with [class] binding and - then going over [ngClass] binding. For each CSS class name: - - check if it was seen before (this information is tracked in the state map) and if its value - changed; - - mark it as "touched" - names that are not marked are not present in the latest set of binding - and we can remove such class name from the internal data structures; - After iteration over all the CSS class names we've got data structure with all the information - necessary to synchronize changes to the DOM - it is enough to iterate over the state map, flush - changes to the DOM and reset internal data structures so those are ready for the next change - detection cycle. - */ - ngDoCheck() { - // classes from the [class] binding - for (const klass of this.initialClasses) { - this._updateState(klass, true); - } - // classes from the [ngClass] binding - const rawClass = this.rawClass; - if (Array.isArray(rawClass) || rawClass instanceof Set) { - for (const klass of rawClass) { - this._updateState(klass, true); - } - } else if (rawClass != null) { - for (const klass of Object.keys(rawClass)) { - this._updateState(klass, Boolean(rawClass[klass])); - } - } - this._applyStateDiff(); - } - _updateState(klass, nextEnabled) { - const state = this.stateMap.get(klass); - if (state !== undefined) { - if (state.enabled !== nextEnabled) { - state.changed = true; - state.enabled = nextEnabled; - } - state.touched = true; - } else { - this.stateMap.set(klass, { - enabled: nextEnabled, - changed: true, - touched: true - }); - } - } - _applyStateDiff() { - for (const stateEntry of this.stateMap) { - const klass = stateEntry[0]; - const state = stateEntry[1]; - if (state.changed) { - this._toggleClass(klass, state.enabled); - state.changed = false; - } else if (!state.touched) { - // A class that was previously active got removed from the new collection of classes - - // remove from the DOM as well. - if (state.enabled) { - this._toggleClass(klass, false); - } - this.stateMap.delete(klass); - } - state.touched = false; - } - } - _toggleClass(klass, enabled) { - if (ngDevMode) { - if (typeof klass !== 'string') { - throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵstringify"])(klass)}`); - } - } - klass = klass.trim(); - if (klass.length > 0) { - klass.split(WS_REGEXP).forEach(klass => { - if (enabled) { - this._renderer.addClass(this._ngEl.nativeElement, klass); - } else { - this._renderer.removeClass(this._ngEl.nativeElement, klass); - } - }); - } - } -} -NgClass.ɵfac = function NgClass_Factory(t) { - return new (t || NgClass)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.IterableDiffers), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.Renderer2)); -}; -NgClass.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgClass, - selectors: [["", "ngClass", ""]], - inputs: { - klass: ["class", "klass"], - ngClass: "ngClass" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgClass, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngClass]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.IterableDiffers - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Renderer2 - }]; - }, { - klass: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['class'] - }], - ngClass: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['ngClass'] - }] - }); -})(); - -/** - * Instantiates a {@link Component} type and inserts its Host View into the current View. - * `NgComponentOutlet` provides a declarative approach for dynamic component creation. - * - * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and - * any existing component will be destroyed. - * - * @usageNotes - * - * ### Fine tune control - * - * You can control the component creation process by using the following optional attributes: - * - * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for - * the Component. Defaults to the injector of the current view container. - * - * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content - * section of the component, if it exists. - * - * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another - * module dynamically, then loading a component from that module. - * - * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional - * NgModule factory to allow loading another module dynamically, then loading a component from that - * module. Use `ngComponentOutletNgModule` instead. - * - * ### Syntax - * - * Simple - * ``` - * - * ``` - * - * Customized injector/content - * ``` - * - * - * ``` - * - * Customized NgModule reference - * ``` - * - * - * ``` - * - * ### A simple example - * - * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'} - * - * A more complete example with additional options: - * - * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'} - * - * @publicApi - * @ngModule CommonModule - */ -class NgComponentOutlet { - constructor(_viewContainerRef) { - this._viewContainerRef = _viewContainerRef; - this.ngComponentOutlet = null; - } - /** @nodoc */ - ngOnChanges(changes) { - const { - _viewContainerRef: viewContainerRef, - ngComponentOutletNgModule: ngModule, - ngComponentOutletNgModuleFactory: ngModuleFactory - } = this; - viewContainerRef.clear(); - this._componentRef = undefined; - if (this.ngComponentOutlet) { - const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector; - if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) { - if (this._moduleRef) this._moduleRef.destroy(); - if (ngModule) { - this._moduleRef = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.createNgModule)(ngModule, getParentInjector(injector)); - } else if (ngModuleFactory) { - this._moduleRef = ngModuleFactory.create(getParentInjector(injector)); - } else { - this._moduleRef = undefined; - } - } - this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, { - index: viewContainerRef.length, - injector, - ngModuleRef: this._moduleRef, - projectableNodes: this.ngComponentOutletContent - }); - } - } - /** @nodoc */ - ngOnDestroy() { - if (this._moduleRef) this._moduleRef.destroy(); - } -} -NgComponentOutlet.ɵfac = function NgComponentOutlet_Factory(t) { - return new (t || NgComponentOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef)); -}; -NgComponentOutlet.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgComponentOutlet, - selectors: [["", "ngComponentOutlet", ""]], - inputs: { - ngComponentOutlet: "ngComponentOutlet", - ngComponentOutletInjector: "ngComponentOutletInjector", - ngComponentOutletContent: "ngComponentOutletContent", - ngComponentOutletNgModule: "ngComponentOutletNgModule", - ngComponentOutletNgModuleFactory: "ngComponentOutletNgModuleFactory" - }, - standalone: true, - features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵNgOnChangesFeature"]] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgComponentOutlet, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngComponentOutlet]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }]; - }, { - ngComponentOutlet: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngComponentOutletInjector: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngComponentOutletContent: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngComponentOutletNgModule: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngComponentOutletNgModuleFactory: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -// Helper function that returns an Injector instance of a parent NgModule. -function getParentInjector(injector) { - const parentNgModule = injector.get(_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModuleRef); - return parentNgModule.injector; -} - -/** - * @publicApi - */ -class NgForOfContext { - constructor($implicit, ngForOf, index, count) { - this.$implicit = $implicit; - this.ngForOf = ngForOf; - this.index = index; - this.count = count; - } - get first() { - return this.index === 0; - } - get last() { - return this.index === this.count - 1; - } - get even() { - return this.index % 2 === 0; - } - get odd() { - return !this.even; - } -} -/** - * A [structural directive](guide/structural-directives) that renders - * a template for each item in a collection. - * The directive is placed on an element, which becomes the parent - * of the cloned templates. - * - * The `ngForOf` directive is generally used in the - * [shorthand form](guide/structural-directives#asterisk) `*ngFor`. - * In this form, the template to be rendered for each iteration is the content - * of an anchor element containing the directive. - * - * The following example shows the shorthand syntax with some options, - * contained in an `
  • ` element. - * - * ``` - *
  • ...
  • - * ``` - * - * The shorthand form expands into a long form that uses the `ngForOf` selector - * on an `` element. - * The content of the `` element is the `
  • ` element that held the - * short-form directive. - * - * Here is the expanded version of the short-form example. - * - * ``` - * - *
  • ...
  • - *
    - * ``` - * - * Angular automatically expands the shorthand syntax as it compiles the template. - * The context for each embedded view is logically merged to the current component - * context according to its lexical position. - * - * When using the shorthand syntax, Angular allows only [one structural directive - * on an element](guide/structural-directives#one-per-element). - * If you want to iterate conditionally, for example, - * put the `*ngIf` on a container element that wraps the `*ngFor` element. - * For further discussion, see - * [Structural Directives](guide/structural-directives#one-per-element). - * - * @usageNotes - * - * ### Local variables - * - * `NgForOf` provides exported values that can be aliased to local variables. - * For example: - * - * ``` - *
  • - * {{i}}/{{users.length}}. {{user}} default - *
  • - * ``` - * - * The following exported values can be aliased to local variables: - * - * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`). - * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is - * more complex then a property access, for example when using the async pipe (`userStreams | - * async`). - * - `index: number`: The index of the current item in the iterable. - * - `count: number`: The length of the iterable. - * - `first: boolean`: True when the item is the first item in the iterable. - * - `last: boolean`: True when the item is the last item in the iterable. - * - `even: boolean`: True when the item has an even index in the iterable. - * - `odd: boolean`: True when the item has an odd index in the iterable. - * - * ### Change propagation - * - * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM: - * - * * When an item is added, a new instance of the template is added to the DOM. - * * When an item is removed, its template instance is removed from the DOM. - * * When items are reordered, their respective templates are reordered in the DOM. - * - * Angular uses object identity to track insertions and deletions within the iterator and reproduce - * those changes in the DOM. This has important implications for animations and any stateful - * controls that are present, such as `` elements that accept user input. Inserted rows can - * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state - * such as user input. - * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers). - * - * The identities of elements in the iterator can change while the data does not. - * This can happen, for example, if the iterator is produced from an RPC to the server, and that - * RPC is re-run. Even if the data hasn't changed, the second response produces objects with - * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old - * elements were deleted and all new elements inserted). - * - * To avoid this expensive operation, you can customize the default tracking algorithm. - * by supplying the `trackBy` option to `NgForOf`. - * `trackBy` takes a function that has two arguments: `index` and `item`. - * If `trackBy` is given, Angular tracks changes by the return value of the function. - * - * @see [Structural Directives](guide/structural-directives) - * @ngModule CommonModule - * @publicApi - */ -class NgForOf { - /** - * The value of the iterable expression, which can be used as a - * [template input variable](guide/structural-directives#shorthand). - */ - set ngForOf(ngForOf) { - this._ngForOf = ngForOf; - this._ngForOfDirty = true; - } - /** - * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable. - * - * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object - * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) - * as the key. - * - * `NgForOf` uses the computed key to associate items in an iterable with DOM elements - * it produces for these items. - * - * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an - * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a - * primary key), and this iterable could be updated with new object instances that still - * represent the same underlying entity (for example, when data is re-fetched from the server, - * and the iterable is recreated and re-rendered, but most of the data is still the same). - * - * @see {@link TrackByFunction} - */ - set ngForTrackBy(fn) { - if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') { - console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` + `See https://angular.io/api/common/NgForOf#change-propagation for more information.`); - } - this._trackByFn = fn; - } - get ngForTrackBy() { - return this._trackByFn; - } - constructor(_viewContainer, _template, _differs) { - this._viewContainer = _viewContainer; - this._template = _template; - this._differs = _differs; - this._ngForOf = null; - this._ngForOfDirty = true; - this._differ = null; - } - /** - * A reference to the template that is stamped out for each item in the iterable. - * @see [template reference variable](guide/template-reference-variables) - */ - set ngForTemplate(value) { - // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1 - // The current type is too restrictive; a template that just uses index, for example, - // should be acceptable. - if (value) { - this._template = value; - } - } - /** - * Applies the changes when needed. - * @nodoc - */ - ngDoCheck() { - if (this._ngForOfDirty) { - this._ngForOfDirty = false; - // React on ngForOf changes only once all inputs have been initialized - const value = this._ngForOf; - if (!this._differ && value) { - if (typeof ngDevMode === 'undefined' || ngDevMode) { - try { - // CAUTION: this logic is duplicated for production mode below, as the try-catch - // is only present in development builds. - this._differ = this._differs.find(value).create(this.ngForTrackBy); - } catch { - let errorMessage = `Cannot find a differ supporting object '${value}' of type '` + `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`; - if (typeof value === 'object') { - errorMessage += ' Did you mean to use the keyvalue pipe?'; - } - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](-2200 /* RuntimeErrorCode.NG_FOR_MISSING_DIFFER */, errorMessage); - } - } else { - // CAUTION: this logic is duplicated for development mode above, as the try-catch - // is only present in development builds. - this._differ = this._differs.find(value).create(this.ngForTrackBy); - } - } - } - if (this._differ) { - const changes = this._differ.diff(this._ngForOf); - if (changes) this._applyChanges(changes); - } - } - _applyChanges(changes) { - const viewContainer = this._viewContainer; - changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => { - if (item.previousIndex == null) { - // NgForOf is never "null" or "undefined" here because the differ detected - // that a new item needs to be inserted from the iterable. This implies that - // there is an iterable value for "_ngForOf". - viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex); - } else if (currentIndex == null) { - viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex); - } else if (adjustedPreviousIndex !== null) { - const view = viewContainer.get(adjustedPreviousIndex); - viewContainer.move(view, currentIndex); - applyViewChange(view, item); - } - }); - for (let i = 0, ilen = viewContainer.length; i < ilen; i++) { - const viewRef = viewContainer.get(i); - const context = viewRef.context; - context.index = i; - context.count = ilen; - context.ngForOf = this._ngForOf; - } - changes.forEachIdentityChange(record => { - const viewRef = viewContainer.get(record.currentIndex); - applyViewChange(viewRef, record); - }); - } - /** - * Asserts the correct type of the context for the template that `NgForOf` will render. - * - * The presence of this method is a signal to the Ivy template type-check compiler that the - * `NgForOf` structural directive renders its template with a specific context type. - */ - static ngTemplateContextGuard(dir, ctx) { - return true; - } -} -NgForOf.ɵfac = function NgForOf_Factory(t) { - return new (t || NgForOf)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.IterableDiffers)); -}; -NgForOf.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgForOf, - selectors: [["", "ngFor", "", "ngForOf", ""]], - inputs: { - ngForOf: "ngForOf", - ngForTrackBy: "ngForTrackBy", - ngForTemplate: "ngForTemplate" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgForOf, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngFor][ngForOf]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.IterableDiffers - }]; - }, { - ngForOf: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngForTrackBy: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngForTemplate: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -function applyViewChange(view, record) { - view.context.$implicit = record.item; -} -function getTypeName(type) { - return type['name'] || typeof type; -} - -/** - * A structural directive that conditionally includes a template based on the value of - * an expression coerced to Boolean. - * When the expression evaluates to true, Angular renders the template - * provided in a `then` clause, and when false or null, - * Angular renders the template provided in an optional `else` clause. The default - * template for the `else` clause is blank. - * - * A [shorthand form](guide/structural-directives#asterisk) of the directive, - * `*ngIf="condition"`, is generally used, provided - * as an attribute of the anchor element for the inserted template. - * Angular expands this into a more explicit version, in which the anchor element - * is contained in an `` element. - * - * Simple form with shorthand syntax: - * - * ``` - *
    Content to render when condition is true.
    - * ``` - * - * Simple form with expanded syntax: - * - * ``` - *
    Content to render when condition is - * true.
    - * ``` - * - * Form with an "else" block: - * - * ``` - *
    Content to render when condition is true.
    - * Content to render when condition is false. - * ``` - * - * Shorthand form with "then" and "else" blocks: - * - * ``` - *
    - * Content to render when condition is true. - * Content to render when condition is false. - * ``` - * - * Form with storing the value locally: - * - * ``` - *
    {{value}}
    - * Content to render when value is null. - * ``` - * - * @usageNotes - * - * The `*ngIf` directive is most commonly used to conditionally show an inline template, - * as seen in the following example. - * The default `else` template is blank. - * - * {@example common/ngIf/ts/module.ts region='NgIfSimple'} - * - * ### Showing an alternative template using `else` - * - * To display a template when `expression` evaluates to false, use an `else` template - * binding as shown in the following example. - * The `else` binding points to an `` element labeled `#elseBlock`. - * The template can be defined anywhere in the component view, but is typically placed right after - * `ngIf` for readability. - * - * {@example common/ngIf/ts/module.ts region='NgIfElse'} - * - * ### Using an external `then` template - * - * In the previous example, the then-clause template is specified inline, as the content of the - * tag that contains the `ngIf` directive. You can also specify a template that is defined - * externally, by referencing a labeled `` element. When you do this, you can - * change which template to use at runtime, as shown in the following example. - * - * {@example common/ngIf/ts/module.ts region='NgIfThenElse'} - * - * ### Storing a conditional result in a variable - * - * You might want to show a set of properties from the same object. If you are waiting - * for asynchronous data, the object can be undefined. - * In this case, you can use `ngIf` and store the result of the condition in a local - * variable as shown in the following example. - * - * {@example common/ngIf/ts/module.ts region='NgIfAs'} - * - * This code uses only one `AsyncPipe`, so only one subscription is created. - * The conditional statement stores the result of `userStream|async` in the local variable `user`. - * You can then bind the local `user` repeatedly. - * - * The conditional displays the data only if `userStream` returns a value, - * so you don't need to use the - * safe-navigation-operator (`?.`) - * to guard against null values when accessing properties. - * You can display an alternative template while waiting for the data. - * - * ### Shorthand syntax - * - * The shorthand syntax `*ngIf` expands into two separate template specifications - * for the "then" and "else" clauses. For example, consider the following shorthand statement, - * that is meant to show a loading page while waiting for data to be loaded. - * - * ``` - *
    - * ... - *
    - * - * - *
    Loading...
    - *
    - * ``` - * - * You can see that the "else" clause references the `` - * with the `#loading` label, and the template for the "then" clause - * is provided as the content of the anchor element. - * - * However, when Angular expands the shorthand syntax, it creates - * another `` tag, with `ngIf` and `ngIfElse` directives. - * The anchor element containing the template for the "then" clause becomes - * the content of this unlabeled `` tag. - * - * ``` - * - *
    - * ... - *
    - *
    - * - * - *
    Loading...
    - *
    - * ``` - * - * The presence of the implicit template object has implications for the nesting of - * structural directives. For more on this subject, see - * [Structural Directives](guide/structural-directives#one-per-element). - * - * @ngModule CommonModule - * @publicApi - */ -class NgIf { - constructor(_viewContainer, templateRef) { - this._viewContainer = _viewContainer; - this._context = new NgIfContext(); - this._thenTemplateRef = null; - this._elseTemplateRef = null; - this._thenViewRef = null; - this._elseViewRef = null; - this._thenTemplateRef = templateRef; - } - /** - * The Boolean expression to evaluate as the condition for showing a template. - */ - set ngIf(condition) { - this._context.$implicit = this._context.ngIf = condition; - this._updateView(); - } - /** - * A template to show if the condition expression evaluates to true. - */ - set ngIfThen(templateRef) { - assertTemplate('ngIfThen', templateRef); - this._thenTemplateRef = templateRef; - this._thenViewRef = null; // clear previous view if any. - this._updateView(); - } - /** - * A template to show if the condition expression evaluates to false. - */ - set ngIfElse(templateRef) { - assertTemplate('ngIfElse', templateRef); - this._elseTemplateRef = templateRef; - this._elseViewRef = null; // clear previous view if any. - this._updateView(); - } - _updateView() { - if (this._context.$implicit) { - if (!this._thenViewRef) { - this._viewContainer.clear(); - this._elseViewRef = null; - if (this._thenTemplateRef) { - this._thenViewRef = this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context); - } - } - } else { - if (!this._elseViewRef) { - this._viewContainer.clear(); - this._thenViewRef = null; - if (this._elseTemplateRef) { - this._elseViewRef = this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context); - } - } - } - } - /** - * Asserts the correct type of the context for the template that `NgIf` will render. - * - * The presence of this method is a signal to the Ivy template type-check compiler that the - * `NgIf` structural directive renders its template with a specific context type. - */ - static ngTemplateContextGuard(dir, ctx) { - return true; - } -} -NgIf.ɵfac = function NgIf_Factory(t) { - return new (t || NgIf)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef)); -}; -NgIf.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgIf, - selectors: [["", "ngIf", ""]], - inputs: { - ngIf: "ngIf", - ngIfThen: "ngIfThen", - ngIfElse: "ngIfElse" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgIf, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngIf]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef - }]; - }, { - ngIf: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngIfThen: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngIfElse: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -/** - * @publicApi - */ -class NgIfContext { - constructor() { - this.$implicit = null; - this.ngIf = null; - } -} -function assertTemplate(property, templateRef) { - const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView); - if (!isTemplateRefOrNull) { - throw new Error(`${property} must be a TemplateRef, but received '${(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵstringify"])(templateRef)}'.`); - } -} -class SwitchView { - constructor(_viewContainerRef, _templateRef) { - this._viewContainerRef = _viewContainerRef; - this._templateRef = _templateRef; - this._created = false; - } - create() { - this._created = true; - this._viewContainerRef.createEmbeddedView(this._templateRef); - } - destroy() { - this._created = false; - this._viewContainerRef.clear(); - } - enforceState(created) { - if (created && !this._created) { - this.create(); - } else if (!created && this._created) { - this.destroy(); - } - } -} -/** - * @ngModule CommonModule - * - * @description - * The `[ngSwitch]` directive on a container specifies an expression to match against. - * The expressions to match are provided by `ngSwitchCase` directives on views within the container. - * - Every view that matches is rendered. - * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered. - * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase` - * or `ngSwitchDefault` directive are preserved at the location. - * - * @usageNotes - * Define a container element for the directive, and specify the switch expression - * to match against as an attribute: - * - * ``` - * - * ``` - * - * Within the container, `*ngSwitchCase` statements specify the match expressions - * as attributes. Include `*ngSwitchDefault` as the final case. - * - * ``` - * - * ... - * ... - * ... - * - * ``` - * - * ### Usage Examples - * - * The following example shows how to use more than one case to display the same view: - * - * ``` - * - * - * ... - * ... - * ... - * - * ... - * - * ``` - * - * The following example shows how cases can be nested: - * ``` - * - * ... - * ... - * ... - * - * - * - * - * - * ... - * - * ``` - * - * @publicApi - * @see {@link NgSwitchCase} - * @see {@link NgSwitchDefault} - * @see [Structural Directives](guide/structural-directives) - * - */ -class NgSwitch { - constructor() { - this._defaultViews = []; - this._defaultUsed = false; - this._caseCount = 0; - this._lastCaseCheckIndex = 0; - this._lastCasesMatched = false; - } - set ngSwitch(newValue) { - this._ngSwitch = newValue; - if (this._caseCount === 0) { - this._updateDefaultCases(true); - } - } - /** @internal */ - _addCase() { - return this._caseCount++; - } - /** @internal */ - _addDefault(view) { - this._defaultViews.push(view); - } - /** @internal */ - _matchCase(value) { - const matched = value == this._ngSwitch; - this._lastCasesMatched = this._lastCasesMatched || matched; - this._lastCaseCheckIndex++; - if (this._lastCaseCheckIndex === this._caseCount) { - this._updateDefaultCases(!this._lastCasesMatched); - this._lastCaseCheckIndex = 0; - this._lastCasesMatched = false; - } - return matched; - } - _updateDefaultCases(useDefault) { - if (this._defaultViews.length > 0 && useDefault !== this._defaultUsed) { - this._defaultUsed = useDefault; - for (const defaultView of this._defaultViews) { - defaultView.enforceState(useDefault); - } - } - } -} -NgSwitch.ɵfac = function NgSwitch_Factory(t) { - return new (t || NgSwitch)(); -}; -NgSwitch.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgSwitch, - selectors: [["", "ngSwitch", ""]], - inputs: { - ngSwitch: "ngSwitch" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgSwitch, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngSwitch]', - standalone: true - }] - }], null, { - ngSwitch: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -/** - * @ngModule CommonModule - * - * @description - * Provides a switch case expression to match against an enclosing `ngSwitch` expression. - * When the expressions match, the given `NgSwitchCase` template is rendered. - * If multiple match expressions match the switch expression value, all of them are displayed. - * - * @usageNotes - * - * Within a switch container, `*ngSwitchCase` statements specify the match expressions - * as attributes. Include `*ngSwitchDefault` as the final case. - * - * ``` - * - * ... - * ... - * ... - * - * ``` - * - * Each switch-case statement contains an in-line HTML template or template reference - * that defines the subtree to be selected if the value of the match expression - * matches the value of the switch expression. - * - * Unlike JavaScript, which uses strict equality, Angular uses loose equality. - * This means that the empty string, `""` matches 0. - * - * @publicApi - * @see {@link NgSwitch} - * @see {@link NgSwitchDefault} - * - */ -class NgSwitchCase { - constructor(viewContainer, templateRef, ngSwitch) { - this.ngSwitch = ngSwitch; - if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) { - throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase'); - } - ngSwitch._addCase(); - this._view = new SwitchView(viewContainer, templateRef); - } - /** - * Performs case matching. For internal use only. - * @nodoc - */ - ngDoCheck() { - this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase)); - } -} -NgSwitchCase.ɵfac = function NgSwitchCase_Factory(t) { - return new (t || NgSwitchCase)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](NgSwitch, 9)); -}; -NgSwitchCase.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgSwitchCase, - selectors: [["", "ngSwitchCase", ""]], - inputs: { - ngSwitchCase: "ngSwitchCase" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgSwitchCase, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngSwitchCase]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef - }, { - type: NgSwitch, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Host - }] - }]; - }, { - ngSwitchCase: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -/** - * @ngModule CommonModule - * - * @description - * - * Creates a view that is rendered when no `NgSwitchCase` expressions - * match the `NgSwitch` expression. - * This statement should be the final case in an `NgSwitch`. - * - * @publicApi - * @see {@link NgSwitch} - * @see {@link NgSwitchCase} - * - */ -class NgSwitchDefault { - constructor(viewContainer, templateRef, ngSwitch) { - if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) { - throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault'); - } - ngSwitch._addDefault(new SwitchView(viewContainer, templateRef)); - } -} -NgSwitchDefault.ɵfac = function NgSwitchDefault_Factory(t) { - return new (t || NgSwitchDefault)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](NgSwitch, 9)); -}; -NgSwitchDefault.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgSwitchDefault, - selectors: [["", "ngSwitchDefault", ""]], - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgSwitchDefault, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngSwitchDefault]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef - }, { - type: NgSwitch, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Host - }] - }]; - }, null); -})(); -function throwNgSwitchProviderNotFoundError(attrName, directiveName) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `An element with the "${attrName}" attribute ` + `(matching the "${directiveName}" directive) must be located inside an element with the "ngSwitch" attribute ` + `(matching "NgSwitch" directive)`); -} - -/** - * @ngModule CommonModule - * - * @usageNotes - * ``` - * - * there is nothing - * there is one - * there are a few - * - * ``` - * - * @description - * - * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization. - * - * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees - * that match the switch expression's pluralization category. - * - * To use this directive you must provide a container element that sets the `[ngPlural]` attribute - * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their - * expression: - * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value - * matches the switch expression exactly, - * - otherwise, the view will be treated as a "category match", and will only display if exact - * value matches aren't found and the value maps to its category for the defined locale. - * - * See http://cldr.unicode.org/index/cldr-spec/plural-rules - * - * @publicApi - */ -class NgPlural { - constructor(_localization) { - this._localization = _localization; - this._caseViews = {}; - } - set ngPlural(value) { - this._updateView(value); - } - addCase(value, switchView) { - this._caseViews[value] = switchView; - } - _updateView(switchValue) { - this._clearViews(); - const cases = Object.keys(this._caseViews); - const key = getPluralCategory(switchValue, cases, this._localization); - this._activateView(this._caseViews[key]); - } - _clearViews() { - if (this._activeView) this._activeView.destroy(); - } - _activateView(view) { - if (view) { - this._activeView = view; - this._activeView.create(); - } - } -} -NgPlural.ɵfac = function NgPlural_Factory(t) { - return new (t || NgPlural)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](NgLocalization)); -}; -NgPlural.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgPlural, - selectors: [["", "ngPlural", ""]], - inputs: { - ngPlural: "ngPlural" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgPlural, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngPlural]', - standalone: true - }] - }], function () { - return [{ - type: NgLocalization - }]; - }, { - ngPlural: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -/** - * @ngModule CommonModule - * - * @description - * - * Creates a view that will be added/removed from the parent {@link NgPlural} when the - * given expression matches the plural expression according to CLDR rules. - * - * @usageNotes - * ``` - * - * ... - * ... - * - *``` - * - * See {@link NgPlural} for more details and example. - * - * @publicApi - */ -class NgPluralCase { - constructor(value, template, viewContainer, ngPlural) { - this.value = value; - const isANumber = !isNaN(Number(value)); - ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template)); - } -} -NgPluralCase.ɵfac = function NgPluralCase_Factory(t) { - return new (t || NgPluralCase)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinjectAttribute"]('ngPluralCase'), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](NgPlural, 1)); -}; -NgPluralCase.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgPluralCase, - selectors: [["", "ngPluralCase", ""]], - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgPluralCase, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngPluralCase]', - standalone: true - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Attribute, - args: ['ngPluralCase'] - }] - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.TemplateRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }, { - type: NgPlural, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Host - }] - }]; - }, null); -})(); - -/** - * @ngModule CommonModule - * - * @usageNotes - * - * Set the font of the containing element to the result of an expression. - * - * ``` - * ... - * ``` - * - * Set the width of the containing element to a pixel value returned by an expression. - * - * ``` - * ... - * ``` - * - * Set a collection of style values using an expression that returns key-value pairs. - * - * ``` - * ... - * ``` - * - * @description - * - * An attribute directive that updates styles for the containing HTML element. - * Sets one or more style properties, specified as colon-separated key-value pairs. - * The key is a style name, with an optional `.` suffix - * (such as 'top.px', 'font-style.em'). - * The value is an expression to be evaluated. - * The resulting non-null value, expressed in the given unit, - * is assigned to the given style property. - * If the result of evaluation is null, the corresponding style is removed. - * - * @publicApi - */ -class NgStyle { - constructor(_ngEl, _differs, _renderer) { - this._ngEl = _ngEl; - this._differs = _differs; - this._renderer = _renderer; - this._ngStyle = null; - this._differ = null; - } - set ngStyle(values) { - this._ngStyle = values; - if (!this._differ && values) { - this._differ = this._differs.find(values).create(); - } - } - ngDoCheck() { - if (this._differ) { - const changes = this._differ.diff(this._ngStyle); - if (changes) { - this._applyChanges(changes); - } - } - } - _setStyle(nameAndUnit, value) { - const [name, unit] = nameAndUnit.split('.'); - const flags = name.indexOf('-') === -1 ? undefined : _angular_core__WEBPACK_IMPORTED_MODULE_0__.RendererStyleFlags2.DashCase; - if (value != null) { - this._renderer.setStyle(this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags); - } else { - this._renderer.removeStyle(this._ngEl.nativeElement, name, flags); - } - } - _applyChanges(changes) { - changes.forEachRemovedItem(record => this._setStyle(record.key, null)); - changes.forEachAddedItem(record => this._setStyle(record.key, record.currentValue)); - changes.forEachChangedItem(record => this._setStyle(record.key, record.currentValue)); - } -} -NgStyle.ɵfac = function NgStyle_Factory(t) { - return new (t || NgStyle)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.Renderer2)); -}; -NgStyle.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgStyle, - selectors: [["", "ngStyle", ""]], - inputs: { - ngStyle: "ngStyle" - }, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgStyle, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngStyle]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Renderer2 - }]; - }, { - ngStyle: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: ['ngStyle'] - }] - }); -})(); - -/** - * @ngModule CommonModule - * - * @description - * - * Inserts an embedded view from a prepared `TemplateRef`. - * - * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`. - * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding - * by the local template `let` declarations. - * - * @usageNotes - * ``` - * - * ``` - * - * Using the key `$implicit` in the context object will set its value as default. - * - * ### Example - * - * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'} - * - * @publicApi - */ -class NgTemplateOutlet { - constructor(_viewContainerRef) { - this._viewContainerRef = _viewContainerRef; - this._viewRef = null; - /** - * A context object to attach to the {@link EmbeddedViewRef}. This should be an - * object, the object's keys will be available for binding by the local template `let` - * declarations. - * Using the key `$implicit` in the context object will set its value as default. - */ - this.ngTemplateOutletContext = null; - /** - * A string defining the template reference and optionally the context object for the template. - */ - this.ngTemplateOutlet = null; - /** Injector to be used within the embedded view. */ - this.ngTemplateOutletInjector = null; - } - /** @nodoc */ - ngOnChanges(changes) { - if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) { - const viewContainerRef = this._viewContainerRef; - if (this._viewRef) { - viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef)); - } - if (this.ngTemplateOutlet) { - const { - ngTemplateOutlet: template, - ngTemplateOutletContext: context, - ngTemplateOutletInjector: injector - } = this; - this._viewRef = viewContainerRef.createEmbeddedView(template, context, injector ? { - injector - } : undefined); - } else { - this._viewRef = null; - } - } else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) { - this._viewRef.context = this.ngTemplateOutletContext; - } - } -} -NgTemplateOutlet.ɵfac = function NgTemplateOutlet_Factory(t) { - return new (t || NgTemplateOutlet)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef)); -}; -NgTemplateOutlet.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgTemplateOutlet, - selectors: [["", "ngTemplateOutlet", ""]], - inputs: { - ngTemplateOutletContext: "ngTemplateOutletContext", - ngTemplateOutlet: "ngTemplateOutlet", - ngTemplateOutletInjector: "ngTemplateOutletInjector" - }, - standalone: true, - features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵNgOnChangesFeature"]] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgTemplateOutlet, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - selector: '[ngTemplateOutlet]', - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ViewContainerRef - }]; - }, { - ngTemplateOutletContext: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngTemplateOutlet: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - ngTemplateOutletInjector: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); - -/** - * A collection of Angular directives that are likely to be used in each and every Angular - * application. - */ -const COMMON_DIRECTIVES = [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase]; -function invalidPipeArgumentError(type, value) { - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵstringify"])(type)}'`); -} -class SubscribableStrategy { - createSubscription(async, updateLatestValue) { - // Subscription can be side-effectful, and we don't want any signal reads which happen in the - // side effect of the subscription to be tracked by a component's template when that - // subscription is triggered via the async pipe. So we wrap the subscription in `untracked` to - // decouple from the current reactive context. - // - // `untracked` also prevents signal _writes_ which happen in the subscription side effect from - // being treated as signal writes during the template evaluation (which throws errors). - return (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.untracked)(() => async.subscribe({ - next: updateLatestValue, - error: e => { - throw e; - } - })); - } - dispose(subscription) { - // See the comment in `createSubscription` above on the use of `untracked`. - (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.untracked)(() => subscription.unsubscribe()); - } -} -class PromiseStrategy { - createSubscription(async, updateLatestValue) { - return async.then(updateLatestValue, e => { - throw e; - }); - } - dispose(subscription) {} -} -const _promiseStrategy = new PromiseStrategy(); -const _subscribableStrategy = new SubscribableStrategy(); -/** - * @ngModule CommonModule - * @description - * - * Unwraps a value from an asynchronous primitive. - * - * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has - * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for - * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid - * potential memory leaks. When the reference of the expression changes, the `async` pipe - * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one. - * - * @usageNotes - * - * ### Examples - * - * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the - * promise. - * - * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'} - * - * It's also possible to use `async` with Observables. The example below binds the `time` Observable - * to the view. The Observable continuously updates the view with the current time. - * - * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'} - * - * @publicApi - */ -class AsyncPipe { - constructor(ref) { - this._latestValue = null; - this._subscription = null; - this._obj = null; - this._strategy = null; - // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor - // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`. - this._ref = ref; - } - ngOnDestroy() { - if (this._subscription) { - this._dispose(); - } - // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate - // potential memory leaks in Observables that could otherwise cause the view data to - // be retained. - // https://github.com/angular/angular/issues/17624 - this._ref = null; - } - transform(obj) { - if (!this._obj) { - if (obj) { - this._subscribe(obj); - } - return this._latestValue; - } - if (obj !== this._obj) { - this._dispose(); - return this.transform(obj); - } - return this._latestValue; - } - _subscribe(obj) { - this._obj = obj; - this._strategy = this._selectStrategy(obj); - this._subscription = this._strategy.createSubscription(obj, value => this._updateLatestValue(obj, value)); - } - _selectStrategy(obj) { - if ((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵisPromise"])(obj)) { - return _promiseStrategy; - } - if ((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵisSubscribable"])(obj)) { - return _subscribableStrategy; - } - throw invalidPipeArgumentError(AsyncPipe, obj); - } - _dispose() { - // Note: `dispose` is only called if a subscription has been initialized before, indicating - // that `this._strategy` is also available. - this._strategy.dispose(this._subscription); - this._latestValue = null; - this._subscription = null; - this._obj = null; - } - _updateLatestValue(async, value) { - if (async === this._obj) { - this._latestValue = value; - // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a - // value is being updated. - this._ref.markForCheck(); - } - } -} -AsyncPipe.ɵfac = function AsyncPipe_Factory(t) { - return new (t || AsyncPipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.ChangeDetectorRef, 16)); -}; -AsyncPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "async", - type: AsyncPipe, - pure: false, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](AsyncPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'async', - pure: false, - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.ChangeDetectorRef - }]; - }, null); -})(); - -/** - * Transforms text to all lower case. - * - * @see {@link UpperCasePipe} - * @see {@link TitleCasePipe} - * @usageNotes - * - * The following example defines a view that allows the user to enter - * text, and then uses the pipe to convert the input text to all lower case. - * - * - * - * @ngModule CommonModule - * @publicApi - */ -class LowerCasePipe { - transform(value) { - if (value == null) return null; - if (typeof value !== 'string') { - throw invalidPipeArgumentError(LowerCasePipe, value); - } - return value.toLowerCase(); - } -} -LowerCasePipe.ɵfac = function LowerCasePipe_Factory(t) { - return new (t || LowerCasePipe)(); -}; -LowerCasePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "lowercase", - type: LowerCasePipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](LowerCasePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'lowercase', - standalone: true - }] - }], null, null); -})(); -// -// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result -// can be achieved by using /[0-9\p{L}]\S*/gu and also known as Unicode Property Escapes -// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no -// transpilation of this functionality down to ES5 without external tool, the only solution is -// to use already transpiled form. Example can be found here - -// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1 -// -const unicodeWordMatch = /(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g; -/** - * Transforms text to title case. - * Capitalizes the first letter of each word and transforms the - * rest of the word to lower case. - * Words are delimited by any whitespace character, such as a space, tab, or line-feed character. - * - * @see {@link LowerCasePipe} - * @see {@link UpperCasePipe} - * - * @usageNotes - * The following example shows the result of transforming various strings into title case. - * - * - * - * @ngModule CommonModule - * @publicApi - */ -class TitleCasePipe { - transform(value) { - if (value == null) return null; - if (typeof value !== 'string') { - throw invalidPipeArgumentError(TitleCasePipe, value); - } - return value.replace(unicodeWordMatch, txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()); - } -} -TitleCasePipe.ɵfac = function TitleCasePipe_Factory(t) { - return new (t || TitleCasePipe)(); -}; -TitleCasePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "titlecase", - type: TitleCasePipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](TitleCasePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'titlecase', - standalone: true - }] - }], null, null); -})(); -/** - * Transforms text to all upper case. - * @see {@link LowerCasePipe} - * @see {@link TitleCasePipe} - * - * @ngModule CommonModule - * @publicApi - */ -class UpperCasePipe { - transform(value) { - if (value == null) return null; - if (typeof value !== 'string') { - throw invalidPipeArgumentError(UpperCasePipe, value); - } - return value.toUpperCase(); - } -} -UpperCasePipe.ɵfac = function UpperCasePipe_Factory(t) { - return new (t || UpperCasePipe)(); -}; -UpperCasePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "uppercase", - type: UpperCasePipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](UpperCasePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'uppercase', - standalone: true - }] - }], null, null); -})(); - -/** - * The default date format of Angular date pipe, which corresponds to the following format: - * `'MMM d,y'` (e.g. `Jun 15, 2015`) - */ -const DEFAULT_DATE_FORMAT = 'mediumDate'; - -/** - * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`). - * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone. - * - * @deprecated use DATE_PIPE_DEFAULT_OPTIONS token to configure DatePipe - */ -const DATE_PIPE_DEFAULT_TIMEZONE = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE'); -/** - * DI token that allows to provide default configuration for the `DatePipe` instances in an - * application. The value is an object which can include the following fields: - * - `dateFormat`: configures the default date format. If not provided, the `DatePipe` - * will use the 'mediumDate' as a value. - * - `timezone`: configures the default timezone. If not provided, the `DatePipe` will - * use the end-user's local system timezone. - * - * @see {@link DatePipeConfig} - * - * @usageNotes - * - * Various date pipe default values can be overwritten by providing this token with - * the value that has this interface. - * - * For example: - * - * Override the default date format by providing a value using the token: - * ```typescript - * providers: [ - * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {dateFormat: 'shortDate'}} - * ] - * ``` - * - * Override the default timezone by providing a value using the token: - * ```typescript - * providers: [ - * {provide: DATE_PIPE_DEFAULT_OPTIONS, useValue: {timezone: '-1200'}} - * ] - * ``` - */ -const DATE_PIPE_DEFAULT_OPTIONS = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('DATE_PIPE_DEFAULT_OPTIONS'); -// clang-format off -/** - * @ngModule CommonModule - * @description - * - * Formats a date value according to locale rules. - * - * `DatePipe` is executed only when it detects a pure change to the input value. - * A pure change is either a change to a primitive input value - * (such as `String`, `Number`, `Boolean`, or `Symbol`), - * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`). - * - * Note that mutating a `Date` object does not cause the pipe to be rendered again. - * To ensure that the pipe is executed, you must create a new `Date` object. - * - * Only the `en-US` locale data comes with Angular. To localize dates - * in another language, you must import the corresponding locale data. - * See the [I18n guide](guide/i18n-common-format-data-locale) for more information. - * - * The time zone of the formatted value can be specified either by passing it in as the second - * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_OPTIONS` - * injection token. The value that is passed in as the second parameter takes precedence over - * the one defined using the injection token. - * - * @see {@link formatDate} - * - * - * @usageNotes - * - * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to - * reformat the date on every change-detection cycle, treat the date as an immutable object - * and change the reference when the pipe needs to run again. - * - * ### Pre-defined format options - * - * | Option | Equivalent to | Examples (given in `en-US` locale) | - * |---------------|-------------------------------------|-------------------------------------------------| - * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` | - * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` | - * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` | - * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` | - * | `'shortDate'` | `'M/d/yy'` | `6/15/15` | - * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` | - * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` | - * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` | - * | `'shortTime'` | `'h:mm a'` | `9:03 AM` | - * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` | - * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` | - * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` | - * - * ### Custom format options - * - * You can construct a format string using symbols to specify the components - * of a date-time value, as described in the following table. - * Format details depend on the locale. - * Fields marked with (*) are only available in the extra data set for the given locale. - * - * | Field type | Format | Description | Example Value | - * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------| - * | Era | G, GG & GGG | Abbreviated | AD | - * | | GGGG | Wide | Anno Domini | - * | | GGGGG | Narrow | A | - * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 | - * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 | - * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 | - * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 | - * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 | - * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 | - * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 | - * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 | - * | Month | M | Numeric: 1 digit | 9, 12 | - * | | MM | Numeric: 2 digits + zero padded | 09, 12 | - * | | MMM | Abbreviated | Sep | - * | | MMMM | Wide | September | - * | | MMMMM | Narrow | S | - * | Month standalone | L | Numeric: 1 digit | 9, 12 | - * | | LL | Numeric: 2 digits + zero padded | 09, 12 | - * | | LLL | Abbreviated | Sep | - * | | LLLL | Wide | September | - * | | LLLLL | Narrow | S | - * | Week of year | w | Numeric: minimum digits | 1... 53 | - * | | ww | Numeric: 2 digits + zero padded | 01... 53 | - * | Week of month | W | Numeric: 1 digit | 1... 5 | - * | Day of month | d | Numeric: minimum digits | 1 | - * | | dd | Numeric: 2 digits + zero padded | 01 | - * | Week day | E, EE & EEE | Abbreviated | Tue | - * | | EEEE | Wide | Tuesday | - * | | EEEEE | Narrow | T | - * | | EEEEEE | Short | Tu | - * | Week day standalone | c, cc | Numeric: 1 digit | 2 | - * | | ccc | Abbreviated | Tue | - * | | cccc | Wide | Tuesday | - * | | ccccc | Narrow | T | - * | | cccccc | Short | Tu | - * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM | - * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem | - * | | aaaaa | Narrow | a/p | - * | Period* | B, BB & BBB | Abbreviated | mid. | - * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night | - * | | BBBBB | Narrow | md | - * | Period standalone* | b, bb & bbb | Abbreviated | mid. | - * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night | - * | | bbbbb | Narrow | md | - * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 | - * | | hh | Numeric: 2 digits + zero padded | 01, 12 | - * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 | - * | | HH | Numeric: 2 digits + zero padded | 00, 23 | - * | Minute | m | Numeric: minimum digits | 8, 59 | - * | | mm | Numeric: 2 digits + zero padded | 08, 59 | - * | Second | s | Numeric: minimum digits | 0... 59 | - * | | ss | Numeric: 2 digits + zero padded | 00... 59 | - * | Fractional seconds | S | Numeric: 1 digit | 0... 9 | - * | | SS | Numeric: 2 digits + zero padded | 00... 99 | - * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 | - * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 | - * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 | - * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 | - * | | ZZZZ | Long localized GMT format | GMT-8:00 | - * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 | - * | | O, OO & OOO | Short localized GMT format | GMT-8 | - * | | OOOO | Long localized GMT format | GMT-08:00 | - * - * - * ### Format examples - * - * These examples transform a date into various formats, - * assuming that `dateObj` is a JavaScript `Date` object for - * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11, - * given in the local time for the `en-US` locale. - * - * ``` - * {{ dateObj | date }} // output is 'Jun 15, 2015' - * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM' - * {{ dateObj | date:'shortTime' }} // output is '9:43 PM' - * {{ dateObj | date:'mm:ss' }} // output is '43:11' - * ``` - * - * ### Usage example - * - * The following component uses a date pipe to display the current date in different formats. - * - * ``` - * @Component({ - * selector: 'date-pipe', - * template: `
    - *

    Today is {{today | date}}

    - *

    Or if you prefer, {{today | date:'fullDate'}}

    - *

    The time is {{today | date:'h:mm a z'}}

    - *
    ` - * }) - * // Get the current date and time as a date-time value. - * export class DatePipeComponent { - * today: number = Date.now(); - * } - * ``` - * - * @publicApi - */ -// clang-format on -class DatePipe { - constructor(locale, defaultTimezone, defaultOptions) { - this.locale = locale; - this.defaultTimezone = defaultTimezone; - this.defaultOptions = defaultOptions; - } - transform(value, format, timezone, locale) { - if (value == null || value === '' || value !== value) return null; - try { - const _format = format ?? this.defaultOptions?.dateFormat ?? DEFAULT_DATE_FORMAT; - const _timezone = timezone ?? this.defaultOptions?.timezone ?? this.defaultTimezone ?? undefined; - return formatDate(value, _format, locale || this.locale, _timezone); - } catch (error) { - throw invalidPipeArgumentError(DatePipe, error.message); - } - } -} -DatePipe.ɵfac = function DatePipe_Factory(t) { - return new (t || DatePipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID, 16), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](DATE_PIPE_DEFAULT_TIMEZONE, 24), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](DATE_PIPE_DEFAULT_OPTIONS, 24)); -}; -DatePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "date", - type: DatePipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](DatePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'date', - pure: true, - standalone: true - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [DATE_PIPE_DEFAULT_TIMEZONE] - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [DATE_PIPE_DEFAULT_OPTIONS] - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Optional - }] - }]; - }, null); -})(); -const _INTERPOLATION_REGEXP = /#/g; -/** - * @ngModule CommonModule - * @description - * - * Maps a value to a string that pluralizes the value according to locale rules. - * - * @usageNotes - * - * ### Example - * - * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'} - * - * @publicApi - */ -class I18nPluralPipe { - constructor(_localization) { - this._localization = _localization; - } - /** - * @param value the number to be formatted - * @param pluralMap an object that mimics the ICU format, see - * https://unicode-org.github.io/icu/userguide/format_parse/messages/. - * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by - * default). - */ - transform(value, pluralMap, locale) { - if (value == null) return ''; - if (typeof pluralMap !== 'object' || pluralMap === null) { - throw invalidPipeArgumentError(I18nPluralPipe, pluralMap); - } - const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale); - return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString()); - } -} -I18nPluralPipe.ɵfac = function I18nPluralPipe_Factory(t) { - return new (t || I18nPluralPipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](NgLocalization, 16)); -}; -I18nPluralPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "i18nPlural", - type: I18nPluralPipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](I18nPluralPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'i18nPlural', - pure: true, - standalone: true - }] - }], function () { - return [{ - type: NgLocalization - }]; - }, null); -})(); - -/** - * @ngModule CommonModule - * @description - * - * Generic selector that displays the string that matches the current value. - * - * If none of the keys of the `mapping` match the `value`, then the content - * of the `other` key is returned when present, otherwise an empty string is returned. - * - * @usageNotes - * - * ### Example - * - * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'} - * - * @publicApi - */ -class I18nSelectPipe { - /** - * @param value a string to be internationalized. - * @param mapping an object that indicates the text that should be displayed - * for different values of the provided `value`. - */ - transform(value, mapping) { - if (value == null) return ''; - if (typeof mapping !== 'object' || typeof value !== 'string') { - throw invalidPipeArgumentError(I18nSelectPipe, mapping); - } - if (mapping.hasOwnProperty(value)) { - return mapping[value]; - } - if (mapping.hasOwnProperty('other')) { - return mapping['other']; - } - return ''; - } -} -I18nSelectPipe.ɵfac = function I18nSelectPipe_Factory(t) { - return new (t || I18nSelectPipe)(); -}; -I18nSelectPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "i18nSelect", - type: I18nSelectPipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](I18nSelectPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'i18nSelect', - pure: true, - standalone: true - }] - }], null, null); -})(); - -/** - * @ngModule CommonModule - * @description - * - * Converts a value into its JSON-format representation. Useful for debugging. - * - * @usageNotes - * - * The following component uses a JSON pipe to convert an object - * to JSON format, and displays the string in both formats for comparison. - * - * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'} - * - * @publicApi - */ -class JsonPipe { - /** - * @param value A value of any type to convert into a JSON-format string. - */ - transform(value) { - return JSON.stringify(value, null, 2); - } -} -JsonPipe.ɵfac = function JsonPipe_Factory(t) { - return new (t || JsonPipe)(); -}; -JsonPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "json", - type: JsonPipe, - pure: false, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](JsonPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'json', - pure: false, - standalone: true - }] - }], null, null); -})(); -function makeKeyValuePair(key, value) { - return { - key: key, - value: value - }; -} -/** - * @ngModule CommonModule - * @description - * - * Transforms Object or Map into an array of key value pairs. - * - * The output array will be ordered by keys. - * By default the comparator will be by Unicode point value. - * You can optionally pass a compareFn if your keys are complex types. - * - * @usageNotes - * ### Examples - * - * This examples show how an Object or a Map can be iterated by ngFor with the use of this - * keyvalue pipe. - * - * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'} - * - * @publicApi - */ -class KeyValuePipe { - constructor(differs) { - this.differs = differs; - this.keyValues = []; - this.compareFn = defaultComparator; - } - transform(input, compareFn = defaultComparator) { - if (!input || !(input instanceof Map) && typeof input !== 'object') { - return null; - } - if (!this.differ) { - // make a differ for whatever type we've been passed in - this.differ = this.differs.find(input).create(); - } - const differChanges = this.differ.diff(input); - const compareFnChanged = compareFn !== this.compareFn; - if (differChanges) { - this.keyValues = []; - differChanges.forEachItem(r => { - this.keyValues.push(makeKeyValuePair(r.key, r.currentValue)); - }); - } - if (differChanges || compareFnChanged) { - this.keyValues.sort(compareFn); - this.compareFn = compareFn; - } - return this.keyValues; - } -} -KeyValuePipe.ɵfac = function KeyValuePipe_Factory(t) { - return new (t || KeyValuePipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers, 16)); -}; -KeyValuePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "keyvalue", - type: KeyValuePipe, - pure: false, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](KeyValuePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'keyvalue', - pure: false, - standalone: true - }] - }], function () { - return [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.KeyValueDiffers - }]; - }, null); -})(); -function defaultComparator(keyValueA, keyValueB) { - const a = keyValueA.key; - const b = keyValueB.key; - // if same exit with 0; - if (a === b) return 0; - // make sure that undefined are at the end of the sort. - if (a === undefined) return 1; - if (b === undefined) return -1; - // make sure that nulls are at the end of the sort. - if (a === null) return 1; - if (b === null) return -1; - if (typeof a == 'string' && typeof b == 'string') { - return a < b ? -1 : 1; - } - if (typeof a == 'number' && typeof b == 'number') { - return a - b; - } - if (typeof a == 'boolean' && typeof b == 'boolean') { - return a < b ? -1 : 1; - } - // `a` and `b` are of different types. Compare their string values. - const aString = String(a); - const bString = String(b); - return aString == bString ? 0 : aString < bString ? -1 : 1; -} - -/** - * @ngModule CommonModule - * @description - * - * Formats a value according to digit options and locale rules. - * Locale determines group sizing and separator, - * decimal point character, and other locale-specific configurations. - * - * @see {@link formatNumber} - * - * @usageNotes - * - * ### digitsInfo - * - * The value's decimal representation is specified by the `digitsInfo` - * parameter, written in the following format:
    - * - * ``` - * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits} - * ``` - * - * - `minIntegerDigits`: - * The minimum number of integer digits before the decimal point. - * Default is 1. - * - * - `minFractionDigits`: - * The minimum number of digits after the decimal point. - * Default is 0. - * - * - `maxFractionDigits`: - * The maximum number of digits after the decimal point. - * Default is 3. - * - * If the formatted value is truncated it will be rounded using the "to-nearest" method: - * - * ``` - * {{3.6 | number: '1.0-0'}} - * - * - * {{-3.6 | number:'1.0-0'}} - * - * ``` - * - * ### locale - * - * `locale` will format a value according to locale rules. - * Locale determines group sizing and separator, - * decimal point character, and other locale-specific configurations. - * - * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default. - * - * See [Setting your app locale](guide/i18n-common-locale-id). - * - * ### Example - * - * The following code shows how the pipe transforms values - * according to various format specifications, - * where the caller's default locale is `en-US`. - * - * - * - * @publicApi - */ -class DecimalPipe { - constructor(_locale) { - this._locale = _locale; - } - /** - * @param value The value to be formatted. - * @param digitsInfo Sets digit and decimal representation. - * [See more](#digitsinfo). - * @param locale Specifies what locale format rules to use. - * [See more](#locale). - */ - transform(value, digitsInfo, locale) { - if (!isValue(value)) return null; - locale = locale || this._locale; - try { - const num = strToNumber(value); - return formatNumber(num, locale, digitsInfo); - } catch (error) { - throw invalidPipeArgumentError(DecimalPipe, error.message); - } - } -} -DecimalPipe.ɵfac = function DecimalPipe_Factory(t) { - return new (t || DecimalPipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID, 16)); -}; -DecimalPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "number", - type: DecimalPipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](DecimalPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'number', - standalone: true - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }]; - }, null); -})(); -/** - * @ngModule CommonModule - * @description - * - * Transforms a number to a percentage - * string, formatted according to locale rules that determine group sizing and - * separator, decimal-point character, and other locale-specific - * configurations. - * - * @see {@link formatPercent} - * - * @usageNotes - * The following code shows how the pipe transforms numbers - * into text strings, according to various format specifications, - * where the caller's default locale is `en-US`. - * - * - * - * @publicApi - */ -class PercentPipe { - constructor(_locale) { - this._locale = _locale; - } - /** - * - * @param value The number to be formatted as a percentage. - * @param digitsInfo Decimal representation options, specified by a string - * in the following format:
    - * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}. - * - `minIntegerDigits`: The minimum number of integer digits before the decimal point. - * Default is `1`. - * - `minFractionDigits`: The minimum number of digits after the decimal point. - * Default is `0`. - * - `maxFractionDigits`: The maximum number of digits after the decimal point. - * Default is `0`. - * @param locale A locale code for the locale format rules to use. - * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default. - * See [Setting your app locale](guide/i18n-common-locale-id). - */ - transform(value, digitsInfo, locale) { - if (!isValue(value)) return null; - locale = locale || this._locale; - try { - const num = strToNumber(value); - return formatPercent(num, locale, digitsInfo); - } catch (error) { - throw invalidPipeArgumentError(PercentPipe, error.message); - } - } -} -PercentPipe.ɵfac = function PercentPipe_Factory(t) { - return new (t || PercentPipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID, 16)); -}; -PercentPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "percent", - type: PercentPipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](PercentPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'percent', - standalone: true - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }]; - }, null); -})(); -/** - * @ngModule CommonModule - * @description - * - * Transforms a number to a currency string, formatted according to locale rules - * that determine group sizing and separator, decimal-point character, - * and other locale-specific configurations. - * - * - * @see {@link getCurrencySymbol} - * @see {@link formatCurrency} - * - * @usageNotes - * The following code shows how the pipe transforms numbers - * into text strings, according to various format specifications, - * where the caller's default locale is `en-US`. - * - * - * - * @publicApi - */ -class CurrencyPipe { - constructor(_locale, _defaultCurrencyCode = 'USD') { - this._locale = _locale; - this._defaultCurrencyCode = _defaultCurrencyCode; - } - /** - * - * @param value The number to be formatted as currency. - * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code, - * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be - * configured using the `DEFAULT_CURRENCY_CODE` injection token. - * @param display The format for the currency indicator. One of the following: - * - `code`: Show the code (such as `USD`). - * - `symbol`(default): Show the symbol (such as `$`). - * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their - * currency. - * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the - * locale has no narrow symbol, uses the standard symbol for the locale. - * - String: Use the given string value instead of a code or a symbol. - * For example, an empty string will suppress the currency & symbol. - * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`. - * - * @param digitsInfo Decimal representation options, specified by a string - * in the following format:
    - * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}. - * - `minIntegerDigits`: The minimum number of integer digits before the decimal point. - * Default is `1`. - * - `minFractionDigits`: The minimum number of digits after the decimal point. - * Default is `2`. - * - `maxFractionDigits`: The maximum number of digits after the decimal point. - * Default is `2`. - * If not provided, the number will be formatted with the proper amount of digits, - * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies. - * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none. - * @param locale A locale code for the locale format rules to use. - * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default. - * See [Setting your app locale](guide/i18n-common-locale-id). - */ - transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) { - if (!isValue(value)) return null; - locale = locale || this._locale; - if (typeof display === 'boolean') { - if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) { - console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".`); - } - display = display ? 'symbol' : 'code'; - } - let currency = currencyCode || this._defaultCurrencyCode; - if (display !== 'code') { - if (display === 'symbol' || display === 'symbol-narrow') { - currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale); - } else { - currency = display; - } - } - try { - const num = strToNumber(value); - return formatCurrency(num, locale, currency, currencyCode, digitsInfo); - } catch (error) { - throw invalidPipeArgumentError(CurrencyPipe, error.message); - } - } -} -CurrencyPipe.ɵfac = function CurrencyPipe_Factory(t) { - return new (t || CurrencyPipe)(_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID, 16), _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdirectiveInject"](_angular_core__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_CURRENCY_CODE, 16)); -}; -CurrencyPipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "currency", - type: CurrencyPipe, - pure: true, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CurrencyPipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'currency', - standalone: true - }] - }], function () { - return [{ - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.LOCALE_ID] - }] - }, { - type: undefined, - decorators: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Inject, - args: [_angular_core__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_CURRENCY_CODE] - }] - }]; - }, null); -})(); -function isValue(value) { - return !(value == null || value === '' || value !== value); -} -/** - * Transforms a string into a number (if needed). - */ -function strToNumber(value) { - // Convert strings to numbers - if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) { - return Number(value); - } - if (typeof value !== 'number') { - throw new Error(`${value} is not a number`); - } - return value; -} - -/** - * @ngModule CommonModule - * @description - * - * Creates a new `Array` or `String` containing a subset (slice) of the elements. - * - * @usageNotes - * - * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()` - * and `String.prototype.slice()`. - * - * When operating on an `Array`, the returned `Array` is always a copy even when all - * the elements are being returned. - * - * When operating on a blank value, the pipe returns the blank value. - * - * ### List Example - * - * This `ngFor` example: - * - * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'} - * - * produces the following: - * - * ```html - *
  • b
  • - *
  • c
  • - * ``` - * - * ### String Examples - * - * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'} - * - * @publicApi - */ -class SlicePipe { - transform(value, start, end) { - if (value == null) return null; - if (!this.supports(value)) { - throw invalidPipeArgumentError(SlicePipe, value); - } - return value.slice(start, end); - } - supports(obj) { - return typeof obj === 'string' || Array.isArray(obj); - } -} -SlicePipe.ɵfac = function SlicePipe_Factory(t) { - return new (t || SlicePipe)(); -}; -SlicePipe.ɵpipe = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefinePipe"]({ - name: "slice", - type: SlicePipe, - pure: false, - standalone: true -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](SlicePipe, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Pipe, - args: [{ - name: 'slice', - pure: false, - standalone: true - }] - }], null, null); -})(); - -/** - * @module - * @description - * This module provides a set of common Pipes. - */ -/** - * A collection of Angular pipes that are likely to be used in each and every application. - */ -const COMMON_PIPES = [AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe]; - -// Note: This does not contain the location providers, -// as they need some platform specific implementations to work. -/** - * Exports all the basic Angular directives and pipes, - * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on. - * Re-exported by `BrowserModule`, which is included automatically in the root - * `AppModule` when you create a new app with the CLI `new` command. - * - * @publicApi - */ -class CommonModule {} -CommonModule.ɵfac = function CommonModule_Factory(t) { - return new (t || CommonModule)(); -}; -CommonModule.ɵmod = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineNgModule"]({ - type: CommonModule -}); -CommonModule.ɵinj = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjector"]({}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](CommonModule, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.NgModule, - args: [{ - imports: [COMMON_DIRECTIVES, COMMON_PIPES], - exports: [COMMON_DIRECTIVES, COMMON_PIPES] - }] - }], null, null); -})(); -const PLATFORM_BROWSER_ID = 'browser'; -const PLATFORM_SERVER_ID = 'server'; -const PLATFORM_WORKER_APP_ID = 'browserWorkerApp'; -const PLATFORM_WORKER_UI_ID = 'browserWorkerUi'; -/** - * Returns whether a platform id represents a browser platform. - * @publicApi - */ -function isPlatformBrowser(platformId) { - return platformId === PLATFORM_BROWSER_ID; -} -/** - * Returns whether a platform id represents a server platform. - * @publicApi - */ -function isPlatformServer(platformId) { - return platformId === PLATFORM_SERVER_ID; -} -/** - * Returns whether a platform id represents a web worker app platform. - * @publicApi - * @deprecated This function serves no purpose since the removal of the Webworker platform. It will - * always return `false`. - */ -function isPlatformWorkerApp(platformId) { - return platformId === PLATFORM_WORKER_APP_ID; -} -/** - * Returns whether a platform id represents a web worker UI platform. - * @publicApi - * @deprecated This function serves no purpose since the removal of the Webworker platform. It will - * always return `false`. - */ -function isPlatformWorkerUi(platformId) { - return platformId === PLATFORM_WORKER_UI_ID; -} - -/** - * @module - * @description - * Entry point for all public APIs of the common package. - */ -/** - * @publicApi - */ -const VERSION = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.Version('16.1.8'); - -/** - * Defines a scroll position manager. Implemented by `BrowserViewportScroller`. - * - * @publicApi - */ -class ViewportScroller {} -/** - * Manages the scroll position for a browser window. - */ -// De-sugared tree-shakable injection -// See #23917 -/** @nocollapse */ -ViewportScroller.ɵprov = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"])({ - token: ViewportScroller, - providedIn: 'root', - factory: () => new BrowserViewportScroller((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵinject"])(DOCUMENT), window) -}); -class BrowserViewportScroller { - constructor(document, window) { - this.document = document; - this.window = window; - this.offset = () => [0, 0]; - } - /** - * Configures the top offset used when scrolling to an anchor. - * @param offset A position in screen coordinates (a tuple with x and y values) - * or a function that returns the top offset position. - * - */ - setOffset(offset) { - if (Array.isArray(offset)) { - this.offset = () => offset; - } else { - this.offset = offset; - } - } - /** - * Retrieves the current scroll position. - * @returns The position in screen coordinates. - */ - getScrollPosition() { - if (this.supportsScrolling()) { - return [this.window.pageXOffset, this.window.pageYOffset]; - } else { - return [0, 0]; - } - } - /** - * Sets the scroll position. - * @param position The new position in screen coordinates. - */ - scrollToPosition(position) { - if (this.supportsScrolling()) { - this.window.scrollTo(position[0], position[1]); - } - } - /** - * Scrolls to an element and attempts to focus the element. - * - * Note that the function name here is misleading in that the target string may be an ID for a - * non-anchor element. - * - * @param target The ID of an element or name of the anchor. - * - * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document - * @see https://html.spec.whatwg.org/#scroll-to-fragid - */ - scrollToAnchor(target) { - if (!this.supportsScrolling()) { - return; - } - const elSelected = findAnchorFromDocument(this.document, target); - if (elSelected) { - this.scrollToElement(elSelected); - // After scrolling to the element, the spec dictates that we follow the focus steps for the - // target. Rather than following the robust steps, simply attempt focus. - // - // @see https://html.spec.whatwg.org/#get-the-focusable-area - // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus - // @see https://html.spec.whatwg.org/#focusable-area - elSelected.focus(); - } - } - /** - * Disables automatic scroll restoration provided by the browser. - */ - setHistoryScrollRestoration(scrollRestoration) { - if (this.supportScrollRestoration()) { - const history = this.window.history; - if (history && history.scrollRestoration) { - history.scrollRestoration = scrollRestoration; - } - } - } - /** - * Scrolls to an element using the native offset and the specified offset set on this scroller. - * - * The offset can be used when we know that there is a floating header and scrolling naively to an - * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header. - */ - scrollToElement(el) { - const rect = el.getBoundingClientRect(); - const left = rect.left + this.window.pageXOffset; - const top = rect.top + this.window.pageYOffset; - const offset = this.offset(); - this.window.scrollTo(left - offset[0], top - offset[1]); - } - /** - * We only support scroll restoration when we can get a hold of window. - * This means that we do not support this behavior when running in a web worker. - * - * Lifting this restriction right now would require more changes in the dom adapter. - * Since webworkers aren't widely used, we will lift it once RouterScroller is - * battle-tested. - */ - supportScrollRestoration() { - try { - if (!this.supportsScrolling()) { - return false; - } - // The `scrollRestoration` property could be on the `history` instance or its prototype. - const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) || getScrollRestorationProperty(Object.getPrototypeOf(this.window.history)); - // We can write to the `scrollRestoration` property if it is a writable data field or it has a - // setter function. - return !!scrollRestorationDescriptor && !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set); - } catch { - return false; - } - } - supportsScrolling() { - try { - return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window; - } catch { - return false; - } - } -} -function getScrollRestorationProperty(obj) { - return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration'); -} -function findAnchorFromDocument(document, target) { - const documentResult = document.getElementById(target) || document.getElementsByName(target)[0]; - if (documentResult) { - return documentResult; - } - // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we - // have to traverse the DOM manually and do the lookup through the shadow roots. - if (typeof document.createTreeWalker === 'function' && document.body && typeof document.body.attachShadow === 'function') { - const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT); - let currentNode = treeWalker.currentNode; - while (currentNode) { - const shadowRoot = currentNode.shadowRoot; - if (shadowRoot) { - // Note that `ShadowRoot` doesn't support `getElementsByName` - // so we have to fall back to `querySelector`. - const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name="${target}"]`); - if (result) { - return result; - } - } - currentNode = treeWalker.nextNode(); - } - } - return null; -} -/** - * Provides an empty implementation of the viewport scroller. - */ -class NullViewportScroller { - /** - * Empty implementation - */ - setOffset(offset) {} - /** - * Empty implementation - */ - getScrollPosition() { - return [0, 0]; - } - /** - * Empty implementation - */ - scrollToPosition(position) {} - /** - * Empty implementation - */ - scrollToAnchor(anchor) {} - /** - * Empty implementation - */ - setHistoryScrollRestoration(scrollRestoration) {} -} - -/** - * A wrapper around the `XMLHttpRequest` constructor. - * - * @publicApi - */ -class XhrFactory {} - -// Converts a string that represents a URL into a URL class instance. -function getUrl(src, win) { - // Don't use a base URL is the URL is absolute. - return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href); -} -// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`). -function isAbsoluteUrl(src) { - return /^https?:\/\//.test(src); -} -// Given a URL, extract the hostname part. -// If a URL is a relative one - the URL is returned as is. -function extractHostname(url) { - return isAbsoluteUrl(url) ? new URL(url).hostname : url; -} -function isValidPath(path) { - const isString = typeof path === 'string'; - if (!isString || path.trim() === '') { - return false; - } - // Calling new URL() will throw if the path string is malformed - try { - const url = new URL(path); - return true; - } catch { - return false; - } -} -function normalizePath(path) { - return path.endsWith('/') ? path.slice(0, -1) : path; -} -function normalizeSrc(src) { - return src.startsWith('/') ? src.slice(1) : src; -} - -/** - * Noop image loader that does no transformation to the original src and just returns it as is. - * This loader is used as a default one if more specific logic is not provided in an app config. - * - * @see {@link ImageLoader} - * @see {@link NgOptimizedImage} - */ -const noopImageLoader = config => config.src; -/** - * Injection token that configures the image loader function. - * - * @see {@link ImageLoader} - * @see {@link NgOptimizedImage} - * @publicApi - */ -const IMAGE_LOADER = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('ImageLoader', { - providedIn: 'root', - factory: () => noopImageLoader -}); -/** - * Internal helper function that makes it easier to introduce custom image loaders for the - * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI - * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI - * tokens managing preconnect check functionality. - * @param buildUrlFn a function returning a full URL based on loader's configuration - * @param exampleUrls example of full URLs for a given loader (used in error messages) - * @returns a set of DI providers corresponding to the configured image loader - */ -function createImageLoader(buildUrlFn, exampleUrls) { - return function provideImageLoader(path) { - if (!isValidPath(path)) { - throwInvalidPathError(path, exampleUrls || []); - } - // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in - // the individual loader functions. - path = normalizePath(path); - const loaderFn = config => { - if (isAbsoluteUrl(config.src)) { - // Image loader functions expect an image file name (e.g. `my-image.png`) - // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input, - // so the final absolute URL can be constructed. - // When an absolute URL is provided instead - the loader can not - // build a final URL, thus the error is thrown to indicate that. - throwUnexpectedAbsoluteUrlError(path, config.src); - } - return buildUrlFn(path, { - ...config, - src: normalizeSrc(config.src) - }); - }; - const providers = [{ - provide: IMAGE_LOADER, - useValue: loaderFn - }]; - return providers; - }; -} -function throwInvalidPathError(path, exampleUrls) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode && `Image loader has detected an invalid path (\`${path}\`). ` + `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`); -} -function throwUnexpectedAbsoluteUrlError(path, url) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode && `Image loader has detected a \`\` tag with an invalid \`ngSrc\` attribute: ${url}. ` + `This image loader expects \`ngSrc\` to be a relative URL - ` + `however the provided value is an absolute URL. ` + `To fix this, provide \`ngSrc\` as a path relative to the base URL ` + `configured for this loader (\`${path}\`).`); -} - -/** - * Function that generates an ImageLoader for [Cloudflare Image - * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular - * provider. Note: Cloudflare has multiple image products - this provider is specifically for - * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish. - * - * @param path Your domain name, e.g. https://mysite.com - * @returns Provider that provides an ImageLoader function - * - * @publicApi - */ -const provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined); -function createCloudflareUrl(path, config) { - let params = `format=auto`; - if (config.width) { - params += `,width=${config.width}`; - } - // Cloudflare image URLs format: - // https://developers.cloudflare.com/images/image-resizing/url-format/ - return `${path}/cdn-cgi/image/${params}/${config.src}`; -} - -/** - * Name and URL tester for Cloudinary. - */ -const cloudinaryLoaderInfo = { - name: 'Cloudinary', - testUrl: isCloudinaryUrl -}; -const CLOUDINARY_LOADER_REGEX = /https?\:\/\/[^\/]+\.cloudinary\.com\/.+/; -/** - * Tests whether a URL is from Cloudinary CDN. - */ -function isCloudinaryUrl(url) { - return CLOUDINARY_LOADER_REGEX.test(url); -} -/** - * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider. - * - * @param path Base URL of your Cloudinary images - * This URL should match one of the following formats: - * https://res.cloudinary.com/mysite - * https://mysite.cloudinary.com - * https://subdomain.mysite.com - * @returns Set of providers to configure the Cloudinary loader. - * - * @publicApi - */ -const provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ? ['https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com', 'https://subdomain.mysite.com'] : undefined); -function createCloudinaryUrl(path, config) { - // Cloudinary image URLformat: - // https://cloudinary.com/documentation/image_transformations#transformation_url_structure - // Example of a Cloudinary image URL: - // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png - let params = `f_auto,q_auto`; // sets image format and quality to "auto" - if (config.width) { - params += `,w_${config.width}`; - } - return `${path}/image/upload/${params}/${config.src}`; -} - -/** - * Name and URL tester for ImageKit. - */ -const imageKitLoaderInfo = { - name: 'ImageKit', - testUrl: isImageKitUrl -}; -const IMAGE_KIT_LOADER_REGEX = /https?\:\/\/[^\/]+\.imagekit\.io\/.+/; -/** - * Tests whether a URL is from ImageKit CDN. - */ -function isImageKitUrl(url) { - return IMAGE_KIT_LOADER_REGEX.test(url); -} -/** - * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider. - * - * @param path Base URL of your ImageKit images - * This URL should match one of the following formats: - * https://ik.imagekit.io/myaccount - * https://subdomain.mysite.com - * @returns Set of providers to configure the ImageKit loader. - * - * @publicApi - */ -const provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined); -function createImagekitUrl(path, config) { - // Example of an ImageKit image URL: - // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg - const { - src, - width - } = config; - let urlSegments; - if (width) { - const params = `tr:w-${width}`; - urlSegments = [path, params, src]; - } else { - urlSegments = [path, src]; - } - return urlSegments.join('/'); -} - -/** - * Name and URL tester for Imgix. - */ -const imgixLoaderInfo = { - name: 'Imgix', - testUrl: isImgixUrl -}; -const IMGIX_LOADER_REGEX = /https?\:\/\/[^\/]+\.imgix\.net\/.+/; -/** - * Tests whether a URL is from Imgix CDN. - */ -function isImgixUrl(url) { - return IMGIX_LOADER_REGEX.test(url); -} -/** - * Function that generates an ImageLoader for Imgix and turns it into an Angular provider. - * - * @param path path to the desired Imgix origin, - * e.g. https://somepath.imgix.net or https://images.mysite.com - * @returns Set of providers to configure the Imgix loader. - * - * @publicApi - */ -const provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined); -function createImgixUrl(path, config) { - const url = new URL(`${path}/${config.src}`); - // This setting ensures the smallest allowable format is set. - url.searchParams.set('auto', 'format'); - if (config.width) { - url.searchParams.set('w', config.width.toString()); - } - return url.href; -} - -// Assembles directive details string, useful for error messages. -function imgDirectiveDetails(ngSrc, includeNgSrc = true) { - const ngSrcInfo = includeNgSrc ? `(activated on an element with the \`ngSrc="${ngSrc}"\`) ` : ''; - return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`; -} - -/** - * Asserts that the application is in development mode. Throws an error if the application is in - * production mode. This assert can be used to make sure that there is no dev-mode code invoked in - * the prod mode accidentally. - */ -function assertDevMode(checkName) { - if (!ngDevMode) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2958 /* RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` + `Please make sure that the prod mode is enabled for production builds.`); - } -} - -/** - * Observer that detects whether an image with `NgOptimizedImage` - * is treated as a Largest Contentful Paint (LCP) element. If so, - * asserts that the image has the `priority` attribute. - * - * Note: this is a dev-mode only class and it does not appear in prod bundles, - * thus there is no `ngDevMode` use in the code. - * - * Based on https://web.dev/lcp/#measure-lcp-in-javascript. - */ -class LCPImageObserver { - constructor() { - // Map of full image URLs -> original `ngSrc` values. - this.images = new Map(); - // Keep track of images for which `console.warn` was produced. - this.alreadyWarned = new Set(); - this.window = null; - this.observer = null; - assertDevMode('LCP checker'); - const win = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(DOCUMENT).defaultView; - if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') { - this.window = win; - this.observer = this.initPerformanceObserver(); - } - } - /** - * Inits PerformanceObserver and subscribes to LCP events. - * Based on https://web.dev/lcp/#measure-lcp-in-javascript - */ - initPerformanceObserver() { - const observer = new PerformanceObserver(entryList => { - const entries = entryList.getEntries(); - if (entries.length === 0) return; - // We use the latest entry produced by the `PerformanceObserver` as the best - // signal on which element is actually an LCP one. As an example, the first image to load on - // a page, by virtue of being the only thing on the page so far, is often a LCP candidate - // and gets reported by PerformanceObserver, but isn't necessarily the LCP element. - const lcpElement = entries[entries.length - 1]; - // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry. - // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint - const imgSrc = lcpElement.element?.src ?? ''; - // Exclude `data:` and `blob:` URLs, since they are not supported by the directive. - if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:')) return; - const imgNgSrc = this.images.get(imgSrc); - if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) { - this.alreadyWarned.add(imgSrc); - logMissingPriorityWarning(imgSrc); - } - }); - observer.observe({ - type: 'largest-contentful-paint', - buffered: true - }); - return observer; - } - registerImage(rewrittenSrc, originalNgSrc) { - if (!this.observer) return; - this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc); - } - unregisterImage(rewrittenSrc) { - if (!this.observer) return; - this.images.delete(getUrl(rewrittenSrc, this.window).href); - } - ngOnDestroy() { - if (!this.observer) return; - this.observer.disconnect(); - this.images.clear(); - this.alreadyWarned.clear(); - } -} -LCPImageObserver.ɵfac = function LCPImageObserver_Factory(t) { - return new (t || LCPImageObserver)(); -}; -LCPImageObserver.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: LCPImageObserver, - factory: LCPImageObserver.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](LCPImageObserver, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return []; - }, null); -})(); -function logMissingPriorityWarning(ngSrc) { - const directiveDetails = imgDirectiveDetails(ngSrc); - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` + `element but was not marked "priority". This image should be marked ` + `"priority" in order to prioritize its loading. ` + `To fix this, add the "priority" attribute.`)); -} - -// Set of origins that are always excluded from the preconnect checks. -const INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']); -/** - * Injection token to configure which origins should be excluded - * from the preconnect checks. It can either be a single string or an array of strings - * to represent a group of origins, for example: - * - * ```typescript - * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'} - * ``` - * - * or: - * - * ```typescript - * {provide: PRECONNECT_CHECK_BLOCKLIST, - * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']} - * ``` - * - * @publicApi - */ -const PRECONNECT_CHECK_BLOCKLIST = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('PRECONNECT_CHECK_BLOCKLIST'); -/** - * Contains the logic to detect whether an image, marked with the "priority" attribute - * has a corresponding `` tag in the `document.head`. - * - * Note: this is a dev-mode only class, which should not appear in prod bundles, - * thus there is no `ngDevMode` use in the code. - */ -class PreconnectLinkChecker { - constructor() { - this.document = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(DOCUMENT); - /** - * Set of tags found on this page. - * The `null` value indicates that there was no DOM query operation performed. - */ - this.preconnectLinks = null; - /* - * Keep track of all already seen origin URLs to avoid repeating the same check. - */ - this.alreadySeen = new Set(); - this.window = null; - this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST); - assertDevMode('preconnect link checker'); - const win = this.document.defaultView; - if (typeof win !== 'undefined') { - this.window = win; - } - const blocklist = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(PRECONNECT_CHECK_BLOCKLIST, { - optional: true - }); - if (blocklist) { - this.populateBlocklist(blocklist); - } - } - populateBlocklist(origins) { - if (Array.isArray(origins)) { - deepForEach(origins, origin => { - this.blocklist.add(extractHostname(origin)); - }); - } else { - this.blocklist.add(extractHostname(origins)); - } - } - /** - * Checks that a preconnect resource hint exists in the head for the - * given src. - * - * @param rewrittenSrc src formatted with loader - * @param originalNgSrc ngSrc value - */ - assertPreconnect(rewrittenSrc, originalNgSrc) { - if (!this.window) return; - const imgUrl = getUrl(rewrittenSrc, this.window); - if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin)) return; - // Register this origin as seen, so we don't check it again later. - this.alreadySeen.add(imgUrl.origin); - if (!this.preconnectLinks) { - // Note: we query for preconnect links only *once* and cache the results - // for the entire lifespan of an application, since it's unlikely that the - // list would change frequently. This allows to make sure there are no - // performance implications of making extra DOM lookups for each image. - this.preconnectLinks = this.queryPreconnectLinks(); - } - if (!this.preconnectLinks.has(imgUrl.origin)) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` + `image. Preconnecting to the origin(s) that serve priority images ensures that these ` + `images are delivered as soon as possible. To fix this, please add the following ` + `element into the of the document:\n` + ` `)); - } - } - queryPreconnectLinks() { - const preconnectUrls = new Set(); - const selector = 'link[rel=preconnect]'; - const links = Array.from(this.document.querySelectorAll(selector)); - for (let link of links) { - const url = getUrl(link.href, this.window); - preconnectUrls.add(url.origin); - } - return preconnectUrls; - } - ngOnDestroy() { - this.preconnectLinks?.clear(); - this.alreadySeen.clear(); - } -} -PreconnectLinkChecker.ɵfac = function PreconnectLinkChecker_Factory(t) { - return new (t || PreconnectLinkChecker)(); -}; -PreconnectLinkChecker.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: PreconnectLinkChecker, - factory: PreconnectLinkChecker.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](PreconnectLinkChecker, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], function () { - return []; - }, null); -})(); -/** - * Invokes a callback for each element in the array. Also invokes a callback - * recursively for each nested array. - */ -function deepForEach(input, fn) { - for (let value of input) { - Array.isArray(value) ? deepForEach(value, fn) : fn(value); - } -} - -/** - * In SSR scenarios, a preload `` element is generated for priority images. - * Having a large number of preload tags may negatively affect the performance, - * so we warn developers (by throwing an error) if the number of preloaded images - * is above a certain threshold. This const specifies this threshold. - */ -const DEFAULT_PRELOADED_IMAGES_LIMIT = 5; -/** - * Helps to keep track of priority images that already have a corresponding - * preload tag (to avoid generating multiple preload tags with the same URL). - * - * This Set tracks the original src passed into the `ngSrc` input not the src after it has been - * run through the specified `IMAGE_LOADER`. - */ -const PRELOADED_IMAGES = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { - providedIn: 'root', - factory: () => new Set() -}); - -/** - * @description Contains the logic needed to track and add preload link tags to the `` tag. It - * will also track what images have already had preload link tags added so as to not duplicate link - * tags. - * - * In dev mode this service will validate that the number of preloaded images does not exceed the - * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}. - */ -class PreloadLinkCreator { - constructor() { - this.preloadedImages = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(PRELOADED_IMAGES); - this.document = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(DOCUMENT); - } - /** - * @description Add a preload `` to the `` of the `index.html` that is served from the - * server while using Angular Universal and SSR to kick off image loads for high priority images. - * - * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`) - * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset` - * respectively, on the preload `` tag so that the correctly sized image is preloaded from - * the CDN. - * - * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes} - * - * @param renderer The `Renderer2` passed in from the directive - * @param src The original src of the image that is set on the `ngSrc` input. - * @param srcset The parsed and formatted srcset created from the `ngSrcset` input - * @param sizes The value of the `sizes` attribute passed in to the `` tag - */ - createPreloadLinkTag(renderer, src, srcset, sizes) { - if (ngDevMode) { - if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2961 /* RuntimeErrorCode.TOO_MANY_PRELOADED_IMAGES */, ngDevMode && `The \`NgOptimizedImage\` directive has detected that more than ` + `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` + `This might negatively affect an overall performance of the page. ` + `To fix this, remove the "priority" attribute from images with less priority.`); - } - } - if (this.preloadedImages.has(src)) { - return; - } - this.preloadedImages.add(src); - const preload = renderer.createElement('link'); - renderer.setAttribute(preload, 'as', 'image'); - renderer.setAttribute(preload, 'href', src); - renderer.setAttribute(preload, 'rel', 'preload'); - renderer.setAttribute(preload, 'fetchpriority', 'high'); - if (sizes) { - renderer.setAttribute(preload, 'imageSizes', sizes); - } - if (srcset) { - renderer.setAttribute(preload, 'imageSrcset', srcset); - } - renderer.appendChild(this.document.head, preload); - } -} -PreloadLinkCreator.ɵfac = function PreloadLinkCreator_Factory(t) { - return new (t || PreloadLinkCreator)(); -}; -PreloadLinkCreator.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineInjectable"]({ - token: PreloadLinkCreator, - factory: PreloadLinkCreator.ɵfac, - providedIn: 'root' -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](PreloadLinkCreator, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Injectable, - args: [{ - providedIn: 'root' - }] - }], null, null); -})(); - -/** - * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive, - * an error is thrown. The image content (as a string) might be very long, thus making - * it hard to read an error message if the entire string is included. This const defines - * the number of characters that should be included into the error message. The rest - * of the content is truncated. - */ -const BASE64_IMG_MAX_LENGTH_IN_ERROR = 50; -/** - * RegExpr to determine whether a src in a srcset is using width descriptors. - * Should match something like: "100w, 200w". - */ -const VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\s*\d+w\s*(,|$)){1,})$/; -/** - * RegExpr to determine whether a src in a srcset is using density descriptors. - * Should match something like: "1x, 2x, 50x". Also supports decimals like "1.5x, 1.50x". - */ -const VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\s*\d+(\.\d+)?x\s*(,|$)){1,})$/; -/** - * Srcset values with a density descriptor higher than this value will actively - * throw an error. Such densities are not permitted as they cause image sizes - * to be unreasonably large and slow down LCP. - */ -const ABSOLUTE_SRCSET_DENSITY_CAP = 3; -/** - * Used only in error message text to communicate best practices, as we will - * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP. - */ -const RECOMMENDED_SRCSET_DENSITY_CAP = 2; -/** - * Used in generating automatic density-based srcsets - */ -const DENSITY_SRCSET_MULTIPLIERS = [1, 2]; -/** - * Used to determine which breakpoints to use on full-width images - */ -const VIEWPORT_BREAKPOINT_CUTOFF = 640; -/** - * Used to determine whether two aspect ratios are similar in value. - */ -const ASPECT_RATIO_TOLERANCE = .1; -/** - * Used to determine whether the image has been requested at an overly - * large size compared to the actual rendered image size (after taking - * into account a typical device pixel ratio). In pixels. - */ -const OVERSIZED_IMAGE_TOLERANCE = 1000; -/** - * Used to limit automatic srcset generation of very large sources for - * fixed-size images. In pixels. - */ -const FIXED_SRCSET_WIDTH_LIMIT = 1920; -const FIXED_SRCSET_HEIGHT_LIMIT = 1080; -/** Info about built-in loaders we can test for. */ -const BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo]; -const defaultConfig = { - breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840] -}; -/** - * Injection token that configures the image optimized image functionality. - * - * @see {@link NgOptimizedImage} - * @publicApi - * @developerPreview - */ -const IMAGE_CONFIG = new _angular_core__WEBPACK_IMPORTED_MODULE_0__.InjectionToken('ImageConfig', { - providedIn: 'root', - factory: () => defaultConfig -}); -/** - * Directive that improves image loading performance by enforcing best practices. - * - * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is - * prioritized by: - * - Automatically setting the `fetchpriority` attribute on the `` tag - * - Lazy loading non-priority images by default - * - Asserting that there is a corresponding preconnect link tag in the document head - * - * In addition, the directive: - * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided - * - Automatically generates a srcset - * - Requires that `width` and `height` are set - * - Warns if `width` or `height` have been set incorrectly - * - Warns if the image will be visually distorted when rendered - * - * @usageNotes - * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can - * be imported directly. - * - * Follow the steps below to enable and use the directive: - * 1. Import it into the necessary NgModule or a standalone Component. - * 2. Optionally provide an `ImageLoader` if you use an image hosting service. - * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`. - * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image - * download. - * - * Step 1: import the `NgOptimizedImage` directive. - * - * ```typescript - * import { NgOptimizedImage } from '@angular/common'; - * - * // Include it into the necessary NgModule - * @NgModule({ - * imports: [NgOptimizedImage], - * }) - * class AppModule {} - * - * // ... or a standalone Component - * @Component({ - * standalone: true - * imports: [NgOptimizedImage], - * }) - * class MyStandaloneComponent {} - * ``` - * - * Step 2: configure a loader. - * - * To use the **default loader**: no additional code changes are necessary. The URL returned by the - * generic loader will always match the value of "src". In other words, this loader applies no - * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is. - * - * To use an existing loader for a **third-party image service**: add the provider factory for your - * chosen service to the `providers` array. In the example below, the Imgix loader is used: - * - * ```typescript - * import {provideImgixLoader} from '@angular/common'; - * - * // Call the function and add the result to the `providers` array: - * providers: [ - * provideImgixLoader("https://my.base.url/"), - * ], - * ``` - * - * The `NgOptimizedImage` directive provides the following functions: - * - `provideCloudflareLoader` - * - `provideCloudinaryLoader` - * - `provideImageKitLoader` - * - `provideImgixLoader` - * - * If you use a different image provider, you can create a custom loader function as described - * below. - * - * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI - * token. - * - * ```typescript - * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common'; - * - * // Configure the loader using the `IMAGE_LOADER` token. - * providers: [ - * { - * provide: IMAGE_LOADER, - * useValue: (config: ImageLoaderConfig) => { - * return `https://example.com/${config.src}-${config.width}.jpg}`; - * } - * }, - * ], - * ``` - * - * Step 3: update `` tags in templates to use `ngSrc` instead of `src`. - * - * ``` - * - * ``` - * - * @publicApi - */ -class NgOptimizedImage { - constructor() { - this.imageLoader = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(IMAGE_LOADER); - this.config = processConfig((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(IMAGE_CONFIG)); - this.renderer = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_0__.Renderer2); - this.imgElement = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_0__.ElementRef).nativeElement; - this.injector = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_0__.Injector); - this.isServer = isPlatformServer((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_0__.PLATFORM_ID)); - this.preloadLinkCreator = (0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.inject)(PreloadLinkCreator); - // a LCP image observer - should be injected only in the dev mode - this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null; - /** - * Calculate the rewritten `src` once and store it. - * This is needed to avoid repetitive calculations and make sure the directive cleanup in the - * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other - * instance that might be already destroyed). - */ - this._renderedSrc = null; - /** - * Indicates whether this image should have a high priority. - */ - this.priority = false; - /** - * Disables automatic srcset generation for this image. - */ - this.disableOptimizedSrcset = false; - /** - * Sets the image to "fill mode", which eliminates the height/width requirement and adds - * styles such that the image fills its containing element. - * - * @developerPreview - */ - this.fill = false; - } - /** @nodoc */ - ngOnInit() { - if (ngDevMode) { - const ngZone = this.injector.get(_angular_core__WEBPACK_IMPORTED_MODULE_0__.NgZone); - assertNonEmptyInput(this, 'ngSrc', this.ngSrc); - assertValidNgSrcset(this, this.ngSrcset); - assertNoConflictingSrc(this); - if (this.ngSrcset) { - assertNoConflictingSrcset(this); - } - assertNotBase64Image(this); - assertNotBlobUrl(this); - if (this.fill) { - assertEmptyWidthAndHeight(this); - // This leaves the Angular zone to avoid triggering unnecessary change detection cycles when - // `load` tasks are invoked on images. - ngZone.runOutsideAngular(() => assertNonZeroRenderedHeight(this, this.imgElement, this.renderer)); - } else { - assertNonEmptyWidthAndHeight(this); - if (this.height !== undefined) { - assertGreaterThanZero(this, this.height, 'height'); - } - if (this.width !== undefined) { - assertGreaterThanZero(this, this.width, 'width'); - } - // Only check for distorted images when not in fill mode, where - // images may be intentionally stretched, cropped or letterboxed. - ngZone.runOutsideAngular(() => assertNoImageDistortion(this, this.imgElement, this.renderer)); - } - assertValidLoadingInput(this); - if (!this.ngSrcset) { - assertNoComplexSizes(this); - } - assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader); - assertNoNgSrcsetWithoutLoader(this, this.imageLoader); - assertNoLoaderParamsWithoutLoader(this, this.imageLoader); - if (this.priority) { - const checker = this.injector.get(PreconnectLinkChecker); - checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc); - } else { - // Monitor whether an image is an LCP element only in case - // the `priority` attribute is missing. Otherwise, an image - // has the necessary settings and no extra checks are required. - if (this.lcpObserver !== null) { - ngZone.runOutsideAngular(() => { - this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc); - }); - } - } - } - this.setHostAttributes(); - } - setHostAttributes() { - // Must set width/height explicitly in case they are bound (in which case they will - // only be reflected and not found by the browser) - if (this.fill) { - if (!this.sizes) { - this.sizes = '100vw'; - } - } else { - this.setHostAttribute('width', this.width.toString()); - this.setHostAttribute('height', this.height.toString()); - } - this.setHostAttribute('loading', this.getLoadingBehavior()); - this.setHostAttribute('fetchpriority', this.getFetchPriority()); - // The `data-ng-img` attribute flags an image as using the directive, to allow - // for analysis of the directive's performance. - this.setHostAttribute('ng-img', 'true'); - // The `src` and `srcset` attributes should be set last since other attributes - // could affect the image's loading behavior. - const rewrittenSrc = this.getRewrittenSrc(); - this.setHostAttribute('src', rewrittenSrc); - let rewrittenSrcset = undefined; - if (this.sizes) { - this.setHostAttribute('sizes', this.sizes); - } - if (this.ngSrcset) { - rewrittenSrcset = this.getRewrittenSrcset(); - } else if (this.shouldGenerateAutomaticSrcset()) { - rewrittenSrcset = this.getAutomaticSrcset(); - } - if (rewrittenSrcset) { - this.setHostAttribute('srcset', rewrittenSrcset); - } - if (this.isServer && this.priority) { - this.preloadLinkCreator.createPreloadLinkTag(this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes); - } - } - /** @nodoc */ - ngOnChanges(changes) { - if (ngDevMode) { - assertNoPostInitInputChange(this, changes, ['ngSrc', 'ngSrcset', 'width', 'height', 'priority', 'fill', 'loading', 'sizes', 'loaderParams', 'disableOptimizedSrcset']); - } - } - callImageLoader(configWithoutCustomParams) { - let augmentedConfig = configWithoutCustomParams; - if (this.loaderParams) { - augmentedConfig.loaderParams = this.loaderParams; - } - return this.imageLoader(augmentedConfig); - } - getLoadingBehavior() { - if (!this.priority && this.loading !== undefined) { - return this.loading; - } - return this.priority ? 'eager' : 'lazy'; - } - getFetchPriority() { - return this.priority ? 'high' : 'auto'; - } - getRewrittenSrc() { - // ImageLoaderConfig supports setting a width property. However, we're not setting width here - // because if the developer uses rendered width instead of intrinsic width in the HTML width - // attribute, the image requested may be too small for 2x+ screens. - if (!this._renderedSrc) { - const imgConfig = { - src: this.ngSrc - }; - // Cache calculated image src to reuse it later in the code. - this._renderedSrc = this.callImageLoader(imgConfig); - } - return this._renderedSrc; - } - getRewrittenSrcset() { - const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset); - const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => { - srcStr = srcStr.trim(); - const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width; - return `${this.callImageLoader({ - src: this.ngSrc, - width - })} ${srcStr}`; - }); - return finalSrcs.join(', '); - } - getAutomaticSrcset() { - if (this.sizes) { - return this.getResponsiveSrcset(); - } else { - return this.getFixedSrcset(); - } - } - getResponsiveSrcset() { - const { - breakpoints - } = this.config; - let filteredBreakpoints = breakpoints; - if (this.sizes?.trim() === '100vw') { - // Since this is a full-screen-width image, our srcset only needs to include - // breakpoints with full viewport widths. - filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF); - } - const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ - src: this.ngSrc, - width: bp - })} ${bp}w`); - return finalSrcs.join(', '); - } - getFixedSrcset() { - const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => `${this.callImageLoader({ - src: this.ngSrc, - width: this.width * multiplier - })} ${multiplier}x`); - return finalSrcs.join(', '); - } - shouldGenerateAutomaticSrcset() { - return !this.disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader && !(this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT); - } - /** @nodoc */ - ngOnDestroy() { - if (ngDevMode) { - if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) { - this.lcpObserver.unregisterImage(this._renderedSrc); - } - } - } - setHostAttribute(name, value) { - this.renderer.setAttribute(this.imgElement, name, value); - } -} -NgOptimizedImage.ɵfac = function NgOptimizedImage_Factory(t) { - return new (t || NgOptimizedImage)(); -}; -NgOptimizedImage.ɵdir = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵdefineDirective"]({ - type: NgOptimizedImage, - selectors: [["img", "ngSrc", ""]], - hostVars: 8, - hostBindings: function NgOptimizedImage_HostBindings(rf, ctx) { - if (rf & 2) { - _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵstyleProp"]("position", ctx.fill ? "absolute" : null)("width", ctx.fill ? "100%" : null)("height", ctx.fill ? "100%" : null)("inset", ctx.fill ? "0px" : null); - } - }, - inputs: { - ngSrc: "ngSrc", - ngSrcset: "ngSrcset", - sizes: "sizes", - width: ["width", "width", _angular_core__WEBPACK_IMPORTED_MODULE_0__.numberAttribute], - height: ["height", "height", _angular_core__WEBPACK_IMPORTED_MODULE_0__.numberAttribute], - loading: "loading", - priority: ["priority", "priority", _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute], - loaderParams: "loaderParams", - disableOptimizedSrcset: ["disableOptimizedSrcset", "disableOptimizedSrcset", _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute], - fill: ["fill", "fill", _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute], - src: "src", - srcset: "srcset" - }, - standalone: true, - features: [_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵInputTransformsFeature"], _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵɵNgOnChangesFeature"]] -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵsetClassMetadata"](NgOptimizedImage, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Directive, - args: [{ - standalone: true, - selector: 'img[ngSrc]', - host: { - '[style.position]': 'fill ? "absolute" : null', - '[style.width]': 'fill ? "100%" : null', - '[style.height]': 'fill ? "100%" : null', - '[style.inset]': 'fill ? "0px" : null' - } - }] - }], null, { - ngSrc: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - required: true - }] - }], - ngSrcset: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - sizes: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - width: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - transform: _angular_core__WEBPACK_IMPORTED_MODULE_0__.numberAttribute - }] - }], - height: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - transform: _angular_core__WEBPACK_IMPORTED_MODULE_0__.numberAttribute - }] - }], - loading: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - priority: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - transform: _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute - }] - }], - loaderParams: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - disableOptimizedSrcset: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - transform: _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute - }] - }], - fill: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input, - args: [{ - transform: _angular_core__WEBPACK_IMPORTED_MODULE_0__.booleanAttribute - }] - }], - src: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }], - srcset: [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_0__.Input - }] - }); -})(); -/***** Helpers *****/ -/** - * Sorts provided config breakpoints and uses defaults. - */ -function processConfig(config) { - let sortedBreakpoints = {}; - if (config.breakpoints) { - sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b); - } - return Object.assign({}, defaultConfig, config, sortedBreakpoints); -} -/***** Assert functions *****/ -/** - * Verifies that there is no `src` set on a host element. - */ -function assertNoConflictingSrc(dir) { - if (dir.src) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \`src\` and \`ngSrc\` have been set. ` + `Supplying both of these attributes breaks lazy loading. ` + `The NgOptimizedImage directive sets \`src\` itself based on the value of \`ngSrc\`. ` + `To fix this, please remove the \`src\` attribute.`); - } -} -/** - * Verifies that there is no `srcset` set on a host element. - */ -function assertNoConflictingSrcset(dir) { - if (dir.srcset) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \`srcset\` and \`ngSrcset\` have been set. ` + `Supplying both of these attributes breaks lazy loading. ` + `The NgOptimizedImage directive sets \`srcset\` itself based on the value of ` + `\`ngSrcset\`. To fix this, please remove the \`srcset\` attribute.`); - } -} -/** - * Verifies that the `ngSrc` is not a Base64-encoded image. - */ -function assertNotBase64Image(dir) { - let ngSrc = dir.ngSrc.trim(); - if (ngSrc.startsWith('data:')) { - if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) { - ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...'; - } - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \`ngSrc\` is a Base64-encoded string ` + `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` + `To fix this, disable the NgOptimizedImage directive for this element ` + `by removing \`ngSrc\` and using a standard \`src\` attribute instead.`); - } -} -/** - * Verifies that the 'sizes' only includes responsive values. - */ -function assertNoComplexSizes(dir) { - let sizes = dir.sizes; - if (sizes?.match(/((\)|,)\s|^)\d+px/)) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \`sizes\` was set to a string including ` + `pixel values. For automatic \`srcset\` generation, \`sizes\` must only include responsive ` + `values, such as \`sizes="50vw"\` or \`sizes="(min-width: 768px) 50vw, 100vw"\`. ` + `To fix this, modify the \`sizes\` attribute, or provide your own \`ngSrcset\` value directly.`); - } -} -/** - * Verifies that the `ngSrc` is not a Blob URL. - */ -function assertNotBlobUrl(dir) { - const ngSrc = dir.ngSrc.trim(); - if (ngSrc.startsWith('blob:')) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`ngSrc\` was set to a blob URL (${ngSrc}). ` + `Blob URLs are not supported by the NgOptimizedImage directive. ` + `To fix this, disable the NgOptimizedImage directive for this element ` + `by removing \`ngSrc\` and using a regular \`src\` attribute instead.`); - } -} -/** - * Verifies that the input is set to a non-empty string. - */ -function assertNonEmptyInput(dir, name, value) { - const isString = typeof value === 'string'; - const isEmptyString = isString && value.trim() === ''; - if (!isString || isEmptyString) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`${name}\` has an invalid value ` + `(\`${value}\`). To fix this, change the value to a non-empty string.`); - } -} -/** - * Verifies that the `ngSrcset` is in a valid format, e.g. "100w, 200w" or "1x, 2x". - */ -function assertValidNgSrcset(dir, value) { - if (value == null) return; - assertNonEmptyInput(dir, 'ngSrcset', value); - const stringVal = value; - const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal); - const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal); - if (isValidDensityDescriptor) { - assertUnderDensityCap(dir, stringVal); - } - const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor; - if (!isValidSrcset) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`ngSrcset\` has an invalid value (\`${value}\`). ` + `To fix this, supply \`ngSrcset\` using a comma-separated list of one or more width ` + `descriptors (e.g. "100w, 200w") or density descriptors (e.g. "1x, 2x").`); - } -} -function assertUnderDensityCap(dir, value) { - const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP); - if (!underDensityCap) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`ngSrcset\` contains an unsupported image density:` + `\`${value}\`. NgOptimizedImage generally recommends a max image density of ` + `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` + `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` + `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` + `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` + `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`); - } -} -/** - * Creates a `RuntimeError` instance to represent a situation when an input is set after - * the directive has initialized. - */ -function postInitInputChangeError(dir, inputName) { - let reason; - if (inputName === 'width' || inputName === 'height') { - reason = `Changing \`${inputName}\` may result in different attribute value ` + `applied to the underlying image element and cause layout shifts on a page.`; - } else { - reason = `Changing the \`${inputName}\` would have no effect on the underlying ` + `image element, because the resource loading has already occurred.`; - } - return new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \`${inputName}\` was updated after initialization. ` + `The NgOptimizedImage directive will not react to this input change. ${reason} ` + `To fix this, either switch \`${inputName}\` to a static value ` + `or wrap the image element in an *ngIf that is gated on the necessary value.`); -} -/** - * Verify that none of the listed inputs has changed. - */ -function assertNoPostInitInputChange(dir, changes, inputs) { - inputs.forEach(input => { - const isUpdated = changes.hasOwnProperty(input); - if (isUpdated && !changes[input].isFirstChange()) { - if (input === 'ngSrc') { - // When the `ngSrc` input changes, we detect that only in the - // `ngOnChanges` hook, thus the `ngSrc` is already set. We use - // `ngSrc` in the error message, so we use a previous value, but - // not the updated one in it. - dir = { - ngSrc: changes[input].previousValue - }; - } - throw postInitInputChangeError(dir, input); - } - }); -} -/** - * Verifies that a specified input is a number greater than 0. - */ -function assertGreaterThanZero(dir, inputValue, inputName) { - const validNumber = typeof inputValue === 'number' && inputValue > 0; - const validString = typeof inputValue === 'string' && /^\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0; - if (!validNumber && !validString) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \`${inputName}\` has an invalid value. ` + `To fix this, provide \`${inputName}\` as a number greater than 0.`); - } -} -/** - * Verifies that the rendered image is not visually distorted. Effectively this is checking: - * - Whether the "width" and "height" attributes reflect the actual dimensions of the image. - * - Whether image styling is "correct" (see below for a longer explanation). - */ -function assertNoImageDistortion(dir, img, renderer) { - const removeListenerFn = renderer.listen(img, 'load', () => { - removeListenerFn(); - const computedStyle = window.getComputedStyle(img); - let renderedWidth = parseFloat(computedStyle.getPropertyValue('width')); - let renderedHeight = parseFloat(computedStyle.getPropertyValue('height')); - const boxSizing = computedStyle.getPropertyValue('box-sizing'); - if (boxSizing === 'border-box') { - const paddingTop = computedStyle.getPropertyValue('padding-top'); - const paddingRight = computedStyle.getPropertyValue('padding-right'); - const paddingBottom = computedStyle.getPropertyValue('padding-bottom'); - const paddingLeft = computedStyle.getPropertyValue('padding-left'); - renderedWidth -= parseFloat(paddingRight) + parseFloat(paddingLeft); - renderedHeight -= parseFloat(paddingTop) + parseFloat(paddingBottom); - } - const renderedAspectRatio = renderedWidth / renderedHeight; - const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0; - const intrinsicWidth = img.naturalWidth; - const intrinsicHeight = img.naturalHeight; - const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight; - const suppliedWidth = dir.width; - const suppliedHeight = dir.height; - const suppliedAspectRatio = suppliedWidth / suppliedHeight; - // Tolerance is used to account for the impact of subpixel rendering. - // Due to subpixel rendering, the rendered, intrinsic, and supplied - // aspect ratios of a correctly configured image may not exactly match. - // For example, a `width=4030 height=3020` image might have a rendered - // size of "1062w, 796.48h". (An aspect ratio of 1.334... vs. 1.333...) - const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE; - const stylingDistortion = nonZeroRenderedDimensions && Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE; - if (inaccurateDimensions) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` + `the aspect ratio indicated by the width and height attributes. ` + `\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` + `(aspect-ratio: ${round(intrinsicAspectRatio)}). \nSupplied width and height attributes: ` + `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${round(suppliedAspectRatio)}). ` + `\nTo fix this, update the width and height attributes.`)); - } else if (stylingDistortion) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` + `does not match the image's intrinsic aspect ratio. ` + `\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` + `(aspect-ratio: ${round(intrinsicAspectRatio)}). \nRendered image size: ` + `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` + `${round(renderedAspectRatio)}). \nThis issue can occur if "width" and "height" ` + `attributes are added to an image without updating the corresponding ` + `image styling. To fix this, adjust image styling. In most cases, ` + `adding "height: auto" or "width: auto" to the image styling will fix ` + `this issue.`)); - } else if (!dir.ngSrcset && nonZeroRenderedDimensions) { - // If `ngSrcset` hasn't been set, sanity check the intrinsic size. - const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth; - const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight; - const oversizedWidth = intrinsicWidth - recommendedWidth >= OVERSIZED_IMAGE_TOLERANCE; - const oversizedHeight = intrinsicHeight - recommendedHeight >= OVERSIZED_IMAGE_TOLERANCE; - if (oversizedWidth || oversizedHeight) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` + `larger than necessary. ` + `\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` + `\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` + `\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` + `\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` + `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` + `or consider using the "ngSrcset" and "sizes" attributes.`)); - } - } - }); -} -/** - * Verifies that a specified input is set. - */ -function assertNonEmptyWidthAndHeight(dir) { - let missingAttributes = []; - if (dir.width === undefined) missingAttributes.push('width'); - if (dir.height === undefined) missingAttributes.push('height'); - if (missingAttributes.length > 0) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` + `are missing: ${missingAttributes.map(attr => `"${attr}"`).join(', ')}. ` + `Including "width" and "height" attributes will prevent image-related layout shifts. ` + `To fix this, include "width" and "height" attributes on the image tag or turn on ` + `"fill" mode with the \`fill\` attribute.`); - } -} -/** - * Verifies that width and height are not set. Used in fill mode, where those attributes don't make - * sense. - */ -function assertEmptyWidthAndHeight(dir) { - if (dir.width || dir.height) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \`height\` and/or \`width\` are present ` + `along with the \`fill\` attribute. Because \`fill\` mode causes an image to fill its containing ` + `element, the size attributes have no effect and should be removed.`); - } -} -/** - * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides - * guidance that this can be caused by the containing element's CSS position property. - */ -function assertNonZeroRenderedHeight(dir, img, renderer) { - const removeListenerFn = renderer.listen(img, 'load', () => { - removeListenerFn(); - const renderedHeight = img.clientHeight; - if (dir.fill && renderedHeight === 0) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` + `This is likely because the containing element does not have the CSS 'position' ` + `property set to one of the following: "relative", "fixed", or "absolute". ` + `To fix this problem, make sure the container element has the CSS 'position' ` + `property defined and the height of the element is not zero.`)); - } - }); -} -/** - * Verifies that the `loading` attribute is set to a valid input & - * is not used on priority images. - */ -function assertValidLoadingInput(dir) { - if (dir.loading && dir.priority) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`loading\` attribute ` + `was used on an image that was marked "priority". ` + `Setting \`loading\` on priority images is not allowed ` + `because these images will always be eagerly loaded. ` + `To fix this, remove the “loading” attribute from the priority image.`); - } - const validInputs = ['auto', 'eager', 'lazy']; - if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) { - throw new _angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵRuntimeError"](2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \`loading\` attribute ` + `has an invalid value (\`${dir.loading}\`). ` + `To fix this, provide a valid value ("lazy", "eager", or "auto").`); - } -} -/** - * Warns if NOT using a loader (falling back to the generic loader) and - * the image appears to be hosted on one of the image CDNs for which - * we do have a built-in image loader. Suggests switching to the - * built-in loader. - * - * @param ngSrc Value of the ngSrc attribute - * @param imageLoader ImageLoader provided - */ -function assertNotMissingBuiltInLoader(ngSrc, imageLoader) { - if (imageLoader === noopImageLoader) { - let builtInLoaderName = ''; - for (const loader of BUILT_IN_LOADERS) { - if (loader.testUrl(ngSrc)) { - builtInLoaderName = loader.name; - break; - } - } - if (builtInLoaderName) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2962 /* RuntimeErrorCode.MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` + `${builtInLoaderName} CDN, but your app is not using Angular's ` + `built-in loader for that CDN. We recommend switching to use ` + `the built-in by calling \`provide${builtInLoaderName}Loader()\` ` + `in your \`providers\` and passing it your instance's base URL. ` + `If you don't want to use the built-in loader, define a custom ` + `loader function using IMAGE_LOADER to silence this warning.`)); - } - } -} -/** - * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used). - */ -function assertNoNgSrcsetWithoutLoader(dir, imageLoader) { - if (dir.ngSrcset && imageLoader === noopImageLoader) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \`ngSrcset\` attribute is present but ` + `no image loader is configured (i.e. the default one is being used), ` + `which would result in the same image being used for all configured sizes. ` + `To fix this, provide a loader or remove the \`ngSrcset\` attribute from the image.`)); - } -} -/** - * Warns if loaderParams is present and no loader is configured (i.e. the default one is being - * used). - */ -function assertNoLoaderParamsWithoutLoader(dir, imageLoader) { - if (dir.loaderParams && imageLoader === noopImageLoader) { - console.warn((0,_angular_core__WEBPACK_IMPORTED_MODULE_0__["ɵformatRuntimeError"])(2963 /* RuntimeErrorCode.MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \`loaderParams\` attribute is present but ` + `no image loader is configured (i.e. the default one is being used), ` + `which means that the loaderParams data will not be consumed and will not affect the URL. ` + `To fix this, provide a custom loader or remove the \`loaderParams\` attribute from the image.`)); - } -} -function round(input) { - return Number.isInteger(input) ? input : input.toFixed(2); -} - -// These exports represent the set of symbols exposed as a public API. - -/** - * @module - * @description - * Entry point for all public APIs of the common package. - */ - -/** - * @module - * @description - * Entry point for all public APIs of this package. - */ -// This file only reexports content of the `src` folder. Keep it that way. - -// This file is not used to build this module. It is only used during editing - -/** - * Generated bundle index. Do not edit. - */ - - - -/***/ }), - -/***/ 4860: -/*!********************************************************!*\ - !*** ./node_modules/@angular/common/fesm2022/http.mjs ***! - \********************************************************/ -/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ FetchBackend: () => (/* binding */ FetchBackend), -/* harmony export */ HTTP_INTERCEPTORS: () => (/* binding */ HTTP_INTERCEPTORS), -/* harmony export */ HttpBackend: () => (/* binding */ HttpBackend), -/* harmony export */ HttpClient: () => (/* binding */ HttpClient), -/* harmony export */ HttpClientJsonpModule: () => (/* binding */ HttpClientJsonpModule), -/* harmony export */ HttpClientModule: () => (/* binding */ HttpClientModule), -/* harmony export */ HttpClientXsrfModule: () => (/* binding */ HttpClientXsrfModule), -/* harmony export */ HttpContext: () => (/* binding */ HttpContext), -/* harmony export */ HttpContextToken: () => (/* binding */ HttpContextToken), -/* harmony export */ HttpErrorResponse: () => (/* binding */ HttpErrorResponse), -/* harmony export */ HttpEventType: () => (/* binding */ HttpEventType), -/* harmony export */ HttpFeatureKind: () => (/* binding */ HttpFeatureKind), -/* harmony export */ HttpHandler: () => (/* binding */ HttpHandler), -/* harmony export */ HttpHeaderResponse: () => (/* binding */ HttpHeaderResponse), -/* harmony export */ HttpHeaders: () => (/* binding */ HttpHeaders), -/* harmony export */ HttpParams: () => (/* binding */ HttpParams), -/* harmony export */ HttpRequest: () => (/* binding */ HttpRequest), -/* harmony export */ HttpResponse: () => (/* binding */ HttpResponse), -/* harmony export */ HttpResponseBase: () => (/* binding */ HttpResponseBase), -/* harmony export */ HttpUrlEncodingCodec: () => (/* binding */ HttpUrlEncodingCodec), -/* harmony export */ HttpXhrBackend: () => (/* binding */ HttpXhrBackend), -/* harmony export */ HttpXsrfTokenExtractor: () => (/* binding */ HttpXsrfTokenExtractor), -/* harmony export */ JsonpClientBackend: () => (/* binding */ JsonpClientBackend), -/* harmony export */ JsonpInterceptor: () => (/* binding */ JsonpInterceptor), -/* harmony export */ provideHttpClient: () => (/* binding */ provideHttpClient), -/* harmony export */ withFetch: () => (/* binding */ withFetch), -/* harmony export */ withInterceptors: () => (/* binding */ withInterceptors), -/* harmony export */ withInterceptorsFromDi: () => (/* binding */ withInterceptorsFromDi), -/* harmony export */ withJsonpSupport: () => (/* binding */ withJsonpSupport), -/* harmony export */ withNoXsrfProtection: () => (/* binding */ withNoXsrfProtection), -/* harmony export */ withRequestsMadeViaParent: () => (/* binding */ withRequestsMadeViaParent), -/* harmony export */ withXsrfConfiguration: () => (/* binding */ withXsrfConfiguration), -/* harmony export */ "ɵHttpInterceptingHandler": () => (/* binding */ HttpInterceptorHandler), -/* harmony export */ "ɵHttpInterceptorHandler": () => (/* binding */ HttpInterceptorHandler), -/* harmony export */ "ɵwithHttpTransferCache": () => (/* binding */ withHttpTransferCache) -/* harmony export */ }); -/* harmony import */ var _home_runner_work_ngx_gallery_ngx_gallery_node_modules_angular_devkit_build_angular_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@angular-devkit/build-angular/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 3918); -/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 1699); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ 9681); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rxjs */ 3064); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! rxjs */ 502); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ 7293); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ 5046); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/operators */ 7422); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rxjs/operators */ 786); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! rxjs/operators */ 6520); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! rxjs/operators */ 5746); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! rxjs/operators */ 7627); -/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common */ 6575); - -/** - * @license Angular v16.1.8 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - */ - - - - - - - - -/** - * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a - * `HttpResponse`. - * - * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the - * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the - * `HttpBackend`. - * - * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain. - * - * @publicApi - */ -class HttpHandler {} -/** - * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend. - * - * Interceptors sit between the `HttpClient` interface and the `HttpBackend`. - * - * When injected, `HttpBackend` dispatches requests directly to the backend, without going - * through the interceptor chain. - * - * @publicApi - */ -class HttpBackend {} - -/** - * Represents the header configuration options for an HTTP request. - * Instances are immutable. Modifying methods return a cloned - * instance with the change. The original object is never changed. - * - * @publicApi - */ -class HttpHeaders { - /** Constructs a new HTTP header object with the given values.*/ - constructor(headers) { - /** - * Internal map of lowercased header names to the normalized - * form of the name (the form seen first). - */ - this.normalizedNames = new Map(); - /** - * Queued updates to be materialized the next initialization. - */ - this.lazyUpdate = null; - if (!headers) { - this.headers = new Map(); - } else if (typeof headers === 'string') { - this.lazyInit = () => { - this.headers = new Map(); - headers.split('\n').forEach(line => { - const index = line.indexOf(':'); - if (index > 0) { - const name = line.slice(0, index); - const key = name.toLowerCase(); - const value = line.slice(index + 1).trim(); - this.maybeSetNormalizedName(name, key); - if (this.headers.has(key)) { - this.headers.get(key).push(value); - } else { - this.headers.set(key, [value]); - } - } - }); - }; - } else if (typeof Headers !== 'undefined' && headers instanceof Headers) { - this.headers = new Map(); - headers.forEach((values, name) => { - this.setHeaderEntries(name, values); - }); - } else { - this.lazyInit = () => { - if (typeof ngDevMode === 'undefined' || ngDevMode) { - assertValidHeaders(headers); - } - this.headers = new Map(); - Object.entries(headers).forEach(([name, values]) => { - this.setHeaderEntries(name, values); - }); - }; - } - } - /** - * Checks for existence of a given header. - * - * @param name The header name to check for existence. - * - * @returns True if the header exists, false otherwise. - */ - has(name) { - this.init(); - return this.headers.has(name.toLowerCase()); - } - /** - * Retrieves the first value of a given header. - * - * @param name The header name. - * - * @returns The value string if the header exists, null otherwise - */ - get(name) { - this.init(); - const values = this.headers.get(name.toLowerCase()); - return values && values.length > 0 ? values[0] : null; - } - /** - * Retrieves the names of the headers. - * - * @returns A list of header names. - */ - keys() { - this.init(); - return Array.from(this.normalizedNames.values()); - } - /** - * Retrieves a list of values for a given header. - * - * @param name The header name from which to retrieve values. - * - * @returns A string of values if the header exists, null otherwise. - */ - getAll(name) { - this.init(); - return this.headers.get(name.toLowerCase()) || null; - } - /** - * Appends a new value to the existing set of values for a header - * and returns them in a clone of the original instance. - * - * @param name The header name for which to append the values. - * @param value The value to append. - * - * @returns A clone of the HTTP headers object with the value appended to the given header. - */ - append(name, value) { - return this.clone({ - name, - value, - op: 'a' - }); - } - /** - * Sets or modifies a value for a given header in a clone of the original instance. - * If the header already exists, its value is replaced with the given value - * in the returned object. - * - * @param name The header name. - * @param value The value or values to set or override for the given header. - * - * @returns A clone of the HTTP headers object with the newly set header value. - */ - set(name, value) { - return this.clone({ - name, - value, - op: 's' - }); - } - /** - * Deletes values for a given header in a clone of the original instance. - * - * @param name The header name. - * @param value The value or values to delete for the given header. - * - * @returns A clone of the HTTP headers object with the given value deleted. - */ - delete(name, value) { - return this.clone({ - name, - value, - op: 'd' - }); - } - maybeSetNormalizedName(name, lcName) { - if (!this.normalizedNames.has(lcName)) { - this.normalizedNames.set(lcName, name); - } - } - init() { - if (!!this.lazyInit) { - if (this.lazyInit instanceof HttpHeaders) { - this.copyFrom(this.lazyInit); - } else { - this.lazyInit(); - } - this.lazyInit = null; - if (!!this.lazyUpdate) { - this.lazyUpdate.forEach(update => this.applyUpdate(update)); - this.lazyUpdate = null; - } - } - } - copyFrom(other) { - other.init(); - Array.from(other.headers.keys()).forEach(key => { - this.headers.set(key, other.headers.get(key)); - this.normalizedNames.set(key, other.normalizedNames.get(key)); - }); - } - clone(update) { - const clone = new HttpHeaders(); - clone.lazyInit = !!this.lazyInit && this.lazyInit instanceof HttpHeaders ? this.lazyInit : this; - clone.lazyUpdate = (this.lazyUpdate || []).concat([update]); - return clone; - } - applyUpdate(update) { - const key = update.name.toLowerCase(); - switch (update.op) { - case 'a': - case 's': - let value = update.value; - if (typeof value === 'string') { - value = [value]; - } - if (value.length === 0) { - return; - } - this.maybeSetNormalizedName(update.name, key); - const base = (update.op === 'a' ? this.headers.get(key) : undefined) || []; - base.push(...value); - this.headers.set(key, base); - break; - case 'd': - const toDelete = update.value; - if (!toDelete) { - this.headers.delete(key); - this.normalizedNames.delete(key); - } else { - let existing = this.headers.get(key); - if (!existing) { - return; - } - existing = existing.filter(value => toDelete.indexOf(value) === -1); - if (existing.length === 0) { - this.headers.delete(key); - this.normalizedNames.delete(key); - } else { - this.headers.set(key, existing); - } - } - break; - } - } - setHeaderEntries(name, values) { - const headerValues = (Array.isArray(values) ? values : [values]).map(value => value.toString()); - const key = name.toLowerCase(); - this.headers.set(key, headerValues); - this.maybeSetNormalizedName(name, key); - } - /** - * @internal - */ - forEach(fn) { - this.init(); - Array.from(this.normalizedNames.keys()).forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key))); - } -} -/** - * Verifies that the headers object has the right shape: the values - * must be either strings, numbers or arrays. Throws an error if an invalid - * header value is present. - */ -function assertValidHeaders(headers) { - for (const [key, value] of Object.entries(headers)) { - if (!(typeof value === 'string' || typeof value === 'number') && !Array.isArray(value)) { - throw new Error(`Unexpected value of the \`${key}\` header provided. ` + `Expecting either a string, a number or an array, but got: \`${value}\`.`); - } - } -} - -/** - * Provides encoding and decoding of URL parameter and query-string values. - * - * Serializes and parses URL parameter keys and values to encode and decode them. - * If you pass URL query parameters without encoding, - * the query parameters can be misinterpreted at the receiving end. - * - * - * @publicApi - */ -class HttpUrlEncodingCodec { - /** - * Encodes a key name for a URL parameter or query-string. - * @param key The key name. - * @returns The encoded key name. - */ - encodeKey(key) { - return standardEncoding(key); - } - /** - * Encodes the value of a URL parameter or query-string. - * @param value The value. - * @returns The encoded value. - */ - encodeValue(value) { - return standardEncoding(value); - } - /** - * Decodes an encoded URL parameter or query-string key. - * @param key The encoded key name. - * @returns The decoded key name. - */ - decodeKey(key) { - return decodeURIComponent(key); - } - /** - * Decodes an encoded URL parameter or query-string value. - * @param value The encoded value. - * @returns The decoded value. - */ - decodeValue(value) { - return decodeURIComponent(value); - } -} -function paramParser(rawParams, codec) { - const map = new Map(); - if (rawParams.length > 0) { - // The `window.location.search` can be used while creating an instance of the `HttpParams` class - // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search` - // may start with the `?` char, so we strip it if it's present. - const params = rawParams.replace(/^\?/, '').split('&'); - params.forEach(param => { - const eqIdx = param.indexOf('='); - const [key, val] = eqIdx == -1 ? [codec.decodeKey(param), ''] : [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))]; - const list = map.get(key) || []; - list.push(val); - map.set(key, list); - }); - } - return map; -} -/** - * Encode input string with standard encodeURIComponent and then un-encode specific characters. - */ -const STANDARD_ENCODING_REGEX = /%(\d[a-f0-9])/gi; -const STANDARD_ENCODING_REPLACEMENTS = { - '40': '@', - '3A': ':', - '24': '$', - '2C': ',', - '3B': ';', - '3D': '=', - '3F': '?', - '2F': '/' -}; -function standardEncoding(v) { - return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s); -} -function valueToString(value) { - return `${value}`; -} -/** - * An HTTP request/response body that represents serialized parameters, - * per the MIME type `application/x-www-form-urlencoded`. - * - * This class is immutable; all mutation operations return a new instance. - * - * @publicApi - */ -class HttpParams { - constructor(options = {}) { - this.updates = null; - this.cloneFrom = null; - this.encoder = options.encoder || new HttpUrlEncodingCodec(); - if (!!options.fromString) { - if (!!options.fromObject) { - throw new Error(`Cannot specify both fromString and fromObject.`); - } - this.map = paramParser(options.fromString, this.encoder); - } else if (!!options.fromObject) { - this.map = new Map(); - Object.keys(options.fromObject).forEach(key => { - const value = options.fromObject[key]; - // convert the values to strings - const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)]; - this.map.set(key, values); - }); - } else { - this.map = null; - } - } - /** - * Reports whether the body includes one or more values for a given parameter. - * @param param The parameter name. - * @returns True if the parameter has one or more values, - * false if it has no value or is not present. - */ - has(param) { - this.init(); - return this.map.has(param); - } - /** - * Retrieves the first value for a parameter. - * @param param The parameter name. - * @returns The first value of the given parameter, - * or `null` if the parameter is not present. - */ - get(param) { - this.init(); - const res = this.map.get(param); - return !!res ? res[0] : null; - } - /** - * Retrieves all values for a parameter. - * @param param The parameter name. - * @returns All values in a string array, - * or `null` if the parameter not present. - */ - getAll(param) { - this.init(); - return this.map.get(param) || null; - } - /** - * Retrieves all the parameters for this body. - * @returns The parameter names in a string array. - */ - keys() { - this.init(); - return Array.from(this.map.keys()); - } - /** - * Appends a new value to existing values for a parameter. - * @param param The parameter name. - * @param value The new value to add. - * @return A new body with the appended value. - */ - append(param, value) { - return this.clone({ - param, - value, - op: 'a' - }); - } - /** - * Constructs a new body with appended values for the given parameter name. - * @param params parameters and values - * @return A new body with the new value. - */ - appendAll(params) { - const updates = []; - Object.keys(params).forEach(param => { - const value = params[param]; - if (Array.isArray(value)) { - value.forEach(_value => { - updates.push({ - param, - value: _value, - op: 'a' - }); - }); - } else { - updates.push({ - param, - value: value, - op: 'a' - }); - } - }); - return this.clone(updates); - } - /** - * Replaces the value for a parameter. - * @param param The parameter name. - * @param value The new value. - * @return A new body with the new value. - */ - set(param, value) { - return this.clone({ - param, - value, - op: 's' - }); - } - /** - * Removes a given value or all values from a parameter. - * @param param The parameter name. - * @param value The value to remove, if provided. - * @return A new body with the given value removed, or with all values - * removed if no value is specified. - */ - delete(param, value) { - return this.clone({ - param, - value, - op: 'd' - }); - } - /** - * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are - * separated by `&`s. - */ - toString() { - this.init(); - return this.keys().map(key => { - const eKey = this.encoder.encodeKey(key); - // `a: ['1']` produces `'a=1'` - // `b: []` produces `''` - // `c: ['1', '2']` produces `'c=1&c=2'` - return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value)).join('&'); - }) - // filter out empty values because `b: []` produces `''` - // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't - .filter(param => param !== '').join('&'); - } - clone(update) { - const clone = new HttpParams({ - encoder: this.encoder - }); - clone.cloneFrom = this.cloneFrom || this; - clone.updates = (this.updates || []).concat(update); - return clone; - } - init() { - if (this.map === null) { - this.map = new Map(); - } - if (this.cloneFrom !== null) { - this.cloneFrom.init(); - this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key))); - this.updates.forEach(update => { - switch (update.op) { - case 'a': - case 's': - const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || []; - base.push(valueToString(update.value)); - this.map.set(update.param, base); - break; - case 'd': - if (update.value !== undefined) { - let base = this.map.get(update.param) || []; - const idx = base.indexOf(valueToString(update.value)); - if (idx !== -1) { - base.splice(idx, 1); - } - if (base.length > 0) { - this.map.set(update.param, base); - } else { - this.map.delete(update.param); - } - } else { - this.map.delete(update.param); - break; - } - } - }); - this.cloneFrom = this.updates = null; - } - } -} - -/** - * A token used to manipulate and access values stored in `HttpContext`. - * - * @publicApi - */ -class HttpContextToken { - constructor(defaultValue) { - this.defaultValue = defaultValue; - } -} -/** - * Http context stores arbitrary user defined values and ensures type safety without - * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash. - * - * This context is mutable and is shared between cloned requests unless explicitly specified. - * - * @usageNotes - * - * ### Usage Example - * - * ```typescript - * // inside cache.interceptors.ts - * export const IS_CACHE_ENABLED = new HttpContextToken(() => false); - * - * export class CacheInterceptor implements HttpInterceptor { - * - * intercept(req: HttpRequest, delegate: HttpHandler): Observable> { - * if (req.context.get(IS_CACHE_ENABLED) === true) { - * return ...; - * } - * return delegate.handle(req); - * } - * } - * - * // inside a service - * - * this.httpClient.get('/api/weather', { - * context: new HttpContext().set(IS_CACHE_ENABLED, true) - * }).subscribe(...); - * ``` - * - * @publicApi - */ -class HttpContext { - constructor() { - this.map = new Map(); - } - /** - * Store a value in the context. If a value is already present it will be overwritten. - * - * @param token The reference to an instance of `HttpContextToken`. - * @param value The value to store. - * - * @returns A reference to itself for easy chaining. - */ - set(token, value) { - this.map.set(token, value); - return this; - } - /** - * Retrieve the value associated with the given token. - * - * @param token The reference to an instance of `HttpContextToken`. - * - * @returns The stored value or default if one is defined. - */ - get(token) { - if (!this.map.has(token)) { - this.map.set(token, token.defaultValue()); - } - return this.map.get(token); - } - /** - * Delete the value associated with the given token. - * - * @param token The reference to an instance of `HttpContextToken`. - * - * @returns A reference to itself for easy chaining. - */ - delete(token) { - this.map.delete(token); - return this; - } - /** - * Checks for existence of a given token. - * - * @param token The reference to an instance of `HttpContextToken`. - * - * @returns True if the token exists, false otherwise. - */ - has(token) { - return this.map.has(token); - } - /** - * @returns a list of tokens currently stored in the context. - */ - keys() { - return this.map.keys(); - } -} - -/** - * Determine whether the given HTTP method may include a body. - */ -function mightHaveBody(method) { - switch (method) { - case 'DELETE': - case 'GET': - case 'HEAD': - case 'OPTIONS': - case 'JSONP': - return false; - default: - return true; - } -} -/** - * Safely assert whether the given value is an ArrayBuffer. - * - * In some execution environments ArrayBuffer is not defined. - */ -function isArrayBuffer(value) { - return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer; -} -/** - * Safely assert whether the given value is a Blob. - * - * In some execution environments Blob is not defined. - */ -function isBlob(value) { - return typeof Blob !== 'undefined' && value instanceof Blob; -} -/** - * Safely assert whether the given value is a FormData instance. - * - * In some execution environments FormData is not defined. - */ -function isFormData(value) { - return typeof FormData !== 'undefined' && value instanceof FormData; -} -/** - * Safely assert whether the given value is a URLSearchParams instance. - * - * In some execution environments URLSearchParams is not defined. - */ -function isUrlSearchParams(value) { - return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams; -} -/** - * An outgoing HTTP request with an optional typed body. - * - * `HttpRequest` represents an outgoing request, including URL, method, - * headers, body, and other request configuration options. Instances should be - * assumed to be immutable. To modify a `HttpRequest`, the `clone` - * method should be used. - * - * @publicApi - */ -class HttpRequest { - constructor(method, url, third, fourth) { - this.url = url; - /** - * The request body, or `null` if one isn't set. - * - * Bodies are not enforced to be immutable, as they can include a reference to any - * user-defined data type. However, interceptors should take care to preserve - * idempotence by treating them as such. - */ - this.body = null; - /** - * Whether this request should be made in a way that exposes progress events. - * - * Progress events are expensive (change detection runs on each event) and so - * they should only be requested if the consumer intends to monitor them. - * - * Note: The `FetchBackend` doesn't support progress report on uploads. - */ - this.reportProgress = false; - /** - * Whether this request should be sent with outgoing credentials (cookies). - */ - this.withCredentials = false; - /** - * The expected response type of the server. - * - * This is used to parse the response appropriately before returning it to - * the requestee. - */ - this.responseType = 'json'; - this.method = method.toUpperCase(); - // Next, need to figure out which argument holds the HttpRequestInit - // options, if any. - let options; - // Check whether a body argument is expected. The only valid way to omit - // the body argument is to use a known no-body method like GET. - if (mightHaveBody(this.method) || !!fourth) { - // Body is the third argument, options are the fourth. - this.body = third !== undefined ? third : null; - options = fourth; - } else { - // No body required, options are the third argument. The body stays null. - options = third; - } - // If options have been passed, interpret them. - if (options) { - // Normalize reportProgress and withCredentials. - this.reportProgress = !!options.reportProgress; - this.withCredentials = !!options.withCredentials; - // Override default response type of 'json' if one is provided. - if (!!options.responseType) { - this.responseType = options.responseType; - } - // Override headers if they're provided. - if (!!options.headers) { - this.headers = options.headers; - } - if (!!options.context) { - this.context = options.context; - } - if (!!options.params) { - this.params = options.params; - } - } - // If no headers have been passed in, construct a new HttpHeaders instance. - if (!this.headers) { - this.headers = new HttpHeaders(); - } - // If no context have been passed in, construct a new HttpContext instance. - if (!this.context) { - this.context = new HttpContext(); - } - // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance. - if (!this.params) { - this.params = new HttpParams(); - this.urlWithParams = url; - } else { - // Encode the parameters to a string in preparation for inclusion in the URL. - const params = this.params.toString(); - if (params.length === 0) { - // No parameters, the visible URL is just the URL given at creation time. - this.urlWithParams = url; - } else { - // Does the URL already have query parameters? Look for '?'. - const qIdx = url.indexOf('?'); - // There are 3 cases to handle: - // 1) No existing parameters -> append '?' followed by params. - // 2) '?' exists and is followed by existing query string -> - // append '&' followed by params. - // 3) '?' exists at the end of the url -> append params directly. - // This basically amounts to determining the character, if any, with - // which to join the URL and parameters. - const sep = qIdx === -1 ? '?' : qIdx < url.length - 1 ? '&' : ''; - this.urlWithParams = url + sep + params; - } - } - } - /** - * Transform the free-form body into a serialized format suitable for - * transmission to the server. - */ - serializeBody() { - // If no body is present, no need to serialize it. - if (this.body === null) { - return null; - } - // Check whether the body is already in a serialized form. If so, - // it can just be returned directly. - if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) || isUrlSearchParams(this.body) || typeof this.body === 'string') { - return this.body; - } - // Check whether the body is an instance of HttpUrlEncodedParams. - if (this.body instanceof HttpParams) { - return this.body.toString(); - } - // Check whether the body is an object or array, and serialize with JSON if so. - if (typeof this.body === 'object' || typeof this.body === 'boolean' || Array.isArray(this.body)) { - return JSON.stringify(this.body); - } - // Fall back on toString() for everything else. - return this.body.toString(); - } - /** - * Examine the body and attempt to infer an appropriate MIME type - * for it. - * - * If no such type can be inferred, this method will return `null`. - */ - detectContentTypeHeader() { - // An empty body has no content type. - if (this.body === null) { - return null; - } - // FormData bodies rely on the browser's content type assignment. - if (isFormData(this.body)) { - return null; - } - // Blobs usually have their own content type. If it doesn't, then - // no type can be inferred. - if (isBlob(this.body)) { - return this.body.type || null; - } - // Array buffers have unknown contents and thus no type can be inferred. - if (isArrayBuffer(this.body)) { - return null; - } - // Technically, strings could be a form of JSON data, but it's safe enough - // to assume they're plain strings. - if (typeof this.body === 'string') { - return 'text/plain'; - } - // `HttpUrlEncodedParams` has its own content-type. - if (this.body instanceof HttpParams) { - return 'application/x-www-form-urlencoded;charset=UTF-8'; - } - // Arrays, objects, boolean and numbers will be encoded as JSON. - if (typeof this.body === 'object' || typeof this.body === 'number' || typeof this.body === 'boolean') { - return 'application/json'; - } - // No type could be inferred. - return null; - } - clone(update = {}) { - // For method, url, and responseType, take the current value unless - // it is overridden in the update hash. - const method = update.method || this.method; - const url = update.url || this.url; - const responseType = update.responseType || this.responseType; - // The body is somewhat special - a `null` value in update.body means - // whatever current body is present is being overridden with an empty - // body, whereas an `undefined` value in update.body implies no - // override. - const body = update.body !== undefined ? update.body : this.body; - // Carefully handle the boolean options to differentiate between - // `false` and `undefined` in the update args. - const withCredentials = update.withCredentials !== undefined ? update.withCredentials : this.withCredentials; - const reportProgress = update.reportProgress !== undefined ? update.reportProgress : this.reportProgress; - // Headers and params may be appended to if `setHeaders` or - // `setParams` are used. - let headers = update.headers || this.headers; - let params = update.params || this.params; - // Pass on context if needed - const context = update.context ?? this.context; - // Check whether the caller has asked to add headers. - if (update.setHeaders !== undefined) { - // Set every requested header. - headers = Object.keys(update.setHeaders).reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers); - } - // Check whether the caller has asked to set params. - if (update.setParams) { - // Set every requested param. - params = Object.keys(update.setParams).reduce((params, param) => params.set(param, update.setParams[param]), params); - } - // Finally, construct the new HttpRequest using the pieces from above. - return new HttpRequest(method, url, body, { - params, - headers, - context, - reportProgress, - responseType, - withCredentials - }); - } -} - -/** - * Type enumeration for the different kinds of `HttpEvent`. - * - * @publicApi - */ -var HttpEventType; -(function (HttpEventType) { - /** - * The request was sent out over the wire. - */ - HttpEventType[HttpEventType["Sent"] = 0] = "Sent"; - /** - * An upload progress event was received. - * - * Note: The `FetchBackend` doesn't support progress report on uploads. - */ - HttpEventType[HttpEventType["UploadProgress"] = 1] = "UploadProgress"; - /** - * The response status code and headers were received. - */ - HttpEventType[HttpEventType["ResponseHeader"] = 2] = "ResponseHeader"; - /** - * A download progress event was received. - */ - HttpEventType[HttpEventType["DownloadProgress"] = 3] = "DownloadProgress"; - /** - * The full response including the body was received. - */ - HttpEventType[HttpEventType["Response"] = 4] = "Response"; - /** - * A custom event from an interceptor or a backend. - */ - HttpEventType[HttpEventType["User"] = 5] = "User"; -})(HttpEventType || (HttpEventType = {})); -/** - * Base class for both `HttpResponse` and `HttpHeaderResponse`. - * - * @publicApi - */ -class HttpResponseBase { - /** - * Super-constructor for all responses. - * - * The single parameter accepted is an initialization hash. Any properties - * of the response passed there will override the default values. - */ - constructor(init, defaultStatus = 200 /* HttpStatusCode.Ok */, defaultStatusText = 'OK') { - // If the hash has values passed, use them to initialize the response. - // Otherwise use the default values. - this.headers = init.headers || new HttpHeaders(); - this.status = init.status !== undefined ? init.status : defaultStatus; - this.statusText = init.statusText || defaultStatusText; - this.url = init.url || null; - // Cache the ok value to avoid defining a getter. - this.ok = this.status >= 200 && this.status < 300; - } -} -/** - * A partial HTTP response which only includes the status and header data, - * but no response body. - * - * `HttpHeaderResponse` is a `HttpEvent` available on the response - * event stream, only when progress events are requested. - * - * @publicApi - */ -class HttpHeaderResponse extends HttpResponseBase { - /** - * Create a new `HttpHeaderResponse` with the given parameters. - */ - constructor(init = {}) { - super(init); - this.type = HttpEventType.ResponseHeader; - } - /** - * Copy this `HttpHeaderResponse`, overriding its contents with the - * given parameter hash. - */ - clone(update = {}) { - // Perform a straightforward initialization of the new HttpHeaderResponse, - // overriding the current parameters with new ones if given. - return new HttpHeaderResponse({ - headers: update.headers || this.headers, - status: update.status !== undefined ? update.status : this.status, - statusText: update.statusText || this.statusText, - url: update.url || this.url || undefined - }); - } -} -/** - * A full HTTP response, including a typed response body (which may be `null` - * if one was not returned). - * - * `HttpResponse` is a `HttpEvent` available on the response event - * stream. - * - * @publicApi - */ -class HttpResponse extends HttpResponseBase { - /** - * Construct a new `HttpResponse`. - */ - constructor(init = {}) { - super(init); - this.type = HttpEventType.Response; - this.body = init.body !== undefined ? init.body : null; - } - clone(update = {}) { - return new HttpResponse({ - body: update.body !== undefined ? update.body : this.body, - headers: update.headers || this.headers, - status: update.status !== undefined ? update.status : this.status, - statusText: update.statusText || this.statusText, - url: update.url || this.url || undefined - }); - } -} -/** - * A response that represents an error or failure, either from a - * non-successful HTTP status, an error while executing the request, - * or some other failure which occurred during the parsing of the response. - * - * Any error returned on the `Observable` response stream will be - * wrapped in an `HttpErrorResponse` to provide additional context about - * the state of the HTTP layer when the error occurred. The error property - * will contain either a wrapped Error object or the error response returned - * from the server. - * - * @publicApi - */ -class HttpErrorResponse extends HttpResponseBase { - constructor(init) { - // Initialize with a default status of 0 / Unknown Error. - super(init, 0, 'Unknown Error'); - this.name = 'HttpErrorResponse'; - /** - * Errors are never okay, even when the status code is in the 2xx success range. - */ - this.ok = false; - // If the response was successful, then this was a parse error. Otherwise, it was - // a protocol-level failure of some sort. Either the request failed in transit - // or the server returned an unsuccessful status code. - if (this.status >= 200 && this.status < 300) { - this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`; - } else { - this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`; - } - this.error = init.error || null; - } -} - -/** - * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and - * the given `body`. This function clones the object and adds the body. - * - * Note that the `responseType` *options* value is a String that identifies the - * single data type of the response. - * A single overload version of the method handles each response type. - * The value of `responseType` cannot be a union, as the combined signature could imply. - * - */ -function addBody(options, body) { - return { - body, - headers: options.headers, - context: options.context, - observe: options.observe, - params: options.params, - reportProgress: options.reportProgress, - responseType: options.responseType, - withCredentials: options.withCredentials - }; -} -/** - * Performs HTTP requests. - * This service is available as an injectable class, with methods to perform HTTP requests. - * Each request method has multiple signatures, and the return type varies based on - * the signature that is called (mainly the values of `observe` and `responseType`). - * - * Note that the `responseType` *options* value is a String that identifies the - * single data type of the response. - * A single overload version of the method handles each response type. - * The value of `responseType` cannot be a union, as the combined signature could imply. - - * - * @usageNotes - * Sample HTTP requests for the [Tour of Heroes](/tutorial/tour-of-heroes/toh-pt0) application. - * - * ### HTTP Request Example - * - * ``` - * // GET heroes whose name contains search term - * searchHeroes(term: string): observable{ - * - * const params = new HttpParams({fromString: 'name=term'}); - * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params}); - * } - * ``` - * - * Alternatively, the parameter string can be used without invoking HttpParams - * by directly joining to the URL. - * ``` - * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'}); - * ``` - * - * - * ### JSONP Example - * ``` - * requestJsonp(url, callback = 'callback') { - * return this.httpClient.jsonp(this.heroesURL, callback); - * } - * ``` - * - * ### PATCH Example - * ``` - * // PATCH one of the heroes' name - * patchHero (id: number, heroName: string): Observable<{}> { - * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42 - * return this.httpClient.patch(url, {name: heroName}, httpOptions) - * .pipe(catchError(this.handleError('patchHero'))); - * } - * ``` - * - * @see [HTTP Guide](guide/understanding-communicating-with-http) - * @see [HTTP Request](api/common/http/HttpRequest) - * - * @publicApi - */ -class HttpClient { - constructor(handler) { - this.handler = handler; - } - /** - * Constructs an observable for a generic HTTP request that, when subscribed, - * fires the request through the chain of registered interceptors and on to the - * server. - * - * You can pass an `HttpRequest` directly as the only parameter. In this case, - * the call returns an observable of the raw `HttpEvent` stream. - * - * Alternatively you can pass an HTTP method as the first parameter, - * a URL string as the second, and an options hash containing the request body as the third. - * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the - * type of returned observable. - * * The `responseType` value determines how a successful response body is parsed. - * * If `responseType` is the default `json`, you can pass a type interface for the resulting - * object as a type parameter to the call. - * - * The `observe` value determines the return type, according to what you are interested in - * observing. - * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including - * progress events by default. - * * An `observe` value of response returns an observable of `HttpResponse`, - * where the `T` parameter depends on the `responseType` and any optionally provided type - * parameter. - * * An `observe` value of body returns an observable of `` with the same `T` body type. - * - */ - request(first, url, options = {}) { - let req; - // First, check whether the primary argument is an instance of `HttpRequest`. - if (first instanceof HttpRequest) { - // It is. The other arguments must be undefined (per the signatures) and can be - // ignored. - req = first; - } else { - // It's a string, so it represents a URL. Construct a request based on it, - // and incorporate the remaining arguments (assuming `GET` unless a method is - // provided. - // Figure out the headers. - let headers = undefined; - if (options.headers instanceof HttpHeaders) { - headers = options.headers; - } else { - headers = new HttpHeaders(options.headers); - } - // Sort out parameters. - let params = undefined; - if (!!options.params) { - if (options.params instanceof HttpParams) { - params = options.params; - } else { - params = new HttpParams({ - fromObject: options.params - }); - } - } - // Construct the request. - req = new HttpRequest(first, url, options.body !== undefined ? options.body : null, { - headers, - context: options.context, - params, - reportProgress: options.reportProgress, - // By default, JSON is assumed to be returned for all calls. - responseType: options.responseType || 'json', - withCredentials: options.withCredentials - }); - } - // Start with an Observable.of() the initial request, and run the handler (which - // includes all interceptors) inside a concatMap(). This way, the handler runs - // inside an Observable chain, which causes interceptors to be re-run on every - // subscription (this also makes retries re-run the handler, including interceptors). - const events$ = (0,rxjs__WEBPACK_IMPORTED_MODULE_1__.of)(req).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_2__.concatMap)(req => this.handler.handle(req))); - // If coming via the API signature which accepts a previously constructed HttpRequest, - // the only option is to get the event stream. Otherwise, return the event stream if - // that is what was requested. - if (first instanceof HttpRequest || options.observe === 'events') { - return events$; - } - // The requested stream contains either the full response or the body. In either - // case, the first step is to filter the event stream to extract a stream of - // responses(s). - const res$ = events$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_3__.filter)(event => event instanceof HttpResponse)); - // Decide which stream to return. - switch (options.observe || 'body') { - case 'body': - // The requested stream is the body. Map the response stream to the response - // body. This could be done more simply, but a misbehaving interceptor might - // transform the response body into a different format and ignore the requested - // responseType. Guard against this by validating that the response is of the - // requested type. - switch (req.responseType) { - case 'arraybuffer': - return res$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.map)(res => { - // Validate that the body is an ArrayBuffer. - if (res.body !== null && !(res.body instanceof ArrayBuffer)) { - throw new Error('Response is not an ArrayBuffer.'); - } - return res.body; - })); - case 'blob': - return res$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.map)(res => { - // Validate that the body is a Blob. - if (res.body !== null && !(res.body instanceof Blob)) { - throw new Error('Response is not a Blob.'); - } - return res.body; - })); - case 'text': - return res$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.map)(res => { - // Validate that the body is a string. - if (res.body !== null && typeof res.body !== 'string') { - throw new Error('Response is not a string.'); - } - return res.body; - })); - case 'json': - default: - // No validation needed for JSON responses, as they can be of any type. - return res$.pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_4__.map)(res => res.body)); - } - case 'response': - // The response stream was requested directly, so return it. - return res$; - default: - // Guard against new future observe types being added. - throw new Error(`Unreachable: unhandled observe type ${options.observe}}`); - } - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `DELETE` request to execute on the server. See the individual overloads for - * details on the return type. - * - * @param url The endpoint URL. - * @param options The HTTP options to send with the request. - * - */ - delete(url, options = {}) { - return this.request('DELETE', url, options); - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `GET` request to execute on the server. See the individual overloads for - * details on the return type. - */ - get(url, options = {}) { - return this.request('GET', url, options); - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `HEAD` request to execute on the server. The `HEAD` method returns - * meta information about the resource without transferring the - * resource itself. See the individual overloads for - * details on the return type. - */ - head(url, options = {}) { - return this.request('HEAD', url, options); - } - /** - * Constructs an `Observable` that, when subscribed, causes a request with the special method - * `JSONP` to be dispatched via the interceptor pipeline. - * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain - * API endpoints that don't support newer, - * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol. - * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the - * requests even if the API endpoint is not located on the same domain (origin) as the client-side - * application making the request. - * The endpoint API must support JSONP callback for JSONP requests to work. - * The resource API returns the JSON response wrapped in a callback function. - * You can pass the callback function name as one of the query parameters. - * Note that JSONP requests can only be used with `GET` requests. - * - * @param url The resource URL. - * @param callbackParam The callback function name. - * - */ - jsonp(url, callbackParam) { - return this.request('JSONP', url, { - params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'), - observe: 'body', - responseType: 'json' - }); - } - /** - * Constructs an `Observable` that, when subscribed, causes the configured - * `OPTIONS` request to execute on the server. This method allows the client - * to determine the supported HTTP methods and other capabilities of an endpoint, - * without implying a resource action. See the individual overloads for - * details on the return type. - */ - options(url, options = {}) { - return this.request('OPTIONS', url, options); - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `PATCH` request to execute on the server. See the individual overloads for - * details on the return type. - */ - patch(url, body, options = {}) { - return this.request('PATCH', url, addBody(options, body)); - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `POST` request to execute on the server. The server responds with the location of - * the replaced resource. See the individual overloads for - * details on the return type. - */ - post(url, body, options = {}) { - return this.request('POST', url, addBody(options, body)); - } - /** - * Constructs an observable that, when subscribed, causes the configured - * `PUT` request to execute on the server. The `PUT` method replaces an existing resource - * with a new set of values. - * See the individual overloads for details on the return type. - */ - put(url, body, options = {}) { - return this.request('PUT', url, addBody(options, body)); - } -} -HttpClient.ɵfac = function HttpClient_Factory(t) { - return new (t || HttpClient)(_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵinject"](HttpHandler)); -}; -HttpClient.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵdefineInjectable"]({ - token: HttpClient, - factory: HttpClient.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵsetClassMetadata"](HttpClient, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable - }], function () { - return [{ - type: HttpHandler - }]; - }, null); -})(); -const XSSI_PREFIX$1 = /^\)\]\}',?\n/; -const REQUEST_URL_HEADER = `X-Request-URL`; -/** - * Determine an appropriate URL for the response, by checking either - * response url or the X-Request-URL header. - */ -function getResponseUrl$1(response) { - if (response.url) { - return response.url; - } - // stored as lowercase in the map - const xRequestUrl = REQUEST_URL_HEADER.toLocaleLowerCase(); - return response.headers.get(xRequestUrl); -} -/** - * Uses `fetch` to send requests to a backend server. - * - * This `FetchBackend` requires the support of the - * [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) which is available on all - * supported browsers and on Node.js v18 or later. - * - * @see {@link HttpHandler} - * - * @publicApi - * @developerPreview - */ -class FetchBackend { - constructor() { - // We need to bind the native fetch to its context or it will throw an "illegal invocation" - this.fetchImpl = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(FetchFactory, { - optional: true - })?.fetch ?? fetch.bind(globalThis); - this.ngZone = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_5__.NgZone); - } - handle(request) { - return new rxjs__WEBPACK_IMPORTED_MODULE_6__.Observable(observer => { - const aborter = new AbortController(); - this.doRequest(request, aborter.signal, observer).then(noop, error => observer.error(new HttpErrorResponse({ - error - }))); - return () => aborter.abort(); - }); - } - doRequest(request, signal, observer) { - var _this = this; - return (0,_home_runner_work_ngx_gallery_ngx_gallery_node_modules_angular_devkit_build_angular_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - const init = _this.createRequestInit(request); - let response; - try { - const fetchPromise = _this.fetchImpl(request.urlWithParams, { - signal, - ...init - }); - // Make sure Zone.js doesn't trigger false-positive unhandled promise - // error in case the Promise is rejected synchronously. See function - // description for additional information. - silenceSuperfluousUnhandledPromiseRejection(fetchPromise); - // Send the `Sent` event before awaiting the response. - observer.next({ - type: HttpEventType.Sent - }); - response = yield fetchPromise; - } catch (error) { - observer.error(new HttpErrorResponse({ - error, - status: error.status ?? 0, - statusText: error.statusText, - url: request.urlWithParams, - headers: error.headers - })); - return; - } - const headers = new HttpHeaders(response.headers); - const statusText = response.statusText; - const url = getResponseUrl$1(response) ?? request.urlWithParams; - let status = response.status; - let body = null; - if (request.reportProgress) { - observer.next(new HttpHeaderResponse({ - headers, - status, - statusText, - url - })); - } - if (response.body) { - // Read Progress - const contentLength = response.headers.get('content-length'); - const chunks = []; - const reader = response.body.getReader(); - let receivedLength = 0; - let decoder; - let partialText; - // We have to check whether the Zone is defined in the global scope because this may be called - // when the zone is nooped. - const reqZone = typeof Zone !== 'undefined' && Zone.current; - // Perform response processing outside of Angular zone to - // ensure no excessive change detection runs are executed - // Here calling the async ReadableStreamDefaultReader.read() is responsible for triggering CD - yield _this.ngZone.runOutsideAngular( /*#__PURE__*/(0,_home_runner_work_ngx_gallery_ngx_gallery_node_modules_angular_devkit_build_angular_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* () { - while (true) { - const { - done, - value - } = yield reader.read(); - if (done) { - break; - } - chunks.push(value); - receivedLength += value.length; - if (request.reportProgress) { - partialText = request.responseType === 'text' ? (partialText ?? '') + (decoder ??= new TextDecoder()).decode(value, { - stream: true - }) : undefined; - const reportProgress = () => observer.next({ - type: HttpEventType.DownloadProgress, - total: contentLength ? +contentLength : undefined, - loaded: receivedLength, - partialText - }); - reqZone ? reqZone.run(reportProgress) : reportProgress(); - } - } - })); - // Combine all chunks. - const chunksAll = _this.concatChunks(chunks, receivedLength); - try { - body = _this.parseBody(request, chunksAll); - } catch (error) { - // Body loading or parsing failed - observer.error(new HttpErrorResponse({ - error, - headers: new HttpHeaders(response.headers), - status: response.status, - statusText: response.statusText, - url: getResponseUrl$1(response) ?? request.urlWithParams - })); - return; - } - } - // Same behavior as the XhrBackend - if (status === 0) { - status = body ? 200 /* HttpStatusCode.Ok */ : 0; - } - // ok determines whether the response will be transmitted on the event or - // error channel. Unsuccessful status codes (not 2xx) will always be errors, - // but a successful status code can still result in an error if the user - // asked for JSON data and the body cannot be parsed as such. - const ok = status >= 200 && status < 300; - if (ok) { - observer.next(new HttpResponse({ - body, - headers, - status, - statusText, - url - })); - // The full body has been received and delivered, no further events - // are possible. This request is complete. - observer.complete(); - } else { - observer.error(new HttpErrorResponse({ - error: body, - headers, - status, - statusText, - url - })); - } - })(); - } - parseBody(request, binContent) { - switch (request.responseType) { - case 'json': - // stripping the XSSI when present - const text = new TextDecoder().decode(binContent).replace(XSSI_PREFIX$1, ''); - return text === '' ? null : JSON.parse(text); - case 'text': - return new TextDecoder().decode(binContent); - case 'blob': - return new Blob([binContent]); - case 'arraybuffer': - return binContent.buffer; - } - } - createRequestInit(req) { - // We could share some of this logic with the XhrBackend - const headers = {}; - const credentials = req.withCredentials ? 'include' : undefined; - // Setting all the requested headers. - req.headers.forEach((name, values) => headers[name] = values.join(',')); - // Add an Accept header if one isn't present already. - headers['Accept'] ??= 'application/json, text/plain, */*'; - // Auto-detect the Content-Type header if one isn't present already. - if (!headers['Content-Type']) { - const detectedType = req.detectContentTypeHeader(); - // Sometimes Content-Type detection fails. - if (detectedType !== null) { - headers['Content-Type'] = detectedType; - } - } - return { - body: req.serializeBody(), - method: req.method, - headers, - credentials - }; - } - concatChunks(chunks, totalLength) { - const chunksAll = new Uint8Array(totalLength); - let position = 0; - for (const chunk of chunks) { - chunksAll.set(chunk, position); - position += chunk.length; - } - return chunksAll; - } -} -FetchBackend.ɵfac = function FetchBackend_Factory(t) { - return new (t || FetchBackend)(); -}; -FetchBackend.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵdefineInjectable"]({ - token: FetchBackend, - factory: FetchBackend.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵsetClassMetadata"](FetchBackend, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable - }], null, null); -})(); -/** - * Abstract class to provide a mocked implementation of `fetch()` - */ -class FetchFactory {} -function noop() {} -/** - * Zone.js treats a rejected promise that has not yet been awaited - * as an unhandled error. This function adds a noop `.then` to make - * sure that Zone.js doesn't throw an error if the Promise is rejected - * synchronously. - */ -function silenceSuperfluousUnhandledPromiseRejection(promise) { - promise.then(noop, noop); -} -function interceptorChainEndFn(req, finalHandlerFn) { - return finalHandlerFn(req); -} -/** - * Constructs a `ChainedInterceptorFn` which adapts a legacy `HttpInterceptor` to the - * `ChainedInterceptorFn` interface. - */ -function adaptLegacyInterceptorToChain(chainTailFn, interceptor) { - return (initialRequest, finalHandlerFn) => interceptor.intercept(initialRequest, { - handle: downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn) - }); -} -/** - * Constructs a `ChainedInterceptorFn` which wraps and invokes a functional interceptor in the given - * injector. - */ -function chainedInterceptorFn(chainTailFn, interceptorFn, injector) { - // clang-format off - return (initialRequest, finalHandlerFn) => injector.runInContext(() => interceptorFn(initialRequest, downstreamRequest => chainTailFn(downstreamRequest, finalHandlerFn))); - // clang-format on -} -/** - * A multi-provider token that represents the array of registered - * `HttpInterceptor` objects. - * - * @publicApi - */ -const HTTP_INTERCEPTORS = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.InjectionToken(ngDevMode ? 'HTTP_INTERCEPTORS' : ''); -/** - * A multi-provided token of `HttpInterceptorFn`s. - */ -const HTTP_INTERCEPTOR_FNS = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.InjectionToken(ngDevMode ? 'HTTP_INTERCEPTOR_FNS' : ''); -/** - * A multi-provided token of `HttpInterceptorFn`s that are only set in root. - */ -const HTTP_ROOT_INTERCEPTOR_FNS = new _angular_core__WEBPACK_IMPORTED_MODULE_5__.InjectionToken(ngDevMode ? 'HTTP_ROOT_INTERCEPTOR_FNS' : ''); -/** - * Creates an `HttpInterceptorFn` which lazily initializes an interceptor chain from the legacy - * class-based interceptors and runs the request through it. - */ -function legacyInterceptorFnFactory() { - let chain = null; - return (req, handler) => { - if (chain === null) { - const interceptors = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(HTTP_INTERCEPTORS, { - optional: true - }) ?? []; - // Note: interceptors are wrapped right-to-left so that final execution order is - // left-to-right. That is, if `interceptors` is the array `[a, b, c]`, we want to - // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside - // out. - chain = interceptors.reduceRight(adaptLegacyInterceptorToChain, interceptorChainEndFn); - } - const pendingTasks = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵInitialRenderPendingTasks"]); - const taskId = pendingTasks.add(); - return chain(req, handler).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__.finalize)(() => pendingTasks.remove(taskId))); - }; -} -class HttpInterceptorHandler extends HttpHandler { - constructor(backend, injector) { - super(); - this.backend = backend; - this.injector = injector; - this.chain = null; - this.pendingTasks = (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.inject)(_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵInitialRenderPendingTasks"]); - } - handle(initialRequest) { - if (this.chain === null) { - const dedupedInterceptorFns = Array.from(new Set([...this.injector.get(HTTP_INTERCEPTOR_FNS), ...this.injector.get(HTTP_ROOT_INTERCEPTOR_FNS, [])])); - // Note: interceptors are wrapped right-to-left so that final execution order is - // left-to-right. That is, if `dedupedInterceptorFns` is the array `[a, b, c]`, we want to - // produce a chain that is conceptually `c(b(a(end)))`, which we build from the inside - // out. - this.chain = dedupedInterceptorFns.reduceRight((nextSequencedFn, interceptorFn) => chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector), interceptorChainEndFn); - } - const taskId = this.pendingTasks.add(); - return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest)).pipe((0,rxjs_operators__WEBPACK_IMPORTED_MODULE_7__.finalize)(() => this.pendingTasks.remove(taskId))); - } -} -HttpInterceptorHandler.ɵfac = function HttpInterceptorHandler_Factory(t) { - return new (t || HttpInterceptorHandler)(_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵinject"](HttpBackend), _angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵinject"](_angular_core__WEBPACK_IMPORTED_MODULE_5__.EnvironmentInjector)); -}; -HttpInterceptorHandler.ɵprov = /* @__PURE__ */_angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵɵdefineInjectable"]({ - token: HttpInterceptorHandler, - factory: HttpInterceptorHandler.ɵfac -}); -(function () { - (typeof ngDevMode === "undefined" || ngDevMode) && _angular_core__WEBPACK_IMPORTED_MODULE_5__["ɵsetClassMetadata"](HttpInterceptorHandler, [{ - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable - }], function () { - return [{ - type: HttpBackend - }, { - type: _angular_core__WEBPACK_IMPORTED_MODULE_5__.EnvironmentInjector - }]; - }, null); -})(); - -// Every request made through JSONP needs a callback name that's unique across the -// whole page. Each request is assigned an id and the callback name is constructed -// from that. The next id to be assigned is tracked in a global variable here that -// is shared among all applications on the page. -let nextRequestId = 0; -/** - * When a pending