From a904d4980a4e2ccf2d0b7fdde275aed84cad7b34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D0=B4=D0=BB=D0=B0=D0=BD=20=D0=A8=D0=B0=D0=BC=D0=B0?=
 =?UTF-8?q?=D0=B2=D0=BE=D0=B2?= <a.shamavov@iqdev.digital>
Date: Tue, 23 Jul 2024 14:30:41 +0500
Subject: [PATCH] SYM-3 | Initial commit

---
 .gitignore                                    |   1 +
 .idea/.gitignore                              |   8 +
 .idea/modules.xml                             |   8 +
 .idea/patterns.iml                            |  11 +
 .idea/php.xml                                 |  25 ++
 .../00215233e257f10834f8b4b383a7544d9c5fea51  |   0
 .../03fdca5e9ac63e763e5faf0fba470a56f1346842  |   0
 .../0a224c110043d0690591e7fd3e369671b22e2805  |   0
 .../0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d  |   0
 .../100893ec40d4b0b261c2f59f96af4f3ceba09736  |   0
 .../18b11e0abff3523819696f07262d349a75abdb03  |   0
 .../197887b1d7350f1a3487c11bc2f49fa5e0946b30  |   0
 .../2236f22862fca6db4bad3ddd35d787d0bdc8fe93  |   0
 .../23112e0283e2ac6256e57729712acd1b68e1cb7f  |   0
 .../25a285fd184040c023f8d27070d1534ed87f9ce2  |   0
 .../2e711f74fde310eac34ce6d154db0aacd90b8d98  |   0
 .../340f9d7a8520b340c3dae6cd7945a049209926c0  |   0
 .../37106991d149ea238c9bc1b7d4b7477414ba28b8  |   0
 .../3957b91a0d8450cea0115cfd5af69eac90d75897  |   0
 .../409afa63612ce2b9be976ccc0cd41dc2430a2044  |   0
 .../41e3818509e1d237a9d0c0074a499af0d4e1b767  |   0
 .../4233f6b3ffbc0a852718b96185138e90921485a1  |   0
 .../44ecd97588199f820daa9832c1b971d9a5589d8b  |   0
 .../491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a  |   0
 .../49a602fbbaeb3abb68fde9cb365232b41812e05e  |   0
 .../5a62b394dcf7fb7f61298a3ba9e327e5885f64ac  |   0
 .../5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd  |   0
 .../5fb372f011560bd93c2608749d4eb82ad815e860  |   0
 .../6740c7dcd3493efe761e55e6b086c7589d4b8094  |   0
 .../67ea86715647495cf04d49debe539482dee7aed6  |   0
 .../6ef7a54b7ac2dc4884cae2d91670f15d3a72abca  |   0
 .../7237e58ac75156fc8a6cf73db5ee1932d927a88e  |   0
 .../7359140b7b0cfe2eae6abe9903cbc3d91a291fa2  |   0
 .../7414b490c7c67ef8640d942bca6fc957aeb88dc7  |   0
 .../78d8f9f012144989cd59dc8e58b00efd6a849749  |   0
 .../7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566  |   0
 .../8501725cc8e8af15d1e262096910b7fbd79f4022  |   0
 .../883cdc9da75c3ba62bc4db46b27e6dc1cc15193b  |   0
 .../88fc03da1c5e4c0e672160d9e5ad06b95975bfd4  |   0
 .../8952189aefb295c2b4fd6e25ecdc8055934c87b7  |   0
 .../8abf9f699b61ef1477359e3de2630fc646090a53  |   0
 .../8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e  |   0
 .../8e46e6b6bc30ba859d323263e009551e60b96fc7  |   0
 .../8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d  |   0
 .../921e67a985407143cf0f08429e13fbbf8ff15b2c  |   0
 .../9f65cf811c746f7951719af4d7b947f5539d5196  |   0
 .../a5cc2925ca8258af241be7e5b0381edf30266302  |   0
 .../b3acde0b119d81a9d81bd055a2a7918d8a9e3318  |   0
 .../b878e4cb197da0f597dbce90f69f6451a1670556  |   2 +
 .../b8ed1daa96092063f32b1324e0e450b09d2c1dd4  |   3 +
 .../bb6499b8e938f92a3695fff1afe57edea4b9efb7  |   0
 .../bccad600b7d1dd6df4440bf078a25ac1916ac2d3  |   0
 .../be00c5b2b2e0e613e7b39232498768b51a7d6ed5  |   0
 .../c0a7fe4a4b4a1a70898a5812441354d3619bb4fc  |   0
 .../c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d  |   0
 .../ca033487399677ec4908c1f9a8834655f0f4df67  |   0
 .../ca930674550163bac55780c0116fb972e1ee558b  |   0
 .../cb3428aff5a57ce98152a18ac112512d5945c4ca  |   0
 .../d3a697d31a6c49c8e222af4bbebf2361eb98ff99  |   0
 .../e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e  |   0
 .../e3ff9263fa6976a6388af1e288c15d159f976f8f  |   0
 .../e464416b53a806b9730005e0bb693de604d12c82  |   0
 .../e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66  |   0
 .../e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b  |   0
 .../e75b4a1e09e07da498641870dfc86cd4079b3432  |   0
 .../ec2f06c5ede9538c4abad6bc160a68970ed34fc7  |   0
 .../f2082986f709d9d167cd8743efee93c2663941ee  |   0
 .../f55eda3a2b1f01048714c98e5a7ed49a3eba642d  |   0
 .../fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f  |   0
 .idea/sonarlint/issuestore/index.pb           | 352 ++++++++++++++++++
 .../00215233e257f10834f8b4b383a7544d9c5fea51  |   0
 .../03fdca5e9ac63e763e5faf0fba470a56f1346842  |   0
 .../0a224c110043d0690591e7fd3e369671b22e2805  |   0
 .../0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d  |   0
 .../100893ec40d4b0b261c2f59f96af4f3ceba09736  |   0
 .../18b11e0abff3523819696f07262d349a75abdb03  |   0
 .../197887b1d7350f1a3487c11bc2f49fa5e0946b30  |   0
 .../2236f22862fca6db4bad3ddd35d787d0bdc8fe93  |   0
 .../23112e0283e2ac6256e57729712acd1b68e1cb7f  |   0
 .../25a285fd184040c023f8d27070d1534ed87f9ce2  |   0
 .../2e711f74fde310eac34ce6d154db0aacd90b8d98  |   0
 .../340f9d7a8520b340c3dae6cd7945a049209926c0  |   0
 .../37106991d149ea238c9bc1b7d4b7477414ba28b8  |   0
 .../3957b91a0d8450cea0115cfd5af69eac90d75897  |   0
 .../409afa63612ce2b9be976ccc0cd41dc2430a2044  |   0
 .../41e3818509e1d237a9d0c0074a499af0d4e1b767  |   0
 .../4233f6b3ffbc0a852718b96185138e90921485a1  |   0
 .../44ecd97588199f820daa9832c1b971d9a5589d8b  |   0
 .../491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a  |   0
 .../49a602fbbaeb3abb68fde9cb365232b41812e05e  |   0
 .../5a62b394dcf7fb7f61298a3ba9e327e5885f64ac  |   0
 .../5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd  |   0
 .../5fb372f011560bd93c2608749d4eb82ad815e860  |   0
 .../6740c7dcd3493efe761e55e6b086c7589d4b8094  |   0
 .../67ea86715647495cf04d49debe539482dee7aed6  |   0
 .../6ef7a54b7ac2dc4884cae2d91670f15d3a72abca  |   0
 .../7237e58ac75156fc8a6cf73db5ee1932d927a88e  |   0
 .../7359140b7b0cfe2eae6abe9903cbc3d91a291fa2  |   0
 .../7414b490c7c67ef8640d942bca6fc957aeb88dc7  |   0
 .../78d8f9f012144989cd59dc8e58b00efd6a849749  |   0
 .../7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566  |   0
 .../8501725cc8e8af15d1e262096910b7fbd79f4022  |   0
 .../883cdc9da75c3ba62bc4db46b27e6dc1cc15193b  |   0
 .../88fc03da1c5e4c0e672160d9e5ad06b95975bfd4  |   0
 .../8952189aefb295c2b4fd6e25ecdc8055934c87b7  |   0
 .../8abf9f699b61ef1477359e3de2630fc646090a53  |   0
 .../8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e  |   0
 .../8e46e6b6bc30ba859d323263e009551e60b96fc7  |   0
 .../8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d  |   0
 .../921e67a985407143cf0f08429e13fbbf8ff15b2c  |   0
 .../9f65cf811c746f7951719af4d7b947f5539d5196  |   0
 .../a5cc2925ca8258af241be7e5b0381edf30266302  |   0
 .../b3acde0b119d81a9d81bd055a2a7918d8a9e3318  |   0
 .../b878e4cb197da0f597dbce90f69f6451a1670556  |   0
 .../b8ed1daa96092063f32b1324e0e450b09d2c1dd4  |   0
 .../bb6499b8e938f92a3695fff1afe57edea4b9efb7  |   0
 .../bccad600b7d1dd6df4440bf078a25ac1916ac2d3  |   0
 .../be00c5b2b2e0e613e7b39232498768b51a7d6ed5  |   0
 .../c0a7fe4a4b4a1a70898a5812441354d3619bb4fc  |   0
 .../c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d  |   0
 .../ca033487399677ec4908c1f9a8834655f0f4df67  |   0
 .../ca930674550163bac55780c0116fb972e1ee558b  |   0
 .../cb3428aff5a57ce98152a18ac112512d5945c4ca  |   0
 .../d3a697d31a6c49c8e222af4bbebf2361eb98ff99  |   0
 .../e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e  |   0
 .../e3ff9263fa6976a6388af1e288c15d159f976f8f  |   0
 .../e464416b53a806b9730005e0bb693de604d12c82  |   0
 .../e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66  |   0
 .../e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b  |   0
 .../e75b4a1e09e07da498641870dfc86cd4079b3432  |   0
 .../ec2f06c5ede9538c4abad6bc160a68970ed34fc7  |   0
 .../f2082986f709d9d167cd8743efee93c2663941ee  |   0
 .../f55eda3a2b1f01048714c98e5a7ed49a3eba642d  |   0
 .../fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f  |   0
 .idea/sonarlint/securityhotspotstore/index.pb | 352 ++++++++++++++++++
 .idea/vcs.xml                                 |   6 +
 composer.json                                 |   9 +
 index.php                                     |  47 +++
 src/AbstractFactory/CardFactory.php           |  10 +
 src/AbstractFactory/CreditCard.php            |   8 +
 src/AbstractFactory/DebitCard.php             |  10 +
 src/AbstractFactory/README.md                 |   1 +
 .../SberMortgageCreditCard.php                |  16 +
 src/AbstractFactory/SberSalaryDebitCard.php   |  21 ++
 src/AbstractFactory/SberbankCardFactory.php   |  17 +
 src/AbstractFactory/TinkCarLoanCreditCard.php |  14 +
 src/AbstractFactory/TinkStipendDebitCard.php  |  19 +
 src/AbstractFactory/TinkoffCardFactory.php    |  17 +
 src/Adapter/Account.php                       |  18 +
 src/Adapter/AccountAdapter.php                |  26 ++
 src/Adapter/AccountInterface.php              |  10 +
 src/Adapter/OtherAccountInterface.php         |  12 +
 src/Adapter/README.md                         |   1 +
 src/Builder/AccountBuilder.php                |  33 ++
 src/Builder/Builder.php                       |  12 +
 src/Builder/Director.php                      |  15 +
 src/Builder/README.md                         |   1 +
 src/Command/Command.php                       |   8 +
 src/Command/EnterCashCommand.php              |  15 +
 src/Command/Invoker.php                       |  18 +
 src/Command/README.md                         |   1 +
 src/Command/ReceiverATM.php                   |  18 +
 src/Command/WithdrawCashCommand.php           |  15 +
 src/Decorator/Account.php                     |  10 +
 src/Decorator/AccountDecorator.php            |  10 +
 src/Decorator/README.md                       |   1 +
 src/Decorator/SavingsAccount.php              |  20 +
 src/DependencyInjection/ATM.php               |  17 +
 src/DependencyInjection/CreditCard.php        |  28 ++
 src/DependencyInjection/README.md             |   1 +
 src/Facade/ATM.php                            |  16 +
 src/Facade/Client.php                         |  14 +
 src/Facade/Facade.php                         |  27 ++
 src/Facade/README.md                          |   1 +
 src/FactoryMethod/Card.php                    |  10 +
 src/FactoryMethod/CardFactory.php             |   8 +
 src/FactoryMethod/CreditCard.php              |  18 +
 src/FactoryMethod/CreditCardFactory.php       |  11 +
 src/FactoryMethod/DebitCard.php               |   8 +
 src/FactoryMethod/DebitCardFactory.php        |  11 +
 src/FactoryMethod/README.md                   |   1 +
 src/Iterator/Payment.php                      |  17 +
 src/Iterator/PaymentList.php                  |  60 +++
 src/Iterator/README.md                        |   1 +
 src/Observer/Card.php                         |  47 +++
 src/Observer/CardObserver.php                 |  23 ++
 src/Observer/README.md                        |   1 +
 src/Registry/README.md                        |   1 +
 src/Registry/Registry.php                     |  33 ++
 src/ServiceLocator/README.md                  |   1 +
 src/ServiceLocator/RegisterService.php        |  20 +
 src/ServiceLocator/ServiceInterface.php       |   8 +
 src/ServiceLocator/ServiceLocator.php         |  44 +++
 src/Strategy/AnnuityPayment.php               |  18 +
 src/Strategy/DifferentialPayment.php          |  17 +
 src/Strategy/Payment.php                      |   8 +
 src/Strategy/README.md                        |   1 +
 197 files changed, 1672 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .idea/.gitignore
 create mode 100644 .idea/modules.xml
 create mode 100644 .idea/patterns.iml
 create mode 100644 .idea/php.xml
 create mode 100644 .idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
 create mode 100644 .idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
 create mode 100644 .idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
 create mode 100644 .idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
 create mode 100644 .idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
 create mode 100644 .idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03
 create mode 100644 .idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
 create mode 100644 .idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
 create mode 100644 .idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
 create mode 100644 .idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
 create mode 100644 .idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
 create mode 100644 .idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
 create mode 100644 .idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
 create mode 100644 .idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
 create mode 100644 .idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
 create mode 100644 .idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
 create mode 100644 .idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
 create mode 100644 .idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
 create mode 100644 .idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
 create mode 100644 .idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
 create mode 100644 .idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
 create mode 100644 .idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
 create mode 100644 .idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
 create mode 100644 .idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
 create mode 100644 .idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6
 create mode 100644 .idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
 create mode 100644 .idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
 create mode 100644 .idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
 create mode 100644 .idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
 create mode 100644 .idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
 create mode 100644 .idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
 create mode 100644 .idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
 create mode 100644 .idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
 create mode 100644 .idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
 create mode 100644 .idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
 create mode 100644 .idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
 create mode 100644 .idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
 create mode 100644 .idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
 create mode 100644 .idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
 create mode 100644 .idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
 create mode 100644 .idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
 create mode 100644 .idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
 create mode 100644 .idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
 create mode 100644 .idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
 create mode 100644 .idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
 create mode 100644 .idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
 create mode 100644 .idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
 create mode 100644 .idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
 create mode 100644 .idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
 create mode 100644 .idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
 create mode 100644 .idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
 create mode 100644 .idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b
 create mode 100644 .idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
 create mode 100644 .idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
 create mode 100644 .idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
 create mode 100644 .idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
 create mode 100644 .idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82
 create mode 100644 .idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
 create mode 100644 .idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
 create mode 100644 .idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
 create mode 100644 .idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
 create mode 100644 .idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
 create mode 100644 .idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
 create mode 100644 .idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
 create mode 100644 .idea/sonarlint/issuestore/index.pb
 create mode 100644 .idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
 create mode 100644 .idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
 create mode 100644 .idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
 create mode 100644 .idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
 create mode 100644 .idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
 create mode 100644 .idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03
 create mode 100644 .idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
 create mode 100644 .idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
 create mode 100644 .idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
 create mode 100644 .idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
 create mode 100644 .idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
 create mode 100644 .idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
 create mode 100644 .idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
 create mode 100644 .idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
 create mode 100644 .idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
 create mode 100644 .idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
 create mode 100644 .idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
 create mode 100644 .idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
 create mode 100644 .idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
 create mode 100644 .idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6
 create mode 100644 .idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
 create mode 100644 .idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
 create mode 100644 .idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
 create mode 100644 .idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
 create mode 100644 .idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
 create mode 100644 .idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
 create mode 100644 .idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
 create mode 100644 .idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
 create mode 100644 .idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
 create mode 100644 .idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
 create mode 100644 .idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
 create mode 100644 .idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
 create mode 100644 .idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
 create mode 100644 .idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
 create mode 100644 .idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b
 create mode 100644 .idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
 create mode 100644 .idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
 create mode 100644 .idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
 create mode 100644 .idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
 create mode 100644 .idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
 create mode 100644 .idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
 create mode 100644 .idea/sonarlint/securityhotspotstore/index.pb
 create mode 100644 .idea/vcs.xml
 create mode 100644 composer.json
 create mode 100644 index.php
 create mode 100644 src/AbstractFactory/CardFactory.php
 create mode 100644 src/AbstractFactory/CreditCard.php
 create mode 100644 src/AbstractFactory/DebitCard.php
 create mode 100644 src/AbstractFactory/README.md
 create mode 100644 src/AbstractFactory/SberMortgageCreditCard.php
 create mode 100644 src/AbstractFactory/SberSalaryDebitCard.php
 create mode 100644 src/AbstractFactory/SberbankCardFactory.php
 create mode 100644 src/AbstractFactory/TinkCarLoanCreditCard.php
 create mode 100644 src/AbstractFactory/TinkStipendDebitCard.php
 create mode 100644 src/AbstractFactory/TinkoffCardFactory.php
 create mode 100644 src/Adapter/Account.php
 create mode 100644 src/Adapter/AccountAdapter.php
 create mode 100644 src/Adapter/AccountInterface.php
 create mode 100644 src/Adapter/OtherAccountInterface.php
 create mode 100644 src/Adapter/README.md
 create mode 100644 src/Builder/AccountBuilder.php
 create mode 100644 src/Builder/Builder.php
 create mode 100644 src/Builder/Director.php
 create mode 100644 src/Builder/README.md
 create mode 100644 src/Command/Command.php
 create mode 100644 src/Command/EnterCashCommand.php
 create mode 100644 src/Command/Invoker.php
 create mode 100644 src/Command/README.md
 create mode 100644 src/Command/ReceiverATM.php
 create mode 100644 src/Command/WithdrawCashCommand.php
 create mode 100644 src/Decorator/Account.php
 create mode 100644 src/Decorator/AccountDecorator.php
 create mode 100644 src/Decorator/README.md
 create mode 100644 src/Decorator/SavingsAccount.php
 create mode 100644 src/DependencyInjection/ATM.php
 create mode 100644 src/DependencyInjection/CreditCard.php
 create mode 100644 src/DependencyInjection/README.md
 create mode 100644 src/Facade/ATM.php
 create mode 100644 src/Facade/Client.php
 create mode 100644 src/Facade/Facade.php
 create mode 100644 src/Facade/README.md
 create mode 100644 src/FactoryMethod/Card.php
 create mode 100644 src/FactoryMethod/CardFactory.php
 create mode 100644 src/FactoryMethod/CreditCard.php
 create mode 100644 src/FactoryMethod/CreditCardFactory.php
 create mode 100644 src/FactoryMethod/DebitCard.php
 create mode 100644 src/FactoryMethod/DebitCardFactory.php
 create mode 100644 src/FactoryMethod/README.md
 create mode 100644 src/Iterator/Payment.php
 create mode 100644 src/Iterator/PaymentList.php
 create mode 100644 src/Iterator/README.md
 create mode 100644 src/Observer/Card.php
 create mode 100644 src/Observer/CardObserver.php
 create mode 100644 src/Observer/README.md
 create mode 100644 src/Registry/README.md
 create mode 100644 src/Registry/Registry.php
 create mode 100644 src/ServiceLocator/README.md
 create mode 100644 src/ServiceLocator/RegisterService.php
 create mode 100644 src/ServiceLocator/ServiceInterface.php
 create mode 100644 src/ServiceLocator/ServiceLocator.php
 create mode 100644 src/Strategy/AnnuityPayment.php
 create mode 100644 src/Strategy/DifferentialPayment.php
 create mode 100644 src/Strategy/Payment.php
 create mode 100644 src/Strategy/README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57872d0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/vendor/
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..26f6143
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/patterns.iml" filepath="$PROJECT_DIR$/.idea/patterns.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/patterns.iml b/.idea/patterns.iml
new file mode 100644
index 0000000..365be24
--- /dev/null
+++ b/.idea/patterns.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="Hp\Patterns\" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000..3a4f333
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MessDetectorOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCSFixerOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCodeSnifferOptionsConfiguration">
+    <option name="highlightLevel" value="WARNING" />
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PhpIncludePathManager">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/composer" />
+    </include_path>
+  </component>
+  <component name="PhpProjectSharedConfiguration" php_language_level="8.3" />
+  <component name="PhpStanOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PsalmOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/issuestore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/issuestore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/issuestore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/issuestore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/issuestore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/issuestore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/issuestore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/issuestore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/issuestore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/issuestore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/issuestore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
new file mode 100644
index 0000000..f5f575f
--- /dev/null
+++ b/.idea/sonarlint/issuestore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
@@ -0,0 +1,2 @@
+
+§	php:S1488	"`Immediately return this expression instead of assigning it to the temporary variable "$account".(©Ÿ§Åúÿÿÿÿ8¶°‹ò2J$3d3cfc97-789f-461a-bb60-8a34722ec00c
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
new file mode 100644
index 0000000..a6c8428
--- /dev/null
+++ b/.idea/sonarlint/issuestore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
@@ -0,0 +1,3 @@
+
+p	php:S1068	")Remove this unused "$date" private field.(òØô”üÿÿÿÿ8‹¬Àð2J$0c0a033e-1ff4-40bd-b40b-abfcc293c20f
+r	php:S1068"+Remove this unused "$amount" private field.(èÀ‘ðüÿÿÿÿ8‹¬Àð2J$f3de3300-a9eb-4494-905d-cadc131cc062
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/issuestore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/issuestore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/issuestore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/issuestore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/issuestore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/issuestore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
new file mode 100644
index 0000000..977e4b8
--- /dev/null
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -0,0 +1,352 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+L
+src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98
+W
+'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
+U
+%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044
+V
+&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
+9
+	index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7
+O
+src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
+V
+&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5
+Q
+!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca
+M
+src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8
+S
+#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7
+R
+"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67
+Q
+!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094
+[
++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d
+Z
+*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
+[
++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
+^
+.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
+\
+,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196
+]
+-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee
+G
+src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30
+H
+src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
+O
+src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
+T
+$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93
+F
+src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3
+G
+src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82
+E
+src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b
+G
+src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1
+K
+src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842
+P
+ src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f
+S
+#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03
+F
+src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767
+I
+src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022
+K
+src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
+D
+src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860
+E
+src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
+G
+src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e
+N
+src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318
+P
+ src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2
+U
+%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
+N
+src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
+E
+src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7
+F
+src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e
+H
+src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4
+L
+src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b
+E
+src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51
+G
+src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805
+N
+src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f
+H
+src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556
+F
+src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c
+E
+src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
+M
+src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7
+I
+src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7
+R
+"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0
+P
+ src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
+B
+src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
+E
+src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6
+J
+src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432
+Q
+!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53
+O
+src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736
+P
+ src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
+V
+&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749
+W
+'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb
+w
+G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e
+
+Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37
+
+Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842
+
+Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411
+
+Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d
+w
+G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a
+w
+G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d
+
+Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794
+
+Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554
+w
+G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95
+
+Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5
+
+Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c
+w
+G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680
+w
+G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51
+
+Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e
+
+Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9
+w
+G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0
+w
+G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0
+w
+G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+w
+G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04
+
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9
+w
+G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e
+
+Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4
+
+Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66
+w
+G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564
+w
+G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05
+w
+G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d
+w
+G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c
+
+Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4
+
+Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84
+
+Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4
+
+Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305
+
+Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea
+
+Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f
+
+Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4
+w
+G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf
+w
+G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7
+
+Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366
+
+Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7
+
+Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c
+w
+G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61
+
+Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e
+
+Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f
+w
+G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55
+
+Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9
+
+Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18
+w
+G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693
+w
+G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220
+w
+G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d
+w
+G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0
+
+Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466
+w
+G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88
+
+Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19
+w
+G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9
+
+Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034
+
+Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1
+
+Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df
+w
+G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247
+w
+G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d
+w
+G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00
+w
+G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd
+w
+G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba
+
+Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821
+
+Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3
+w
+G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e
+
+Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9
+
+Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda
+
+Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394
+w
+G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa
+w
+G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2
+w
+G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82
+
+Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e
+w
+G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b
+
+Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc
+
+Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d
+w
+G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5
+
+Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d
+w
+G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6
+w
+G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3
+
+Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7
+
+Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154
+w
+G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72
+
+Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6
+w
+G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf
+
+Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5
+
+Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090
+w
+G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747
+w
+G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51 b/.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842 b/.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805 b/.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d b/.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736 b/.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03 b/.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30 b/.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93 b/.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f b/.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2 b/.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98 b/.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0 b/.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8 b/.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044 b/.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767 b/.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1 b/.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b b/.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a b/.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e b/.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac b/.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd b/.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860 b/.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094 b/.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6 b/.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca b/.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e b/.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2 b/.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7 b/.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749 b/.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566 b/.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022 b/.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b b/.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4 b/.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7 b/.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53 b/.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e b/.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7 b/.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c b/.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196 b/.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302 b/.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318 b/.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556 b/.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4 b/.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7 b/.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3 b/.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5 b/.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc b/.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d b/.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67 b/.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b b/.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca b/.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99 b/.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e b/.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f b/.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82 b/.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66 b/.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b b/.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432 b/.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7 b/.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee b/.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d b/.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f b/.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
new file mode 100644
index 0000000..977e4b8
--- /dev/null
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -0,0 +1,352 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+L
+src/ServiceLocator/README.md,2\e\2e711f74fde310eac34ce6d154db0aacd90b8d98
+W
+'src/ServiceLocator/ServiceInterface.php,5\c\5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd
+U
+%src/ServiceLocator/ServiceLocator.php,4\0\409afa63612ce2b9be976ccc0cd41dc2430a2044
+V
+&src/ServiceLocator/RegisterService.php,8\8\883cdc9da75c3ba62bc4db46b27e6dc1cc15193b
+9
+	index.php,b\b\bb6499b8e938f92a3695fff1afe57edea4b9efb7
+O
+src/DependencyInjection/ATM.php,f\a\fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f
+V
+&src/DependencyInjection/CreditCard.php,b\e\be00c5b2b2e0e613e7b39232498768b51a7d6ed5
+Q
+!src/DependencyInjection/README.md,c\b\cb3428aff5a57ce98152a18ac112512d5945c4ca
+M
+src/AbstractFactory/README.md,3\7\37106991d149ea238c9bc1b7d4b7477414ba28b8
+S
+#src/AbstractFactory/CardFactory.php,8\e\8e46e6b6bc30ba859d323263e009551e60b96fc7
+R
+"src/AbstractFactory/CreditCard.php,c\a\ca033487399677ec4908c1f9a8834655f0f4df67
+Q
+!src/AbstractFactory/DebitCard.php,6\7\6740c7dcd3493efe761e55e6b086c7589d4b8094
+[
++src/AbstractFactory/SberbankCardFactory.php,f\5\f55eda3a2b1f01048714c98e5a7ed49a3eba642d
+Z
+*src/AbstractFactory/TinkoffCardFactory.php,c\0\c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d
+[
++src/AbstractFactory/SberSalaryDebitCard.php,4\9\491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a
+^
+.src/AbstractFactory/SberMortgageCreditCard.php,8\8\88fc03da1c5e4c0e672160d9e5ad06b95975bfd4
+\
+,src/AbstractFactory/TinkStipendDebitCard.php,9\f\9f65cf811c746f7951719af4d7b947f5539d5196
+]
+-src/AbstractFactory/TinkCarLoanCreditCard.php,f\2\f2082986f709d9d167cd8743efee93c2663941ee
+G
+src/Decorator/README.md,1\9\197887b1d7350f1a3487c11bc2f49fa5e0946b30
+H
+src/Strategy/Payment.php,e\4\e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66
+O
+src/Strategy/AnnuityPayment.php,7\3\7359140b7b0cfe2eae6abe9903cbc3d91a291fa2
+T
+$src/Strategy/DifferentialPayment.php,2\2\2236f22862fca6db4bad3ddd35d787d0bdc8fe93
+F
+src/Strategy/README.md,b\c\bccad600b7d1dd6df4440bf078a25ac1916ac2d3
+G
+src/Command/Command.php,e\4\e464416b53a806b9730005e0bb693de604d12c82
+E
+src/Command/README.md,c\a\ca930674550163bac55780c0116fb972e1ee558b
+G
+src/Command/Invoker.php,4\2\4233f6b3ffbc0a852718b96185138e90921485a1
+K
+src/Command/ReceiverATM.php,0\3\03fdca5e9ac63e763e5faf0fba470a56f1346842
+P
+ src/Command/EnterCashCommand.php,e\3\e3ff9263fa6976a6388af1e288c15d159f976f8f
+S
+#src/Command/WithdrawCashCommand.php,1\8\18b11e0abff3523819696f07262d349a75abdb03
+F
+src/Registry/README.md,4\1\41e3818509e1d237a9d0c0074a499af0d4e1b767
+I
+src/Registry/Registry.php,8\5\8501725cc8e8af15d1e262096910b7fbd79f4022
+K
+src/FactoryMethod/README.md,6\e\6ef7a54b7ac2dc4884cae2d91670f15d3a72abca
+D
+src/Facade/README.md,5\f\5fb372f011560bd93c2608749d4eb82ad815e860
+E
+src/Facade/Facade.php,8\e\8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e
+G
+src/Adapter/Account.php,7\2\7237e58ac75156fc8a6cf73db5ee1932d927a88e
+N
+src/Adapter/SavingsAccount.php,b\3\b3acde0b119d81a9d81bd055a2a7918d8a9e3318
+P
+ src/Adapter/AccountInterface.php,2\5\25a285fd184040c023f8d27070d1534ed87f9ce2
+U
+%src/Adapter/OtherAccountInterface.php,c\0\c0a7fe4a4b4a1a70898a5812441354d3619bb4fc
+N
+src/Adapter/AccountAdapter.php,e\0\e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e
+E
+src/Adapter/README.md,8\9\8952189aefb295c2b4fd6e25ecdc8055934c87b7
+F
+src/Iterator/README.md,4\9\49a602fbbaeb3abb68fde9cb365232b41812e05e
+H
+src/Iterator/Payment.php,b\8\b8ed1daa96092063f32b1324e0e450b09d2c1dd4
+L
+src/Iterator/PaymentList.php,4\4\44ecd97588199f820daa9832c1b971d9a5589d8b
+E
+src/Builder/README.md,0\0\00215233e257f10834f8b4b383a7544d9c5fea51
+G
+src/Builder/Builder.php,0\a\0a224c110043d0690591e7fd3e369671b22e2805
+N
+src/Builder/AccountBuilder.php,2\3\23112e0283e2ac6256e57729712acd1b68e1cb7f
+H
+src/Builder/Director.php,b\8\b878e4cb197da0f597dbce90f69f6451a1670556
+F
+src/Observer/README.md,9\2\921e67a985407143cf0f08429e13fbbf8ff15b2c
+E
+src/Observer/Card.php,5\a\5a62b394dcf7fb7f61298a3ba9e327e5885f64ac
+M
+src/Observer/CardObserver.php,e\c\ec2f06c5ede9538c4abad6bc160a68970ed34fc7
+I
+src/Decorator/Account.php,7\4\7414b490c7c67ef8640d942bca6fc957aeb88dc7
+R
+"src/Decorator/AccountDecorator.php,3\4\340f9d7a8520b340c3dae6cd7945a049209926c0
+P
+ src/Decorator/SavingsAccount.php,0\f\0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d
+B
+src/Facade/ATM.php,7\b\7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566
+E
+src/Facade/Client.php,6\7\67ea86715647495cf04d49debe539482dee7aed6
+J
+src/FactoryMethod/Card.php,e\7\e75b4a1e09e07da498641870dfc86cd4079b3432
+Q
+!src/FactoryMethod/CardFactory.php,8\a\8abf9f699b61ef1477359e3de2630fc646090a53
+O
+src/FactoryMethod/DebitCard.php,1\0\100893ec40d4b0b261c2f59f96af4f3ceba09736
+P
+ src/FactoryMethod/CreditCard.php,e\5\e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b
+V
+&src/FactoryMethod/DebitCardFactory.php,7\8\78d8f9f012144989cd59dc8e58b00efd6a849749
+W
+'src/FactoryMethod/CreditCardFactory.php,d\3\d3a697d31a6c49c8e222af4bbebf2361eb98ff99
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca930674550163bac55780c0116fb972e1ee558b,9\9\9961b39c56d9a3e7555253107126ef78869633bb
+w
+G.idea/sonarlint/issuestore/c/a/ca930674550163bac55780c0116fb972e1ee558b,6\6\660f20c6fe8c9722ad4c58f380f2bbce75358f1e
+
+Q.idea/sonarlint/securityhotspotstore/4/2/4233f6b3ffbc0a852718b96185138e90921485a1,2\1\21085957b9b792633ddc54153b0d843508ef9f37
+
+Q.idea/sonarlint/securityhotspotstore/0/3/03fdca5e9ac63e763e5faf0fba470a56f1346842,0\c\0c589b3d861764bdbe1ab274ff38f90b51564842
+
+Q.idea/sonarlint/securityhotspotstore/e/3/e3ff9263fa6976a6388af1e288c15d159f976f8f,e\6\e6d643d94b8cdb5f646dab5e1d19551aaf60a411
+
+Q.idea/sonarlint/securityhotspotstore/1/8/18b11e0abff3523819696f07262d349a75abdb03,9\e\9e16a1982cc2b685b24576c50325c49707e9833d
+w
+G.idea/sonarlint/issuestore/1/8/18b11e0abff3523819696f07262d349a75abdb03,3\1\315f3cd16acac36af09395cb515e80fb987ce39a
+w
+G.idea/sonarlint/issuestore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,5\d\5d6dd7596e5a60820435d3bc1565fc969175312d
+
+Q.idea/sonarlint/securityhotspotstore/4/1/41e3818509e1d237a9d0c0074a499af0d4e1b767,0\6\069c76a017ef168776ac8749e83d2231d7953794
+
+Q.idea/sonarlint/securityhotspotstore/8/5/8501725cc8e8af15d1e262096910b7fbd79f4022,4\a\4a7cf17bdf655be07b983b32b01fcc3e94c59554
+w
+G.idea/sonarlint/issuestore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,5\c\5c14fefb54f6956c26f737502cb6831ad0579b95
+
+Q.idea/sonarlint/securityhotspotstore/6/e/6ef7a54b7ac2dc4884cae2d91670f15d3a72abca,7\b\7bd83252239ef0792b371cc9874c7db518ef14b5
+
+Q.idea/sonarlint/securityhotspotstore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,b\f\bf76f61f74a82ea9383652d8f43fc09ff6228b9c
+w
+G.idea/sonarlint/issuestore/5/f/5fb372f011560bd93c2608749d4eb82ad815e860,f\1\f1ea3b5979577f0b9b1592fb0e2c370ad1ed5404
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e30b3b6b9279dc77031f65cb55d3bce1b26fd2e,c\7\c78432214a33e2637ae937c2db965b96c2eaf680
+w
+G.idea/sonarlint/issuestore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,a\b\ab618f023e4ed6e0c15e9434f6a0e635b302ab95
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7237e58ac75156fc8a6cf73db5ee1932d927a88e,3\c\3cdc30f8cb4e2792d29902b7b0fde2ae10dd5c51
+
+Q.idea/sonarlint/securityhotspotstore/b/3/b3acde0b119d81a9d81bd055a2a7918d8a9e3318,6\f\6fb331dd68977bbc34af560dff94a575bd867e1e
+
+Q.idea/sonarlint/securityhotspotstore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,1\0\10aaa20c9dd19c0eaf13b0cef07c8565a70edbf9
+w
+G.idea/sonarlint/issuestore/2/5/25a285fd184040c023f8d27070d1534ed87f9ce2,a\0\a0fb91364194a05bf1b62042431801ea32dbb90d
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,3\9\3935065cd6c285b2136abe28675603afeeda55c0
+w
+G.idea/sonarlint/issuestore/c/0/c0a7fe4a4b4a1a70898a5812441354d3619bb4fc,9\c\9c7cf86e21da8e2be5c65747ee7e5aae9106433d
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/e/0/e05a86c06cd0f90ca2bb9eedfa2ab84fe61fc33e,7\b\7b67d4c120b57bce0e3d6242e7153c77da5de5d0
+w
+G.idea/sonarlint/issuestore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,7\4\747ae5cac9a90b67ccf116961185765e33de5812
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+w
+G.idea/sonarlint/issuestore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,4\6\461e1986636cf65c635f78f0b662e3c7d13bd746
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/8/9/8952189aefb295c2b4fd6e25ecdc8055934c87b7,9\0\90fa9b799bada90b1d838eb18540474cac1ada04
+
+Q.idea/sonarlint/securityhotspotstore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,3\0\30205a209c6ce77c4cfc19a09e6f57c588b7fb88
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+w
+G.idea/sonarlint/issuestore/a/5/a5cc2925ca8258af241be7e5b0381edf30266302,e\d\ed67eb178d523a4b3f117dcbe0eda5196367ceec
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a602fbbaeb3abb68fde9cb365232b41812e05e,f\2\f29b30011f3d2ea2a2eb2b1d4d711dfe837d02d9
+w
+G.idea/sonarlint/issuestore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,3\a\3ac83761be1a341d6b8db11631d71e5f89e45c28
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b8ed1daa96092063f32b1324e0e450b09d2c1dd4,8\3\837c13502b2614361e1f0ec580ce8c5b01ed4b4e
+
+Q.idea/sonarlint/securityhotspotstore/2/e/2e711f74fde310eac34ce6d154db0aacd90b8d98,e\e\ee8224b8e2df89d20d6318c8c61ca4a5920a18d4
+
+Q.idea/sonarlint/securityhotspotstore/4/4/44ecd97588199f820daa9832c1b971d9a5589d8b,d\8\d8042d4c3087c4d03e1e7e7bd5f7184d20c59a66
+w
+G.idea/sonarlint/issuestore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,b\7\b7557c84d8b2808a8362d0a2ea3e0385ccbc2564
+w
+G.idea/sonarlint/issuestore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,c\0\c06fdfb2de03e65d63285271d529cea798556f05
+w
+G.idea/sonarlint/issuestore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,2\2\22326d26b2b9dad1fa729911e707336516fb606d
+w
+G.idea/sonarlint/issuestore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,0\e\0e03d4a113cd6c4c62f12fb156c505251a36d62c
+
+Q.idea/sonarlint/securityhotspotstore/0/a/0a224c110043d0690591e7fd3e369671b22e2805,4\e\4e1828e9fed95a4e4c69817b5c83d6511e4159a4
+
+Q.idea/sonarlint/securityhotspotstore/5/c/5c54a7727b8906b5fd6dcc42a07f4d08cdbcabcd,2\5\2591e8c372517c5e816a13782a369d6b65672c84
+
+Q.idea/sonarlint/securityhotspotstore/0/0/00215233e257f10834f8b4b383a7544d9c5fea51,e\7\e76ea2d04809d0b6c0400af49d5aaa8c785230f4
+
+Q.idea/sonarlint/securityhotspotstore/4/0/409afa63612ce2b9be976ccc0cd41dc2430a2044,6\d\6d856d653744127ea9602135cf185ada60c29305
+
+Q.idea/sonarlint/securityhotspotstore/2/3/23112e0283e2ac6256e57729712acd1b68e1cb7f,7\6\76c3ea9bd0592d422fca8f9762c1e60a6fa0a9a9
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b878e4cb197da0f597dbce90f69f6451a1670556,a\f\af941929c2430fd5757deaba54e9c561d08104ea
+
+Q.idea/sonarlint/securityhotspotstore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,2\4\24e60145b337a3ed30c0eb4b83f1195aea7f721f
+
+Q.idea/sonarlint/securityhotspotstore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,2\8\28d452b4b5630a06b3f1e48fe20e1dee3c7f5fe4
+w
+G.idea/sonarlint/issuestore/8/8/883cdc9da75c3ba62bc4db46b27e6dc1cc15193b,7\6\760ff9c0e4200ba85efe626164f98d52375b04cf
+w
+G.idea/sonarlint/issuestore/9/2/921e67a985407143cf0f08429e13fbbf8ff15b2c,7\0\70cba76c31e30833b25b5dabe4bce9360ac84bc7
+
+Q.idea/sonarlint/securityhotspotstore/5/a/5a62b394dcf7fb7f61298a3ba9e327e5885f64ac,9\4\940ba16204e8421ce88f20a10d7368e5964bb366
+
+Q.idea/sonarlint/securityhotspotstore/e/c/ec2f06c5ede9538c4abad6bc160a68970ed34fc7,f\b\fbbc1e922a8271475da804bf5e9d6e5955f01bc7
+
+Q.idea/sonarlint/securityhotspotstore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,e\c\ecd821d70560b244ad4553d8595ea4e7c627082c
+w
+G.idea/sonarlint/issuestore/3/4/340f9d7a8520b340c3dae6cd7945a049209926c0,8\6\864ae88f7287a7cc85ab15f268be65ad0bdaba61
+
+Q.idea/sonarlint/securityhotspotstore/b/b/bb6499b8e938f92a3695fff1afe57edea4b9efb7,3\3\33146ca102dfb9ad1815170db874f476c67ed65e
+
+Q.idea/sonarlint/securityhotspotstore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,3\a\3ada665089f1ba586ca926b06823cbd880297a6f
+w
+G.idea/sonarlint/issuestore/7/4/7414b490c7c67ef8640d942bca6fc957aeb88dc7,0\f\0f7e510d9ea7103745468624235442a0a49cda55
+
+Q.idea/sonarlint/securityhotspotstore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,f\2\f2b6093602b3988d4b572352f6d695b82e19a2f9
+
+Q.idea/sonarlint/securityhotspotstore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\1\a1278dab701e354fea0712a7d98a054725dbbd18
+w
+G.idea/sonarlint/issuestore/f/a/fa00b8d41636a3d01cc1f06ea7e6b2e78b046d5f,6\e\6eca5b25d6903836d53304e7c57daec40f235693
+w
+G.idea/sonarlint/issuestore/0/f/0f66c86b4a5e6b991b9c5fbbd76664e2e3f06d6d,a\c\acb1bb93c978b3d2dda541aa47e2c989fa9f9220
+w
+G.idea/sonarlint/issuestore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,4\2\423fae0db0d6bb2550ca6ee81774c249a6e4e597
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,4\6\46f6eea7b19c57c53c9bb3863ee82a1b5e7ba01d
+w
+G.idea/sonarlint/issuestore/7/b/7bf8933e8b5c0a9e813e7470d5297e2fa9ec6566,6\1\6198e4717a1b6b94abe788bf7e7cf2c151f5a8b0
+
+Q.idea/sonarlint/securityhotspotstore/b/e/be00c5b2b2e0e613e7b39232498768b51a7d6ed5,2\b\2b464dab8a15c17e8ac59e0de4de0ac2d21b3466
+w
+G.idea/sonarlint/issuestore/6/7/67ea86715647495cf04d49debe539482dee7aed6,7\3\7392be92bae5f6c330d732c11efe59054698ef88
+
+Q.idea/sonarlint/securityhotspotstore/6/7/67ea86715647495cf04d49debe539482dee7aed6,9\e\9e4e80af5722d0c072c8f7f5089c0ab0f18e2a19
+w
+G.idea/sonarlint/issuestore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,b\0\b012a5ad5d15cb8ec36158c7f2b3351c891d78b9
+
+Q.idea/sonarlint/securityhotspotstore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,3\6\36738fcdbae6d87424bf8a2520ad0817c7020034
+
+Q.idea/sonarlint/securityhotspotstore/c/b/cb3428aff5a57ce98152a18ac112512d5945c4ca,3\e\3edaed16c3fd01a6f3a89847e9242cd921f5d6d1
+
+Q.idea/sonarlint/securityhotspotstore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,6\4\644ca38258c8d839cc8b685a275e0080763956df
+w
+G.idea/sonarlint/issuestore/8/a/8abf9f699b61ef1477359e3de2630fc646090a53,1\6\16681390eb2c55bedf7143c5602bc5f8d2944247
+w
+G.idea/sonarlint/issuestore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,c\9\c92682892a66c2d98df9f3aca7dbb89c9c1e993d
+w
+G.idea/sonarlint/issuestore/e/7/e75b4a1e09e07da498641870dfc86cd4079b3432,9\b\9bb3887e8521aafcaf315f669e238cabcb9080ee
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,4\5\45a56aa80d0449c3b51caab78db57347c477bc00
+w
+G.idea/sonarlint/issuestore/8/e/8e46e6b6bc30ba859d323263e009551e60b96fc7,f\5\f58ee61f0eab56559be0cd487b45ad27abb6b0fd
+w
+G.idea/sonarlint/issuestore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,e\5\e522c216bb070208621186a389b60172ed7b27ba
+
+Q.idea/sonarlint/securityhotspotstore/3/7/37106991d149ea238c9bc1b7d4b7477414ba28b8,6\e\6efa73fdbf1248556967404a965cb612c5ea8821
+
+Q.idea/sonarlint/securityhotspotstore/e/5/e5d3f0e4bcc8d4529fe6b01ab1b0cae239aa827b,3\a\3af37e5750c2904514572b2a3f00d111b360b0d3
+w
+G.idea/sonarlint/issuestore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,b\9\b913d406f1d386713b4af7a450eac66b816f8d3e
+
+Q.idea/sonarlint/securityhotspotstore/1/0/100893ec40d4b0b261c2f59f96af4f3ceba09736,f\f\ffb1b59b1a11a2dcb3a4771ceb9e9a615badcac9
+
+Q.idea/sonarlint/securityhotspotstore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,9\6\961763665f9beef43050bc97ba4fa832433aecba
+
+Q.idea/sonarlint/securityhotspotstore/c/a/ca033487399677ec4908c1f9a8834655f0f4df67,e\e\eebcc6d7d6c616b45584b4be28b8790b5ab6abda
+
+Q.idea/sonarlint/securityhotspotstore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,8\c\8ccc2feda74e0ef0fa66f183442e59c0dd12e394
+w
+G.idea/sonarlint/issuestore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,4\d\4df9f4fb889bc0de19634bce5ebd84d5b9eed5fa
+w
+G.idea/sonarlint/issuestore/6/7/6740c7dcd3493efe761e55e6b086c7589d4b8094,2\9\29caa5287927d2ab0e923f5a69a42f3d4dc182f2
+w
+G.idea/sonarlint/issuestore/7/8/78d8f9f012144989cd59dc8e58b00efd6a849749,6\2\62847eff266b657b79e70cb4cd99226d76296a82
+
+Q.idea/sonarlint/securityhotspotstore/d/3/d3a697d31a6c49c8e222af4bbebf2361eb98ff99,9\b\9bf259071e1352c2a26c77504f0b99f27c88f41e
+w
+G.idea/sonarlint/issuestore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,2\5\25147cfaecf2786ec729ece6148f406a5dcb256b
+
+Q.idea/sonarlint/securityhotspotstore/f/5/f55eda3a2b1f01048714c98e5a7ed49a3eba642d,9\f\9fcef19b17e8862def9884db44cbd628f0b871fa
+
+Q.idea/sonarlint/securityhotspotstore/c/0/c0ebbc2a6030b3ee0664e73da0a9c03e8f26989d,9\8\98e4bea93dfebe942da7b170d7f873101b1324bc
+
+Q.idea/sonarlint/securityhotspotstore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,f\4\f4d58f3e042dea084828514bb7fb3f882404fb8d
+w
+G.idea/sonarlint/issuestore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,3\e\3e065f63398b0d31a0c285c15b25ae7528113ca5
+
+Q.idea/sonarlint/securityhotspotstore/4/9/491c6c5c4c455d0df65c80ca3e228c9a7ca66d0a,4\3\43f3928513696390b86b96d43ee14704b9b7b80d
+w
+G.idea/sonarlint/issuestore/8/8/88fc03da1c5e4c0e672160d9e5ad06b95975bfd4,6\6\66eeaba400b4cb60bb24c44c1452c3449acf33f6
+w
+G.idea/sonarlint/issuestore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,3\4\3418a5e93fb49bf5a260b3472efa9bd3f40f63a3
+
+Q.idea/sonarlint/securityhotspotstore/9/f/9f65cf811c746f7951719af4d7b947f5539d5196,b\0\b073b8b89b1b86291eccc011f31d799ec79025e7
+
+Q.idea/sonarlint/securityhotspotstore/f/2/f2082986f709d9d167cd8743efee93c2663941ee,c\0\c04e23f9d0703e7d3a287ebb992022efc85b4154
+w
+G.idea/sonarlint/issuestore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,3\0\307b9eb7dffcc77ecfe411808f612178240d8c72
+
+Q.idea/sonarlint/securityhotspotstore/1/9/197887b1d7350f1a3487c11bc2f49fa5e0946b30,d\0\d099e5fb52d27d0626de2ea2d356193ccded9ed6
+w
+G.idea/sonarlint/issuestore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,c\b\cb4dec6d5021997f06ffc89186c0f83331be1301
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e4cd081b9dccfec7c86cd1be8ef41c2fd57f4a66,6\2\629d6160adb07e2bcc2176f6bb288388e780bdbf
+
+Q.idea/sonarlint/securityhotspotstore/7/3/7359140b7b0cfe2eae6abe9903cbc3d91a291fa2,6\b\6b32629e48b076ec5fb414cc45b60bdae0d4f7b5
+
+Q.idea/sonarlint/securityhotspotstore/2/2/2236f22862fca6db4bad3ddd35d787d0bdc8fe93,d\b\dbd828883d9535da4fae17e30caa64ad72662c69
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,e\d\ed8e56353ae013d5fe7eff706bc473dacc9ad090
+w
+G.idea/sonarlint/issuestore/b/c/bccad600b7d1dd6df4440bf078a25ac1916ac2d3,9\2\9223bc35d0474704cbf93dae9f333a6a0dae6086
+
+Q.idea/sonarlint/securityhotspotstore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\2\7203a728b0e60116f6eb3b587966036c42f4e747
+w
+G.idea/sonarlint/issuestore/e/4/e464416b53a806b9730005e0bb693de604d12c82,7\7\77a7ffdc4ef5c2eb2048f0673c2b72c1e2f72f90
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..12bb1aa
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,9 @@
+{
+    "name": "hp/patterns",
+    "autoload": {
+        "psr-4": {
+            "Hp\\Patterns\\": "src/"
+        }
+    },
+    "require": {}
+}
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..e2880ee
--- /dev/null
+++ b/index.php
@@ -0,0 +1,47 @@
+<?php
+
+require_once __DIR__ . '/vendor/autoload.php';
+
+use Hp\Patterns\Observer\Card;
+use Hp\Patterns\Observer\CardObserver;
+use Hp\Patterns\ServiceLocator\RegisterService;
+use Hp\Patterns\ServiceLocator\ServiceLocator;
+use Hp\Patterns\DependencyInjection\CreditCard;
+use Hp\Patterns\DependencyInjection\ATM;
+
+
+// Service Locator
+$locator = new ServiceLocator();
+$locator->addInstance('RegisterService', new RegisterService(['user1', 'user2']));
+
+$service = $locator->get('RegisterService');
+
+$service->register('user3');
+
+$users = $service->getUsers();
+
+foreach ($users as $user) {
+    echo $user."\n";
+}
+
+echo "\n";
+
+// Dependency Injection
+
+$card = new CreditCard('1234 5678 9012 3456', 5281.31, 'Иванов Иван Иванович');
+$atm = new ATM($card);
+
+$atm->getCardInfo();
+
+echo "\n";
+
+// Observer
+
+$observer = new CardObserver();
+
+$card = new Card();
+$card->attach($observer);
+
+$card->deposit(1000);
+
+$observer->getSumUpdatedCards();
diff --git a/src/AbstractFactory/CardFactory.php b/src/AbstractFactory/CardFactory.php
new file mode 100644
index 0000000..51e47fc
--- /dev/null
+++ b/src/AbstractFactory/CardFactory.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface CardFactory
+{
+    public function createDebitCard(): DebitCard;
+
+    public function createCreditCard(): CreditCard;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/CreditCard.php b/src/AbstractFactory/CreditCard.php
new file mode 100644
index 0000000..f2be451
--- /dev/null
+++ b/src/AbstractFactory/CreditCard.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface CreditCard
+{
+    public function pay(float $money): void;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/DebitCard.php b/src/AbstractFactory/DebitCard.php
new file mode 100644
index 0000000..2ae1e16
--- /dev/null
+++ b/src/AbstractFactory/DebitCard.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+interface DebitCard
+{
+    public function transfer(float $money): void;
+
+    public function pay(float $money): void;
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/README.md b/src/AbstractFactory/README.md
new file mode 100644
index 0000000..235fb77
--- /dev/null
+++ b/src/AbstractFactory/README.md
@@ -0,0 +1 @@
+Абстрактная фабрика - паттерн, предназначенный для создания семейств взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов
\ No newline at end of file
diff --git a/src/AbstractFactory/SberMortgageCreditCard.php b/src/AbstractFactory/SberMortgageCreditCard.php
new file mode 100644
index 0000000..0a3915c
--- /dev/null
+++ b/src/AbstractFactory/SberMortgageCreditCard.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberMortgageCreditCard implements CreditCard
+{
+    private float $wallet;
+
+    private float $sberSpasibo;
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->sberSpasibo += $money * 0.0001;
+    }
+}
diff --git a/src/AbstractFactory/SberSalaryDebitCard.php b/src/AbstractFactory/SberSalaryDebitCard.php
new file mode 100644
index 0000000..8423bb1
--- /dev/null
+++ b/src/AbstractFactory/SberSalaryDebitCard.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberSalaryDebitCard implements DebitCard
+{
+    private float $wallet;
+
+    private float $sberSpasibo;
+
+    public function transfer(float $money): void
+    {
+        $this->wallet += $money;
+    }
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->sberSpasibo += $money * 0.1;
+    }
+}
diff --git a/src/AbstractFactory/SberbankCardFactory.php b/src/AbstractFactory/SberbankCardFactory.php
new file mode 100644
index 0000000..de22618
--- /dev/null
+++ b/src/AbstractFactory/SberbankCardFactory.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class SberbankCardFactory implements CardFactory
+{
+
+    public function createDebitCard(): DebitCard
+    {
+        return new SberSalaryDebitCard();
+    }
+
+    public function createCreditCard(): CreditCard
+    {
+        return new SberMortgageCreditCard();
+    }
+}
diff --git a/src/AbstractFactory/TinkCarLoanCreditCard.php b/src/AbstractFactory/TinkCarLoanCreditCard.php
new file mode 100644
index 0000000..ffef695
--- /dev/null
+++ b/src/AbstractFactory/TinkCarLoanCreditCard.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkCarLoanCreditCard implements CreditCard
+{
+    private float $wallet;
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->wallet += $money * 0.0005;
+    }
+}
diff --git a/src/AbstractFactory/TinkStipendDebitCard.php b/src/AbstractFactory/TinkStipendDebitCard.php
new file mode 100644
index 0000000..913c607
--- /dev/null
+++ b/src/AbstractFactory/TinkStipendDebitCard.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkStipendDebitCard implements DebitCard
+{
+    private float $wallet;
+
+    public function transfer(float $money): void
+    {
+        $this->wallet += $money;
+    }
+
+    public function pay(float $money): void
+    {
+        $this->wallet -= $money;
+        $this->wallet += $money * 0.05;
+    }
+}
\ No newline at end of file
diff --git a/src/AbstractFactory/TinkoffCardFactory.php b/src/AbstractFactory/TinkoffCardFactory.php
new file mode 100644
index 0000000..2137573
--- /dev/null
+++ b/src/AbstractFactory/TinkoffCardFactory.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\AbstractFactory;
+
+class TinkoffCardFactory implements CardFactory
+{
+
+    public function createDebitCard(): DebitCard
+    {
+        return new TinkStipendDebitCard();
+    }
+
+    public function createCreditCard(): CreditCard
+    {
+        return new TinkCarLoanCreditCard();
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/Account.php b/src/Adapter/Account.php
new file mode 100644
index 0000000..cda4285
--- /dev/null
+++ b/src/Adapter/Account.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+class Account implements AccountInterface
+{
+    private float $amount;
+
+    public function deposit(float $amount): void
+    {
+        $this->amount += $amount;
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->amount -= $amount;
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/AccountAdapter.php b/src/Adapter/AccountAdapter.php
new file mode 100644
index 0000000..634c6d6
--- /dev/null
+++ b/src/Adapter/AccountAdapter.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+class AccountAdapter implements AccountInterface
+{
+    public function __construct(private OtherAccountInterface $account)
+    {
+    }
+
+
+    public function deposit(float $amount): void
+    {
+        $this->account->deposit($amount);
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->account->withdraw($amount);
+    }
+
+    public function blockAccount(): void
+    {
+        $this->account->blockAccount();
+    }
+}
\ No newline at end of file
diff --git a/src/Adapter/AccountInterface.php b/src/Adapter/AccountInterface.php
new file mode 100644
index 0000000..b70e73d
--- /dev/null
+++ b/src/Adapter/AccountInterface.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+interface AccountInterface
+{
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/Adapter/OtherAccountInterface.php b/src/Adapter/OtherAccountInterface.php
new file mode 100644
index 0000000..08af6fd
--- /dev/null
+++ b/src/Adapter/OtherAccountInterface.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Hp\Patterns\Adapter;
+
+interface OtherAccountInterface
+{
+    public function blockAccount(): void;
+
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/Adapter/README.md b/src/Adapter/README.md
new file mode 100644
index 0000000..d9d8f75
--- /dev/null
+++ b/src/Adapter/README.md
@@ -0,0 +1 @@
+Адаптер представляет собой паттерн, который позволяет привести нестандартный интерфейс какого-то класса совместимым с вашим кодом. По сути он предоставляет прослойку с интерфейсом, удобным для клиентов
\ No newline at end of file
diff --git a/src/Builder/AccountBuilder.php b/src/Builder/AccountBuilder.php
new file mode 100644
index 0000000..4367de1
--- /dev/null
+++ b/src/Builder/AccountBuilder.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+class AccountBuilder implements Builder
+{
+    private string $accountType;
+
+    private float $balance;
+
+    private float $monthlyFee;
+
+    public function withAccountType(string $accountType): Builder
+    {
+        $this->accountType = $accountType;
+
+        return $this;
+    }
+
+    public function withInitialBalance(float $initialBalance): Builder
+    {
+        $this->balance += $initialBalance;
+
+        return $this;
+    }
+
+    public function withMonthlyFee(float $monthlyFee): Builder
+    {
+        $this->monthlyFee = $monthlyFee;
+
+        return $this;
+    }
+}
\ No newline at end of file
diff --git a/src/Builder/Builder.php b/src/Builder/Builder.php
new file mode 100644
index 0000000..0d58f66
--- /dev/null
+++ b/src/Builder/Builder.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+interface Builder
+{
+    public function withAccountType(string $accountType): Builder;
+
+    public function withInitialBalance(float $initialBalance): Builder;
+
+    public function withMonthlyFee(float $monthlyFee): Builder;
+}
\ No newline at end of file
diff --git a/src/Builder/Director.php b/src/Builder/Director.php
new file mode 100644
index 0000000..e19c278
--- /dev/null
+++ b/src/Builder/Director.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Builder;
+
+class Director
+{
+    public function build(Builder $builder): Builder
+    {
+        $account = $builder->withAccountType('Savings')
+            ->withInitialBalance(1200)
+            ->withMonthlyFee(12);
+
+        return $account;
+    }
+}
\ No newline at end of file
diff --git a/src/Builder/README.md b/src/Builder/README.md
new file mode 100644
index 0000000..d5e120a
--- /dev/null
+++ b/src/Builder/README.md
@@ -0,0 +1 @@
+Строитель - это шаблон проектирования, который инкаспулирует создание объекта и позволяет разделить его на различные этапы
\ No newline at end of file
diff --git a/src/Command/Command.php b/src/Command/Command.php
new file mode 100644
index 0000000..76158a1
--- /dev/null
+++ b/src/Command/Command.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+interface Command
+{
+    public function execute(float $amountCash): void;
+}
\ No newline at end of file
diff --git a/src/Command/EnterCashCommand.php b/src/Command/EnterCashCommand.php
new file mode 100644
index 0000000..6d36d91
--- /dev/null
+++ b/src/Command/EnterCashCommand.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class EnterCashCommand implements Command
+{
+    public function __construct(private ReceiverATM $receiver)
+    {
+    }
+
+    public function execute(float $amountCash): void
+    {
+        $this->receiver->enterCash($amountCash);
+    }
+}
\ No newline at end of file
diff --git a/src/Command/Invoker.php b/src/Command/Invoker.php
new file mode 100644
index 0000000..b46e9cb
--- /dev/null
+++ b/src/Command/Invoker.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class Invoker
+{
+    private Command $command;
+
+    public function setCommand(Command $command): void
+    {
+        $this->command = $command;
+    }
+
+    public function run(float $amountCash): void
+    {
+        $this->command->execute($amountCash);
+    }
+}
diff --git a/src/Command/README.md b/src/Command/README.md
new file mode 100644
index 0000000..43d3809
--- /dev/null
+++ b/src/Command/README.md
@@ -0,0 +1 @@
+Паттерн Command позволяет инкапсулировать запрос на выполнение определенного действия в виде отдельного объекта, который и называется командой. Также команды могут ставиться в очередь или быть отменены
\ No newline at end of file
diff --git a/src/Command/ReceiverATM.php b/src/Command/ReceiverATM.php
new file mode 100644
index 0000000..28ba31c
--- /dev/null
+++ b/src/Command/ReceiverATM.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class ReceiverATM
+{
+    private float $amountCash;
+
+    public function enterCash(float $amountCash): void
+    {
+        $this->amountCash += $amountCash;
+    }
+
+    public function withdrawCash(float $amountCash): void
+    {
+        $this->amountCash -= $amountCash;
+    }
+}
diff --git a/src/Command/WithdrawCashCommand.php b/src/Command/WithdrawCashCommand.php
new file mode 100644
index 0000000..29202a3
--- /dev/null
+++ b/src/Command/WithdrawCashCommand.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Hp\Patterns\Command;
+
+class WithdrawCashCommand implements Command
+{
+    public function __construct(private ReceiverATM $receiver)
+    {
+    }
+
+    public function execute(float $amountCash): void
+    {
+        $this->receiver->withdrawCash($amountCash);
+    }
+}
\ No newline at end of file
diff --git a/src/Decorator/Account.php b/src/Decorator/Account.php
new file mode 100644
index 0000000..79cc8f0
--- /dev/null
+++ b/src/Decorator/Account.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+interface Account
+{
+    public function deposit(float $amount): void;
+
+    public function withdraw(float $amount): void;
+}
\ No newline at end of file
diff --git a/src/Decorator/AccountDecorator.php b/src/Decorator/AccountDecorator.php
new file mode 100644
index 0000000..3c4c731
--- /dev/null
+++ b/src/Decorator/AccountDecorator.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+class AccountDecorator
+{
+    public function __construct(protected Account $account)
+    {
+    }
+}
\ No newline at end of file
diff --git a/src/Decorator/README.md b/src/Decorator/README.md
new file mode 100644
index 0000000..08a531c
--- /dev/null
+++ b/src/Decorator/README.md
@@ -0,0 +1 @@
+Паттерн Decorator позволяет динамически добавлять новую функциональность в классы. 
\ No newline at end of file
diff --git a/src/Decorator/SavingsAccount.php b/src/Decorator/SavingsAccount.php
new file mode 100644
index 0000000..aed3713
--- /dev/null
+++ b/src/Decorator/SavingsAccount.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Hp\Patterns\Decorator;
+
+class SavingsAccount extends AccountDecorator
+{
+    private float $money;
+
+    private float $percent = 10;
+
+    public function getBalance(): float
+    {
+        return $this->money;
+    }
+
+    public function percentageIncrease(): void
+    {
+        $this->money += $this->money * ($this->percent / 100);
+    }
+}
\ No newline at end of file
diff --git a/src/DependencyInjection/ATM.php b/src/DependencyInjection/ATM.php
new file mode 100644
index 0000000..98aa544
--- /dev/null
+++ b/src/DependencyInjection/ATM.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\DependencyInjection;
+
+class ATM
+{
+    public function __construct(private CreditCard $card)
+    {
+    }
+
+    public function getCardInfo(): void
+    {
+        echo 'Owner: '.$this->card->getOwner()."\n";
+        echo 'Number card: '.$this->card->getNumber()."\n";
+        echo 'In the wallet: '.$this->card->getCountOfMoney()." ₽ \n";
+    }
+}
\ No newline at end of file
diff --git a/src/DependencyInjection/CreditCard.php b/src/DependencyInjection/CreditCard.php
new file mode 100644
index 0000000..d2c4022
--- /dev/null
+++ b/src/DependencyInjection/CreditCard.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Hp\Patterns\DependencyInjection;
+
+class CreditCard
+{
+    public function __construct(
+        private string $number,
+        private float $countOfMoney,
+        private string $owner
+    ) {
+    }
+
+    public function getNumber(): string
+    {
+        return $this->number;
+    }
+
+    public function getCountOfMoney(): float
+    {
+        return $this->countOfMoney;
+    }
+
+    public function getOwner(): string
+    {
+        return $this->owner;
+    }
+}
diff --git a/src/DependencyInjection/README.md b/src/DependencyInjection/README.md
new file mode 100644
index 0000000..b75c53b
--- /dev/null
+++ b/src/DependencyInjection/README.md
@@ -0,0 +1 @@
+Dependency Injection представляет собой механизм, который позволяет сделать компоненты программы слабосвязанными. Основой данного механизма является зависимость одной сущности от другой.
\ No newline at end of file
diff --git a/src/Facade/ATM.php b/src/Facade/ATM.php
new file mode 100644
index 0000000..62362c3
--- /dev/null
+++ b/src/Facade/ATM.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+interface ATM
+{
+    public function acceptCard(): void;
+
+    public function waitForEnterAmount(): void;
+
+    public function checkBalance(): void;
+
+    public function giveOutMoney(): void;
+
+    public function giveOutCard(): void;
+}
\ No newline at end of file
diff --git a/src/Facade/Client.php b/src/Facade/Client.php
new file mode 100644
index 0000000..118138d
--- /dev/null
+++ b/src/Facade/Client.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+interface Client
+{
+    public function enterCard(): void;
+
+    public function enterAmount(float $amount): void;
+
+    public function takeMoney(): void;
+
+    public function takeCard(): void;
+}
\ No newline at end of file
diff --git a/src/Facade/Facade.php b/src/Facade/Facade.php
new file mode 100644
index 0000000..bd47892
--- /dev/null
+++ b/src/Facade/Facade.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace Hp\Patterns\Facade;
+
+class Facade
+{
+    public function __construct(private ATM $atm, private Client $client)
+    {
+    }
+
+    public function withdrawMoney(): void
+    {
+        $this->client->enterCard();
+
+        $this->atm->acceptCard();
+        $this->atm->waitForEnterAmount();
+
+        $this->client->enterAmount(1000);
+
+        $this->atm->checkBalance();
+        $this->atm->giveOutMoney();
+        $this->atm->acceptCard();
+
+        $this->client->takeMoney();
+        $this->client->takeCard();
+    }
+}
\ No newline at end of file
diff --git a/src/Facade/README.md b/src/Facade/README.md
new file mode 100644
index 0000000..3acb193
--- /dev/null
+++ b/src/Facade/README.md
@@ -0,0 +1 @@
+Фасад представляет собой шаблон проектирования, который позволяет скрыть сложность системы с помощью представления упрощенного интерфейса и взаимодействия с ней
\ No newline at end of file
diff --git a/src/FactoryMethod/Card.php b/src/FactoryMethod/Card.php
new file mode 100644
index 0000000..5f73743
--- /dev/null
+++ b/src/FactoryMethod/Card.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+interface Card
+{
+    public function deposit(float $amount);
+
+    public function withdraw(float $amount);
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CardFactory.php b/src/FactoryMethod/CardFactory.php
new file mode 100644
index 0000000..2a67fe1
--- /dev/null
+++ b/src/FactoryMethod/CardFactory.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+interface CardFactory
+{
+    public function createCard(): Card;
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CreditCard.php b/src/FactoryMethod/CreditCard.php
new file mode 100644
index 0000000..e5505e5
--- /dev/null
+++ b/src/FactoryMethod/CreditCard.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class CreditCard implements Card
+{
+    private float $wallet;
+
+    public function deposit(float $amount): void
+    {
+        $this->wallet += $amount;
+    }
+
+    public function withdraw(float $amount): void
+    {
+        $this->wallet -= $amount;
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/CreditCardFactory.php b/src/FactoryMethod/CreditCardFactory.php
new file mode 100644
index 0000000..7f410f3
--- /dev/null
+++ b/src/FactoryMethod/CreditCardFactory.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class CreditCardFactory implements CardFactory
+{
+    public function createCard(): Card
+    {
+        return new CreditCard();
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/DebitCard.php b/src/FactoryMethod/DebitCard.php
new file mode 100644
index 0000000..9159291
--- /dev/null
+++ b/src/FactoryMethod/DebitCard.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class DebitCard implements Card
+{
+
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/DebitCardFactory.php b/src/FactoryMethod/DebitCardFactory.php
new file mode 100644
index 0000000..6eefe73
--- /dev/null
+++ b/src/FactoryMethod/DebitCardFactory.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Hp\Patterns\FactoryMethod;
+
+class DebitCardFactory implements CardFactory
+{
+    public function createCard(): Card
+    {
+        return new DebitCard();
+    }
+}
\ No newline at end of file
diff --git a/src/FactoryMethod/README.md b/src/FactoryMethod/README.md
new file mode 100644
index 0000000..cce8ef7
--- /dev/null
+++ b/src/FactoryMethod/README.md
@@ -0,0 +1 @@
+Фабричный метод - это паттерн, который определяет интерфейс для создания объектов некоторого класса, где при этом решение о том, объект какого класса создавать передается в подклассы
\ No newline at end of file
diff --git a/src/Iterator/Payment.php b/src/Iterator/Payment.php
new file mode 100644
index 0000000..f28a3a7
--- /dev/null
+++ b/src/Iterator/Payment.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\Iterator;
+
+class Payment
+{
+    private int $id;
+
+    private \DateTimeImmutable $date;
+
+    private float $amount;
+
+    public function getId(): int
+    {
+        return $this->id;
+    }
+}
\ No newline at end of file
diff --git a/src/Iterator/PaymentList.php b/src/Iterator/PaymentList.php
new file mode 100644
index 0000000..99a2c95
--- /dev/null
+++ b/src/Iterator/PaymentList.php
@@ -0,0 +1,60 @@
+<?php
+
+namespace Hp\Patterns\Iterator;
+
+use Countable;
+use Iterator;
+
+class PaymentList implements Countable, Iterator
+{
+    /** @var array Payment */
+    private array $payments;
+
+    private int $currentIndex = 0;
+
+    public function addPayment(Payment $payment): void
+    {
+        $this->payments[] = $payment;
+    }
+
+    public function removePayment(Payment $payment): void
+    {
+        foreach ($this->payments as $key => $value) {
+            if ($value->getId() === $payment->getId()) {
+                unset($this->payments[$key]);
+            }
+        }
+
+        $this->payments = array_values($this->payments);
+    }
+
+    public function current(): Payment
+    {
+        return $this->payments[$this->currentIndex];
+    }
+
+    public function next(): void
+    {
+        $this->currentIndex++;
+    }
+
+    public function key(): int
+    {
+        return $this->currentIndex;
+    }
+
+    public function valid(): bool
+    {
+        return isset($this->payments[$this->currentIndex]);
+    }
+
+    public function rewind(): void
+    {
+        $this->currentIndex = 0;
+    }
+
+    public function count(): int
+    {
+        return count($this->payments);
+    }
+}
\ No newline at end of file
diff --git a/src/Iterator/README.md b/src/Iterator/README.md
new file mode 100644
index 0000000..97de275
--- /dev/null
+++ b/src/Iterator/README.md
@@ -0,0 +1 @@
+Паттерн Iterator представляет собой интерфейс для последовательного доступа к элементам составного объекта
\ No newline at end of file
diff --git a/src/Observer/Card.php b/src/Observer/Card.php
new file mode 100644
index 0000000..4a0f6a9
--- /dev/null
+++ b/src/Observer/Card.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace Hp\Patterns\Observer;
+
+use SplObjectStorage;
+use SplSubject;
+use SplObserver;
+
+class Card implements SplSubject
+{
+    private SplObjectStorage $observers;
+
+    private float $money = 0;
+
+    public function __construct()
+    {
+        $this->observers = new SplObjectStorage();
+    }
+
+    public function attach(SplObserver $observer): void
+    {
+        $this->observers->attach($observer);
+    }
+
+    public function detach(SplObserver $observer): void
+    {
+        $this->observers->detach($observer);
+    }
+
+    public function deposit(float $money): void
+    {
+        $this->money += $money;
+        $this->notify();
+    }
+
+    public function getAmount(): float
+    {
+        return $this->money;
+    }
+
+    public function notify(): void
+    {
+        foreach ($this->observers as $observer) {
+            $observer->update($this);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Observer/CardObserver.php b/src/Observer/CardObserver.php
new file mode 100644
index 0000000..f6c444b
--- /dev/null
+++ b/src/Observer/CardObserver.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Hp\Patterns\Observer;
+
+use SplObserver;
+use SplSubject;
+
+class CardObserver implements SplObserver
+{
+    private array $updatedCards = [];
+
+    public function update(SplSubject $subject): void
+    {
+        $this->updatedCards[] = $subject;
+    }
+
+    public function getSumUpdatedCards(): void
+    {
+        foreach ($this->updatedCards as $card) {
+            echo $card->getAmount();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Observer/README.md b/src/Observer/README.md
new file mode 100644
index 0000000..dfaff8c
--- /dev/null
+++ b/src/Observer/README.md
@@ -0,0 +1 @@
+Паттерн Наблюдатель - это шаблон проектирования, где при изменении наблюдаемого объекта автоматические происходит оповещение всех наблюдателей
\ No newline at end of file
diff --git a/src/Registry/README.md b/src/Registry/README.md
new file mode 100644
index 0000000..269373d
--- /dev/null
+++ b/src/Registry/README.md
@@ -0,0 +1 @@
+Registry используется для реализации централизированного хранения объектов, которые часто используются во всем приложении. Считается антипаттерном из-за того, что вводится глобальное состояние
\ No newline at end of file
diff --git a/src/Registry/Registry.php b/src/Registry/Registry.php
new file mode 100644
index 0000000..4a69a0a
--- /dev/null
+++ b/src/Registry/Registry.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace Hp\Patterns\Registry;
+
+use InvalidArgumentException;
+use Hp\Patterns\ServiceLocator\ServiceInterface;
+
+abstract class Registry
+{
+    private static array $services = [];
+
+    private static array $allowedKeys = [
+        'RegisterService'
+    ];
+
+    public static function set(string $key, ServiceInterface $service): void
+    {
+        if (!in_array($key, self::$allowedKeys, true)) {
+            throw new InvalidArgumentException();
+        }
+
+        self::$services[$key] = $service;
+    }
+
+    public static function get(string $key): ServiceInterface
+    {
+        if (!in_array($key, self::$allowedKeys, true) || !isset(self::$services[$key])) {
+            throw new InvalidArgumentException();
+        }
+
+        return self::$services[$key];
+    }
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/README.md b/src/ServiceLocator/README.md
new file mode 100644
index 0000000..642e757
--- /dev/null
+++ b/src/ServiceLocator/README.md
@@ -0,0 +1 @@
+Service Locator считают антипаттерном, поскольку он нарушает принципы инверсии зависимостей. Он позволяет скрывать зависимости класса и предназначен для реализации слабосвязанной архитектуры. Однако, в случае изменения зависимостей имеется риск сломать функционалы классов, которые их используют.
\ No newline at end of file
diff --git a/src/ServiceLocator/RegisterService.php b/src/ServiceLocator/RegisterService.php
new file mode 100644
index 0000000..dd2b7b4
--- /dev/null
+++ b/src/ServiceLocator/RegisterService.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+class RegisterService implements ServiceInterface
+{
+    public function __construct(private array $users)
+    {
+    }
+
+    public function register(string $name): void
+    {
+        $this->users[] = $name;
+    }
+
+    public function getUsers(): array
+    {
+        return $this->users;
+    }
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/ServiceInterface.php b/src/ServiceLocator/ServiceInterface.php
new file mode 100644
index 0000000..77e1510
--- /dev/null
+++ b/src/ServiceLocator/ServiceInterface.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+interface ServiceInterface
+{
+
+}
\ No newline at end of file
diff --git a/src/ServiceLocator/ServiceLocator.php b/src/ServiceLocator/ServiceLocator.php
new file mode 100644
index 0000000..df87b51
--- /dev/null
+++ b/src/ServiceLocator/ServiceLocator.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace Hp\Patterns\ServiceLocator;
+
+use InvalidArgumentException;
+
+class ServiceLocator
+{
+    private array $services = [];
+
+    private array $instantiated = [];
+
+    public function addInstance(string $class, ServiceInterface $service): void
+    {
+        $this->instantiated[$class] = $service;
+    }
+
+    public function addClass(string $class, array $params): void
+    {
+        $this->services[$class] = $params;
+    }
+
+    public function has(string $class): bool
+    {
+        return isset($this->instantiated[$class]) || isset($this->services[$class]);
+    }
+
+    public function get(string $class): ServiceInterface
+    {
+        if (isset($this->instantiated[$class])) {
+            return $this->instantiated[$class];
+        }
+
+        $object = new $class(...$this->services[$class]);
+
+        if (!$object instanceof ServiceInterface) {
+            throw new InvalidArgumentException();
+        }
+
+        $this->instantiated[$class] = $object;
+
+        return $object;
+    }
+}
diff --git a/src/Strategy/AnnuityPayment.php b/src/Strategy/AnnuityPayment.php
new file mode 100644
index 0000000..6cd40f5
--- /dev/null
+++ b/src/Strategy/AnnuityPayment.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+class AnnuityPayment implements Payment
+{
+
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float
+    {
+        $percentInMonth = $percentOfRate / 12 / 100;
+
+        $payment = $total * ($percentInMonth + ($percentInMonth / ((1 + $percentInMonth)**$monthCount - 1)));
+
+        $payment += $balanceDebt * $percentInMonth;
+
+        return $payment;
+    }
+}
\ No newline at end of file
diff --git a/src/Strategy/DifferentialPayment.php b/src/Strategy/DifferentialPayment.php
new file mode 100644
index 0000000..68631f0
--- /dev/null
+++ b/src/Strategy/DifferentialPayment.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+class DifferentialPayment implements Payment
+{
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float
+    {
+        $payment = $total / $monthCount;
+
+        $percentInMonth = $percentOfRate / 12 / 100;
+
+        $payment += $balanceDebt * $percentInMonth;
+
+        return $payment;
+    }
+}
diff --git a/src/Strategy/Payment.php b/src/Strategy/Payment.php
new file mode 100644
index 0000000..f6c2d88
--- /dev/null
+++ b/src/Strategy/Payment.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace Hp\Patterns\Strategy;
+
+interface Payment
+{
+    public function calculate(float $total, float $balanceDebt, int $monthCount, float $percentOfRate): float;
+}
\ No newline at end of file
diff --git a/src/Strategy/README.md b/src/Strategy/README.md
new file mode 100644
index 0000000..81595ea
--- /dev/null
+++ b/src/Strategy/README.md
@@ -0,0 +1 @@
+Паттерн Strategy представляет собой шаблон, который определяет набор каких-либо алгоритмов, где каждый из них инкапсулируется и является взаимозаменяемым
\ No newline at end of file
-- 
GitLab