#
tokens: 62853/50000 1/598 files (page 432/445)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 432 of 445. Use http://codebase.md/tosin2013/mcp-adr-analysis-server?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .commitlintrc.json
├── .editorconfig
├── .eslintrc.json
├── .github
│   ├── AUTO-RELEASE-GUIDE.md
│   ├── auto-release.config.json
│   ├── dependabot.yml
│   ├── release-drafter.yml
│   └── workflows
│       ├── ai-release-notes.yml
│       ├── auto-release-on-merge.yml
│       ├── build.yml
│       ├── codeql-analysis.yml
│       ├── dependabot-auto-release.yml
│       ├── dependencies.yml
│       ├── deploy-docusaurus.yml
│       ├── lint.yml
│       ├── publish.yml
│       ├── release-drafter.yml
│       ├── security-scanning.yml
│       ├── test.yml
│       ├── update-dashboard.yml
│       └── validate-patterns.yml
├── .gitignore
├── .gitleaks.toml
├── .husky
│   ├── pre-commit
│   └── pre-push
├── .npm-cache
│   ├── _cacache
│   │   ├── content-v2
│   │   │   └── sha512
│   │   │       ├── 03
│   │   │       │   └── aa
│   │   │       │       └── 7fa6effa7f205c0354d1cff1aa5983d58a996b7ed716da0642f6aefd9e0342280791fd7de070475740797828d5d5fb7c20209d423e4250dc81ccea572cc8
│   │   │       ├── 04
│   │   │       │   └── 72
│   │   │       │       └── 7f10aaee348a897ff41a86fc704195caca0390db9ea6c9e37f130f931dc01ae6af8f8f24d330c78d402e03670e40c1fbde96c52b03a07aecd28ca970dbcd
│   │   │       ├── 05
│   │   │       │   └── 1e
│   │   │       │       └── 43b4d472f80b30589102c80d7baa1503bebac267acd73827e4418e734a66fde815546e9540bf4dd6a5c8dcc2d0b088b6c800dc7781e6c739c5d89f5107a3
│   │   │       ├── 06
│   │   │       │   ├── 36
│   │   │       │   │   └── ac5238b13c5752f8d2a4ca9732c8de4f9a0f373a5b2dd3e73abc6a2fd1d8b04c4a3a9a076a551ea1c5c12016e87842b02ced173ef4ab8627d4d50a3d19ce
│   │   │       │   └── ce
│   │   │       │       └── 31fb3fed118c646f6e00945cceb9a34fecdd5adcad388f7f5669a78f520f94152c7b9705050d2b75271ad435ef9a02ef0076d755fb4a971560ee12af01aa
│   │   │       ├── 07
│   │   │       │   └── 9c
│   │   │       │       └── 64367edfde90cc006ec5f3bb7de4729249d8a6109e6623a81d91a3352eae9898510906396501c4ade6c1218f61a2a89bbd181585d158fc7f4821631e91b3
│   │   │       ├── 0a
│   │   │       │   └── e5
│   │   │       │       └── 1eac2045db1c8aebb0151acc0ca1816a3be8edf3c55498ca5db667c882c91dcdb2d06b3275d5f2f7b2d3a899ac30a2eda148d0b6de8a8b7bab545b939c25
│   │   │       ├── 0c
│   │   │       │   ├── 4b
│   │   │       │   │   └── d5d99176af6ffadd5fad2bc850beb4766469f5d2cac76d7be24e572fecaa73c3c8d688d4ea6d58233b7218f11c6bace505f153cc410172b18618bf4619c7
│   │   │       │   └── f7
│   │   │       │       └── b9a5515a02c8a749a57a42343a81d89e7560dc4426d4ba241f41adb099657bfb10bd6c6ba5188f3e4dd466a059003da05793c0ab01b9e56362129e2278ed
│   │   │       ├── 0d
│   │   │       │   ├── 45
│   │   │       │   │   └── 89af7f942e9e335e6a25fd266415fdc91ac4bdfd222ff98dd1b7ddff5233e90e99250797f57abe0edcf3886d4b9427715782ab5ed90ed2ad4eb302ac24f3
│   │   │       │   ├── 6b
│   │   │       │   │   └── 4980e8d959c39aa171daa68623bfec5c3d968e5d78a0d9d2773930f4d67dd7e0916e81dbf5740ca364b6e316d1866355a0a728d2f4ab857acfe89a0fbc3d
│   │   │       │   ├── a8
│   │   │       │   │   └── 60c4a2eb1b2e30279d36798085e5e115a314910a1d1d21efb968601a78bfac7b2cca627390009fa368b3d36ef75f0f53bb7ab05a745704f5440c96bb70e2
│   │   │       │   └── c4
│   │   │       │       └── 630c2ba32bf90293f7147bc5f3f194a99bc992de634da6d6be8c6080e944840df92d94dbe6d7e22e67d7937036cd938d411f0a471de5be37594a0b3e333b
│   │   │       ├── 0e
│   │   │       │   └── 84
│   │   │       │       └── ba988a9e094e474eedc514f9cc47bab77688bad0caf4ecd3b9661705bc3adc6f0a83799741b7753ef2ac98f307f4b80126e8caa67cdd487afd1facf842d5
│   │   │       ├── 11
│   │   │       │   └── 3c
│   │   │       │       └── d5f5465209faebee25f63e9010bca5a554329ecb0d2da692e3f85001c26a19be9576bd25986d6d89965521d8cf21826a95862f6846645a97866ddaebc8f7
│   │   │       ├── 13
│   │   │       │   └── fe
│   │   │       │       └── 41ffc9210c7229cb80999a03c1c4ea99e9c57b3bad67b57950b352fd0d5e2c8599a3dac95f26e215279550e4c24123b4bf4164476ce6d5eea9277a2ce45e
│   │   │       ├── 14
│   │   │       │   └── 98
│   │   │       │       └── 584680da89ab5f12450af072a589c9aeff7486143e75ab78ad2831a8493cac4090677ce7315391b19e113513ab2807be8c6d3d0c06d9ca26e5f2031fbde9
│   │   │       ├── 15
│   │   │       │   ├── d5
│   │   │       │   │   └── 9bc5ffd5b08ba922af15c5bede73eff1e4e91ea1fe37ecfd69c1b77566679c911d4211fb42c58b3967095cd58dcbc24f20436f4130241e1de1468365610d
│   │   │       │   ├── e7
│   │   │       │   │   └── 70d1a66f921ca7a0f625039597acc080326fa7496759b7a973250ece93c4ba43e56c1e61e94569dd55127c05ed196e47cf7392d1607fb95ebcd770478b45
│   │   │       │   └── f2
│   │   │       │       └── a8e7b707e5e9518303c730748c6ee0a0140aac2c0c1c360e3a7e09c3973c78a2d38f23929df83daee2fe7aea3568f9a19705d2f5ce53d3a701c0498f3264
│   │   │       ├── 16
│   │   │       │   ├── 1f
│   │   │       │   │   └── 6b18dd0ca08e191543727c554d538cbd2d4cfddeef7fd0afb22e00366f04688f133c254d43cafbcc05a6e764f060316444009bd4da38d5ceaf8bac552097
│   │   │       │   ├── 40
│   │   │       │   │   └── 4cc03faa6c641e32ed5c3879ee181eb1e32ccf8e1a3c6a9e56b5b109dbaba6860a955db85e90a5103be85910bd6f53dd9adf01f0769d0701ca80505e620e
│   │   │       │   ├── 76
│   │   │       │   │   └── 62b03e9b3ac2ad016d1c2e26de5d25f280e9f820e5333eb411c7320ad87d8fd403b83797bb1f53c0ae988397e083c5a2c30338d5f551502047d079ad6620
│   │   │       │   └── 90
│   │   │       │       └── c3f63e1e16b74a41b3552260bcd4e17f30731bcbc70d5170b5b885b1514c6949190b345113994f940dd20289e16008cca66d9f36df967a08025e6ddc15d7
│   │   │       ├── 17
│   │   │       │   ├── a7
│   │   │       │   │   └── a82deef4e79206e8790cdfaf87f07ccfde91a8387651bafd6d2097ee237b48abea1f9d4c29dbfbf95578912441b579fa6312bc2cf178543fe8a663fecb7e
│   │   │       │   └── e3
│   │   │       │       └── 35b4b84efa695068e5aca44f16b2d83ecfa3f0c7045df2843c21771e5b3f7691f0266a54d17f4123ae8b907a8ed0b2c10f7c29f4e41e0886cd4af5643fef
│   │   │       ├── 18
│   │   │       │   ├── 17
│   │   │       │   │   └── 2c6f66933d8224db098964aaebb84a14c275ad10bda78ae0d6066b062e3f676c3acc3457d01605912d328043e2b8af2affafa904fb4205724e71d0189edd
│   │   │       │   └── cc
│   │   │       │       └── 46c566c580d2b56df24eb14f496c62d30cc42ea9879071b0028c9404d1cca53c7f27e7b05b92922605872b322b7e9109391143c39757ff9cee0c5ee96bd4
│   │   │       ├── 1c
│   │   │       │   └── fc
│   │   │       │       └── 29188ce4976f265b266a1b9da38aa0c9d76c1a3f5d4f6b5946a22c9490812e30b04fd2878afc2f3d7ac6d7af1b24cb9c1eedd7ddf14e7c9e6d128005a957
│   │   │       ├── 1d
│   │   │       │   └── 38
│   │   │       │       └── 605604f39c56109b865b34b66e0bfeb2f6b04d676074fbc378d1983d84cf2c58603121897c729da17ba39321fc7831535a0670947ab1bc2b11455a98dbc8
│   │   │       ├── 1e
│   │   │       │   └── 93
│   │   │       │       └── 21f3ea1a86621d3ae4b968528a63a3f2a20f8535a655fd7c893aaedbe18170b051dee7261f75b21a948e24def5369d20ea97b62c92652c787b11ac9a883c
│   │   │       ├── 1f
│   │   │       │   └── 1b
│   │   │       │       └── e177266c2b98bff3d459b4e608fa2437800ac9b4dd6e69f1b8cde4c8435319f627ca5417a0c62131c11ab8ddab308c01bbcdded77501b31478037d52a2c4
│   │   │       ├── 20
│   │   │       │   └── de
│   │   │       │       └── b0e0f4f8d27d6a4f04764ae0520cf3dd978c855f06065f84e0e7591f6e4fb14688f083a26c0ab279d66799273bce2f96abdf74c0a9d6db9b290a7443aaa6
│   │   │       ├── 21
│   │   │       │   └── c8
│   │   │       │       └── 4d7fa74de2d1e8305227ffb384f0b599d7d63aabfebb0667fabe719112ff1149b0556fd2cf27111c9f0adcc17ea2c52bda886a2898052fbb8612c57ad583
│   │   │       ├── 22
│   │   │       │   ├── 5d
│   │   │       │   │   └── 3e6e813bc3f5de6d41f2063ae813e0db072391191f4a2a6213cdb47b3324386a4a4e4583ff6666e102bd031bb466981aa83a765dcb6425bda8c9d90039f6
│   │   │       │   └── df
│   │   │       │       └── bd43e119bfcdc65fadc88ec5d0e51220fc5160d3683f632fbe344309e1ee65344c0125a61caa86902199070998d5fa2046a296ce310a76bda954f2ab7ecc
│   │   │       ├── 23
│   │   │       │   └── 7d
│   │   │       │       └── 11c9d3be6e79f63d0cedbe8db9b6cc0f1fec050637a1546b666a0914efcc8c7704f055fd76c2700e17e01e3fc4b637cc43fb950f6c686451f3f2bd3fa6c1
│   │   │       ├── 24
│   │   │       │   ├── 6e
│   │   │       │   │   └── 701d2dbef953d94fc775ac26e8374d60c74e5e221e452dab052146a41e5b65eaa638e4bba6b2be1ff23951e04fd0d7e3481dc3290517fc4f227d48d0063f
│   │   │       │   └── 91
│   │   │       │       └── 3565ad4d45f0f351efc14f7d18e388db111fd7528201d413f939472e5a090b71720982f2cd78636067b5fdb154787e13b0198bd5a97b086d7db432edb8c0
│   │   │       ├── 25
│   │   │       │   └── 31
│   │   │       │       └── 7df54ffa5c88c2068d30aa4539b0ad7482561edbb31146c7f0a22ab9cf338464b1d4dc0dca08c6b95ff6b37a4611089d0797023472b0174bfe5d1074f30e
│   │   │       ├── 27
│   │   │       │   ├── ba
│   │   │       │   │   └── 7ade1462023c35343130c355bb8b7efe07222b3963b95d0400cd9dd539c2f43cdc9bc297e657f374e73140cf043d512c84717eaddd43be2b96aa0503881f
│   │   │       │   └── cc
│   │   │       │       └── 7ff9f02546d7f9b76029a3c43c960234a1c7afcecf2b1219560c52a7796787359a0657587250b34bf3167b668259f47ba5b7bc63a8c09f7e808103fc5901
│   │   │       ├── 28
│   │   │       │   ├── 5a
│   │   │       │   │   └── 94f127c3ab2e4cf2543dcf54148bba1a2436a0fdb2befabecbbdd43c121d33494a8b14a0f401b1362d03d6063c01f93a0b7c5039ddfe45671cbbd31e006c
│   │   │       │   └── 86
│   │   │       │       └── 0b08226085f1d9c6a8d8044eeb132d0e06e4dde710874bbb47560bc22e4c7b4ad2286b1c0d5b784200b80452315f79193e306fd0c66a7fbed113105ded44
│   │   │       ├── 29
│   │   │       │   ├── af
│   │   │       │   │   └── bd4ebbadbfb1bc33a593e927a2456cfbf762b9a84a881841b35ca84013ac4e58063aa4f1fc53ef48637a0232fea4a9398bb2fed787fdb0d918a091e3ccb2
│   │   │       │   └── b9
│   │   │       │       └── b63de994402dfb4aa2bebf8c8c4e7f85ef10a2d1432f36a3fcc355a9b86f1d6c7a1d23df0f9cf31de30cf4450d8a753e0592af3c5c5d2740953da44fad5d
│   │   │       ├── 2b
│   │   │       │   └── c4
│   │   │       │       └── 318a283459760f3737be2a0420bf3bd97864683ea1b7d5e3552be33ccd92d13186a76151c06c0426cd1a9b440c2310ccbe2812d7bdd5a1189a3054915f04
│   │   │       ├── 2f
│   │   │       │   └── 43
│   │   │       │       └── aba62f2a1a9446fff35df87f74bc507ede21e7b9ed734921a634e38287518b27bad4295c15d87be28e9846412d949a15197b04bd560bf1608760afe7c6d4
│   │   │       ├── 32
│   │   │       │   ├── 42
│   │   │       │   │   └── 82c319574e0cfa085a09c77a42c27d3b18aa77ebe699caefeed8b9f656b0390dc7720999004840c14ddf31e708534102f90a261fe29ad728b72041dbf6f6
│   │   │       │   ├── 50
│   │   │       │   │   └── a0bf72bb8f50802b1bc27dcdcbb2b57cdcfc7bbb7a08fd31f5b0c86082afbed10fa778ad4970f5dd0917df0c0680c1f9ddcf6af8948357afa9178ccbe6c4
│   │   │       │   ├── 95
│   │   │       │   │   └── 043763a876d533c6f29097bd9c505ed14391221ec1af4ac546d226bd73945b5862f6088e02ec4a4f4bc513048a659e5cd988db95e7ac3e16e371cb7b72d9
│   │   │       │   └── fe
│   │   │       │       └── d03dc4f0f2db74f9cdcce912a7b1e396ece6a35e14ecbb79361548bf368e5efa879c26b1794557b4796dc917d1ce9eead2d58df006ed72fa7db186976806
│   │   │       ├── 35
│   │   │       │   └── 64
│   │   │       │       └── 36ff779dce8c7028d4aa782f582b6ea57d5f3314ae9c284778255b682c3024b33a7516328f5df85e55ab35fa0239880111b0ea824e974922956f42a65f18
│   │   │       ├── 36
│   │   │       │   └── a7
│   │   │       │       └── 29fade5c4c1f018a71646605e23099e2407d0fb14b76939d455216dd7de2af738002706dae427898ffcfa1d58bfa2b36b843b943ecf415d33d2889c13432
│   │   │       ├── 37
│   │   │       │   └── e3
│   │   │       │       └── 1e5d8a2aaf7a4e827f317f244f44437b8076a42d88e1b07856193ddf58088be08900b74883c35e108a2126d9b137d1ce575f9ab416d000dc22b97fdfc152
│   │   │       ├── 38
│   │   │       │   └── e7
│   │   │       │       └── 210e087817609c84e5fde1c455aa1bf2edbdc015bfbfad05f2b309b39866a445f90c8285958df9cb5a4462adf2c47ee0f8cac556d7a797cf0b778c723328
│   │   │       ├── 39
│   │   │       │   └── b9
│   │   │       │       └── a7205e215cd83506a8671e681b0c44c5f1d2cf0a08195818e441f859a5bb3366762eaf90d49634dc0878a2e4b0b7279134c9e3bfd4b20cc87f94bc7420cb
│   │   │       ├── 3a
│   │   │       │   └── a9
│   │   │       │       └── 4b2189b9033e8e0452f291bf1628d8a260a95c48549720363efa716f86c7a0b0ce583f321496abdf76a10a5ae3c37b4b158a6ae3b60487d43a3f2dc91979
│   │   │       ├── 3c
│   │   │       │   └── 42
│   │   │       │       └── 06098e6d4a552de7472ac8c5df0b35fea0e3ea374bee1aa5b36dc276c6f9e4ce4ab8ea83a9cfb7506930c175f2026f8375e3e1804540f0d97576378b6fce
│   │   │       ├── 3d
│   │   │       │   ├── 70
│   │   │       │   │   └── 9e407e6f3f59d8bf9189580edf77bce75b0d73d1eaae1ea7f0c20e364f8f0fa94d555a9a24e394123b4417de5981f73d033b4512e2756c93bb197a62d026
│   │   │       │   └── f1
│   │   │       │       └── 792d00bfabe4a782198843daef29cf196e00d6be6021d201339cc4dff8375656be6fd60ee482860da519ccbdda237852e681b925604272bb81d8d6f4257c
│   │   │       ├── 3f
│   │   │       │   └── e5
│   │   │       │       └── 6ed6a5dfcde7628ab987382df1286018799b4f715f60efa5fec60d850f8b58811ef57b0300df9637b02cf7ce188dfddc1e7d1a495f4c81720c22d5f5cd40
│   │   │       ├── 40
│   │   │       │   └── 6c
│   │   │       │       └── 5d5813cf17bfca0a5e9bc1958f2a9dcb625db6c63d171adcb4846a4f33b0a08a831263cdf57fbfa19f97a06866a6aedab04b56eee9f213f453da1fe24f3c
│   │   │       ├── 41
│   │   │       │   └── 36
│   │   │       │       └── 2e0deb12d15b6e1cd36f321f828e5289e0b26272408c500aa3944dfe8fcc3e465469c325f76a91102861736d919da3b5cd1b5b576be6d0a8813b1c85d3db
│   │   │       ├── 42
│   │   │       │   └── 9f
│   │   │       │       └── 166d93817be6e5829b944fe970db185e2cff2ad286ad73d5299a27a61080b11af14b6261e6f50a30559187b499466d2e80eb227789589a77fd9c5639ce88
│   │   │       ├── 43
│   │   │       │   └── 46
│   │   │       │       └── b3719a32898bc593e5539cc01a560fbb1f2e869f334b88933568e90365a6817382299f68b60d5533d4631c22fb0bb778f3473fea6ca5e4a0fa752e1a66ba
│   │   │       ├── 45
│   │   │       │   └── b2
│   │   │       │       └── 514b85164059331d34f057298c4d4bfc12a6213a9f1d38ebe22e3dae82d4e25d1691412ec62c6c594cb2f58d684c7a84827f9ce671992a4e5f488987d771
│   │   │       ├── 47
│   │   │       │   └── 96
│   │   │       │       └── 71f6670946a78202c3ff887c52b9e731adf421cb47d1a5282140115de89f3a26448a89769a3059920fa60903de08c132f78ce0990db0b1eb376340ad1d6d
│   │   │       ├── 4b
│   │   │       │   └── b3
│   │   │       │       └── 88f6f6507f3628937e2977e64b60c8827c40969944b9fc4872e672a4c1f1af2c8c5088ebc1c912b8d3b98ae381869d5b789210d4c5ce3976fc52e02c6f36
│   │   │       ├── 4c
│   │   │       │   └── 28
│   │   │       │       └── 25551b7395f7d137144c132477e831812c9a5ebac15c80c543f4f644cc02a752cd65282817e6ef41982d9883e2cbf4c8190ee80516cd5597e269e2dfcf1b
│   │   │       ├── 50
│   │   │       │   └── e4
│   │   │       │       └── a1b0fc33ecdacc52a851eadd215a315dbaf3b36edbfbb680c7d7f848adf44d2030679c159dd02c094c6bd3a67815966c0609d3fdfd997fb55ac3a9cb98cd
│   │   │       ├── 51
│   │   │       │   └── c5
│   │   │       │       └── 5f55f68ae127389bb5f77544a81e8a3340604415e0c2fb3568d3ab7df317bc0b31d265905e90d5c7fadbb435a947a25709fd0006a92e3a1de7fb41704833
│   │   │       ├── 52
│   │   │       │   └── a9
│   │   │       │       └── 3e82c7f2c883d4ae09b0914cd26570a6eb14a5630f94eaff12e10cd6a445b42447a99e88451a3ec2585462a33a0df5de21124cecadbcace20fc819ef6f24
│   │   │       ├── 53
│   │   │       │   ├── 1e
│   │   │       │   │   └── 328065acbb673b8ac1567bc62ed5896e266a95871a8ad9c2d735003901c0b741f6c636933b7eed18f1bff3d7aa572e7171658bd685dddf84163d0cb982e9
│   │   │       │   └── 67
│   │   │       │       └── 3524cf804eb4a5a184fd2a5cb1c74ff43800a3b0b150bff1e03d9b5c17b20da7ccc388c7b4370b9f56d1a4fb68322457012d332d0f98728b420a950195db
│   │   │       ├── 54
│   │   │       │   └── 76
│   │   │       │       └── f38d9361ee93db65ec9e436476815c59fa45ad7ba18f8d2784b84e42a140d509f482d9bd8985073bcb5e2dd7695ae91e0d118e2b5d51c1f9a50dfa4209c5
│   │   │       ├── 56
│   │   │       │   └── cb
│   │   │       │       └── fb9056979bea6d1c3319ee2cda46c3fbd0682b5bd341346b30b7d39969504b944d123690eaf1ebbf5465f217dafb3346b32b75b2ece9585ecbb260b1731e
│   │   │       ├── 58
│   │   │       │   └── 42
│   │   │       │       └── e747c96d01e41476955b36960cdedd5179094ccd826e3c32a65468132a18f093f6db9655401ad49693f38cdbc20d31d5f978e8a69476ddea6b767c28d38e
│   │   │       ├── 59
│   │   │       │   ├── 01
│   │   │       │   │   └── 3c1d8e5428225103af34c913eae58ea0145d6932ee45bbf5014bef3d76912a96fcfe1006fa88d749cc57d159304cb378a7d177c01699fdac050cb048ff74
│   │   │       │   └── 8f
│   │   │       │       └── f74d4304d31dca3d875147110926f5d11d5e0fc8fa14b31b596bbf25c08b7045044785dd94f713ac71a4ff6137fcb825c8023789385055121ffb16d0fc5e
│   │   │       ├── 5f
│   │   │       │   └── 11
│   │   │       │       └── 407da4bcd54592ed39c7394f97f3b2fb205152456ead1fd34f89b2645e365d41703af669ef2540da0d08c99e450563440dac5d917f71eae214069883e9b1
│   │   │       ├── 61
│   │   │       │   └── 3d
│   │   │       │       └── 46a8f48bf24267db47637a5317eff713469fd8f70e48647bdfc504d51eb3aa6b6c8c97b8bf51f32a29153957b984c8a4eb5158095e13503d5086f0f04ba1
│   │   │       ├── 62
│   │   │       │   ├── 00
│   │   │       │   │   └── 697491cfc90d94139c7e8654977277a3cc0bc3d1bdb65363ae00ffbc3a79494fe3e358fc6d8261aa28a73e4604cceb753d80dd18ceb61cef5476593fe14c
│   │   │       │   └── 5c
│   │   │       │       └── 559b200fce09df6b6d7d026e684db52cfed15974235f7ee9b98206b82334f452e29f9e014f64e554b3aa61020003ec3bc31df28911e4b58c3e60efce4577
│   │   │       ├── 64
│   │   │       │   └── 19
│   │   │       │       └── a11350bd2dc3e81fd5d949dc223ed6cf1d944ec009cccbe90815056b9cc0b16380ae765cf78013a9ce29607348ce8116a24f7b0859fa4ca265b66abda8ad
│   │   │       ├── 68
│   │   │       │   ├── 64
│   │   │       │   │   └── f16e96e0f3f6f925f5351d74ab6c7df05d9b8b3c970d11c65014cc4bb37a12ce0b55bba9c53e46db18652f05c523295d98c81f56c7169ba3e1c41fdb5c45
│   │   │       │   └── c5
│   │   │       │       └── 933533de497fc54cbd70cd6feb0b322bac19a5400a287def6dcf6da202936e4d5adebd8d659df4e6ff66c732eb11074d53cd8357ae000135570a67d2f1b7
│   │   │       ├── 69
│   │   │       │   └── e3
│   │   │       │       └── 661e70716e2d92b746aee950550bb25716584b94e9ef20895e3cd9e2c943400a5ce6b4050463cfe90622b78878ee7ce97003e736d3ff239e0a3bc5cae0f0
│   │   │       ├── 6a
│   │   │       │   ├── 61
│   │   │       │   │   └── 84cabafdddcaf7f155acaf643b8e274cf2b3b0f6d4e3f2b3966012d50d977b74abcf00e70cd30d7e604cffd62539a3825d5075b7190dda35e960c0c092ff
│   │   │       │   └── 6a
│   │   │       │       └── 5357458344d33ab7d8a6c73b040d35996b0669cdf7100c5a0f6f2b6eb79633dccea6546372802233aecff1d2f8fb786751c173855c3e057ddcc36f9471da
│   │   │       ├── 6c
│   │   │       │   └── 1c
│   │   │       │       └── b3af5f9ea75ce4e15b9b784555895e7ddafbb69471360596393a7cde859a8e3a0a2037cd3e98db42a8f9219f6824949a8ea715a03e86134a78410aaa4e5d
│   │   │       ├── 6e
│   │   │       │   ├── 92
│   │   │       │   │   └── 31bead3789fe943705d9f874caef524b87800fbe75e7b4373a5ce5fc515ab85d039597b970a24d00bc897e6fcce00b0ddf49a55364ca403cf6a05db2a61d
│   │   │       │   └── e7
│   │   │       │       └── b01f332f60bdbd8dd7904d520b79c49a64a9edfd12568e8642179396eb467aeff1a648b06438533baa1d4f237cc536d25b6992f9790bb5bcb7daccec23e2
│   │   │       ├── 6f
│   │   │       │   └── a8
│   │   │       │       └── d2bf1bd59f2a6d0222e36e458b13f94e9d1e257d3b43025f9e502ed1672f9041673ac11cc8576084eb106e3260f1736a888a1b430990f934f38597b7d105
│   │   │       ├── 70
│   │   │       │   └── f1
│   │   │       │       └── 8d93b90989f0ea548b6fee279cc7109402a57c6d1c0466f79c2f19c2e8f4579e1a83507bf35f7ef365bc35cbc4d80a80ec4f9c3b0613e85884fcee89f2fe
│   │   │       ├── 72
│   │   │       │   └── a7
│   │   │       │       └── 9fb91b21d76a56c86b08a0128903d96e16ede6471080f8e459bc0e24b4b4b322e094b56571188b978a01303b9ff2c1614c67640418a5af9191b5cc33136a
│   │   │       ├── 74
│   │   │       │   └── d0
│   │   │       │       └── 2fb0045ff1cb4285d2d1716050b44ab3155593ae35372fabc4d5ad65d2240e88fa417fbf25e754d5f01cce0b1b10b94de1db3ae6db536dec534b31fe7771
│   │   │       ├── 75
│   │   │       │   ├── 10
│   │   │       │   │   └── 7bf2cacdfe5ea0a96ba56a1f52af17989f179d7481b7d3e18ea8affd3a52d5c8b8371cf9ebe92a8e59358e5ca4700b6786602919e7d34db9282f4aba6038
│   │   │       │   ├── a3
│   │   │       │   │   └── a3f7440c563aba907ae0516c81759a218da2b906da1989ec63393ec9b20606733d03c27756cf1662a0525a68327d5efde0804d2937381f608cfcc872f800
│   │   │       │   └── c2
│   │   │       │       └── 855f78e7d0ca486978e2b2846f7b12095442b36aaef3dab64ac5ff8c4abf5391d9879ac5389b695c2e88eb8ff14797c9a4e55c4c99803e7ed4643ffde829
│   │   │       ├── 76
│   │   │       │   └── 12
│   │   │       │       └── 9ff74dd4fcf41963a6e834db4019d59b1bce5601b8d3ff5c58a19202ec5018d3259aa4e05056c56b0e5e7c5bcebffded55a4c341b5157831a5df74cc9214
│   │   │       ├── 77
│   │   │       │   ├── 62
│   │   │       │   │   └── 562c28af999613488a207bd32c805099aede7bd418a47161989230b59219656d3783946a99d83f2f0fc13f9496bc58659b6fb3e59bcfd725857b2091d967
│   │   │       │   └── 97
│   │   │       │       └── 4b4ed1a5c47e3b8cfe73cd5529ab55029854420395ff865b9735647a32741aa3ff3502cd830ba2df80b1bdee0aa454c8bb96de2db8f016f005b47b479357
│   │   │       ├── 78
│   │   │       │   └── c0
│   │   │       │       └── 6b11b047b69af1116cdc8c7416a1601f7402d3acda0d1bbbde0aa3dec9b8a3e7e9e626c78a8e7787d83316de4dc12ccd9b73053f7beb7a485de0d521975b
│   │   │       ├── 79
│   │   │       │   ├── 7d
│   │   │       │   │   └── b6e1fca9606766d0dde9da715c03323e25af187d1cfbcf8495257703bdb476d278f0aae4bbc55483ad6db2767f1381b31619e334c12071e1d137366b7b2e
│   │   │       │   └── 89
│   │   │       │       └── b441606d52b0566561b4777f3a386030d7a67df793e2395a3607b6e35926c779d1a5e5ed1959aabae6438681448d7ac1080e407d2126d383f24af5d84264
│   │   │       ├── 7a
│   │   │       │   └── 58
│   │   │       │       └── dc8040e5127b3fec05c5a2c0792bfda708ce0fec540f90673f0d62f2e6b985116bd96b21ab8a4d5df7f4086399c9e1ff58b15bc1900ea42691e7f6b21275
│   │   │       ├── 7b
│   │   │       │   ├── 0a
│   │   │       │   │   └── d74434c0a805e5925eadfdf91758d021157f48f8290a970eb38c4c24f3a4523cac19af7c69051b28eb9e5aa9869fc2d9dba472e3eada05ce677ac5d569b5
│   │   │       │   └── 82
│   │   │       │       └── 092aa37cb3662a311779faa568fb5378b34db475209553248505bbac1d4bffff9f78e6a241a159fde805f205a1d1a978290d0783e32a55f8cf71a357e93f
│   │   │       ├── 7c
│   │   │       │   └── 95
│   │   │       │       └── e3148786596741652419f62b7050f594580fe637e4bd092b38980d4dd6846c59e026e8229584e8b17770b35ad310916bed3729e9d0fc0db589153a3e0b29
│   │   │       ├── 7d
│   │   │       │   ├── 3a
│   │   │       │   │   └── fed3ed3b4eb6ed9e6214fac0edb28d53c3f3a08072b0fbb5f07feb16409c5e200137afaff9f0ab664666d2288c52c18936c0f3f1be80ece3d7bab2b1ae1e
│   │   │       │   └── ea
│   │   │       │       └── bdbede422630fa52908016aa17d4f671f25457aa01d2536ea80bfb35a8e4181420bdef7176655b118af4cf701de6cabce22e2129e1876139552b6a053339
│   │   │       ├── 7e
│   │   │       │   └── c7
│   │   │       │       └── eb3b433157ae199e8cbcfe5d6f5488e31dadbd499cb2a8f8100708620dc696f3025cd96dd7595386c78337a09067bffcdd519208a75803792f7c1b33fc36
│   │   │       ├── 7f
│   │   │       │   ├── 24
│   │   │       │   │   └── 088460e1cdf73da4ada41fa3e5f5ce010c919f3243ea932220603b61c8d628360df0561a0930c875f564b8529ff528c3c556936c4f6ab75a65e7d8dd66ea
│   │   │       │   ├── 41
│   │   │       │   │   └── 45a4875c1e09fccdc3d26dfd5d45ebf0b74e3b60c9da889337bb6c3645ec2b07e7e86ffcde3d972b3b24282cc30eeda04875d2dc40810ae5d62390b9c6ad
│   │   │       │   └── 72
│   │   │       │       └── 9d5113edc958d59fe45617ba62bafb6c0cfc8e074e5fd0fd94df0768ab589726b5d3dcbf315addd14f7e6f4fd37eb139796bf15d7b27a9d3fb25c6f152bb
│   │   │       ├── 80
│   │   │       │   ├── 13
│   │   │       │   │   └── b20a2571ad76a461bb0810cfc3ee5ab35d5d27837b68b7ebba141ab227d0aebc3009ab0f979b11f9f2919bfa1980466cecf60f5319d18e8c6672ee5ce16e
│   │   │       │   └── e2
│   │   │       │       └── 879241f4307f0e5a82afac4d57ac9a294e7152edd7234c37cce8e9991e85f545996c735b8d146092668b171ca3639638f4b661454f0a895195085cf04fde
│   │   │       ├── 81
│   │   │       │   └── 34
│   │   │       │       └── 2159872524c81acd6fe2bfecfa09ae0309057356f3cd16746072e23309de6079f18391e5b666a924ddbd1848ec65924e38b515318909593644389af6a8f2
│   │   │       ├── 82
│   │   │       │   └── 06
│   │   │       │       └── 35fc6a4769192719292c0abf2b072d271c2aff9c6977daed1b00ca945ca4350ec4f88cd6d5c213ac83647a105b42f59605fcd1826144b5ee690a06d17cc6
│   │   │       ├── 84
│   │   │       │   ├── 79
│   │   │       │   │   └── 4d3a41a02d827d4087dcd49a2f9328190acc7549f0033f7d81c2886e36003dbaa4254da63c5adca84d9b69b4fdcc27aaa8ed08d91be06ec61f2855ed6a8b
│   │   │       │   └── b1
│   │   │       │       └── c971ecc90c5fac945891d7d8677fa7178bf6fccc23b853378d0d5209bb8150d0c7e968a5095df5ad6049e82a07d6bdc52cd310f81f211930b9c3e66c742a
│   │   │       ├── 87
│   │   │       │   ├── 51
│   │   │       │   │   └── c8274b42245cfba0f50963b50f4e0c1822647ef67eac0b1f19aef5f2be17651e402f82b24cde8aeddfb34c58b02a07ba6605fbc37f987cd1a4c706c553ed
│   │   │       │   └── 71
│   │   │       │       └── 5b8ac6b69ca18fc42a66f3d1e4df79412ec9da181bdcb50a2968148e5bfb88b3a1537b5013c809ca149af356cf6fa4676c4deef7585dd5e2522c93819a73
│   │   │       ├── 89
│   │   │       │   └── 83
│   │   │       │       └── 4ecc75316bff72be6a6ff571991467ee0999b790cdc344e13b9b699401301382e6f36f484e96b62191c8600c9ef62a15d3f2f7c2800e1b6ffef0db64cf8e
│   │   │       ├── 8a
│   │   │       │   ├── 4d
│   │   │       │   │   └── d9802f5d63f95855533ef8e212b1a6037a0d6d6f456d3f9b8bde8ba1d64a0639a50c0cfa5b1487a2e099058a659414f9fdd2c6cc34c5d000854e96760a24
│   │   │       │   └── 97
│   │   │       │       └── 1f9c6fe9e382d2b35525df2f2f42927626596f77609512fff85ab306c45b554a1645809137769b0f9d225c5dd00ecbfb1208bb9417a6fe6eed3f8ee575d8
│   │   │       ├── 8b
│   │   │       │   └── 24
│   │   │       │       └── 57649cc4cc2d8bfaf6bf56dd7d3ee5000820cbdc9b7a9a8699063ff5b0cc59d283f106057e573a80b237c49f1f7316aad99a7fa500c3467d74720661b904
│   │   │       ├── 8c
│   │   │       │   └── 28
│   │   │       │       └── bf40a50cdabd49bb96b727ae131f60394a9280821d0ba649f2a9d4389ba0c2574c49d871b5c40451c0d18f41f8b548b74b599d4e273e85e0e30104d88624
│   │   │       ├── 8d
│   │   │       │   └── 02
│   │   │       │       └── f79519e871a16dbb7574d094e8633ff8424356b30c628c368254d6518914cedc74032ec76ed59b66214bd5e323e9fabbd69b98f4cb44c6fd2eb572e8a34e
│   │   │       ├── 8f
│   │   │       │   ├── 45
│   │   │       │   │   └── bda0c24c37e625fa1587c9283016b66e926b7cd38cd4f86790f318b07d951687a9f63eb43e5f07d589e09df82b387ee6d19016db83ecd7126329377eef45
│   │   │       │   └── 77
│   │   │       │       └── d52e0bd3a39dbb6a7c98c893864d825b1bebe79d062f1349b99a691cd532be9f1029a6408b3082f4699e1d6e55423681928619be933138654ca4068320e2
│   │   │       ├── 90
│   │   │       │   ├── 0e
│   │   │       │   │   └── 56428355a38b7d94dc769103450b129e065e486db48d065d4cfed2e4c3d5829fe871341016e5087c81d86ceb70899e18c9db3416168a8f24fdac2b5015e4
│   │   │       │   └── 69
│   │   │       │       └── 067a0608750b0e6f85e3b1f33deeb5ec887681c1ca3e84523aea83b8b3d2d4f8f2c00b9a09ee485d395171921b2695ba54a8302f5f0d750a5b973fe8e41e
│   │   │       ├── 91
│   │   │       │   └── 11
│   │   │       │       └── 91670ddb2e5148483060c13480d5330114de89e865837ae6e60c4dc017edfec972fc8535aff2be6b90b6ea6176384633e4fc4cc79c2948df341fd5c1661c
│   │   │       ├── 92
│   │   │       │   └── bd
│   │   │       │       └── 17dbee98cbfbc9ccb60950f09911cf127d071ffb508e16802a6ae266ef8ba6421b5af4cee53491cfed0412def92f7062d051b5a9333c2b5d8c2b633b4728
│   │   │       ├── 94
│   │   │       │   └── 6e
│   │   │       │       └── ccd41785b69a3cbe6733bab9c3cb8311092f5d44d32d9d86157b712c156f3dc877209bed0d1511c6d366687506a1b17ccd1f1fb86fac924ce266825906fe
│   │   │       ├── 95
│   │   │       │   ├── 88
│   │   │       │   │   └── 86f66880d649a434abc280f67605abbb47711d06bfdea32cea11a9429704d0564033bbe4f9d5c883412b9525389f7f29fc9865f553762c9f263680b74248
│   │   │       │   └── cf
│   │   │       │       └── da6a19feb78fd2595fea726ba6623ca62ec59f37710b869995b9416382c391aeeb993d54b0010af2abe1c71af3bf488d8a557dba6f1f849fece133c83c85
│   │   │       ├── 97
│   │   │       │   ├── 2b
│   │   │       │   │   └── b13c6aff59f86b95e9b608bfd472751cd7372a280226043cee918ed8e45ff242235d928ebe7d12debe5c351e03324b0edfeb5d54218e34f04b71452a0add
│   │   │       │   └── 9b
│   │   │       │       └── 930ca6e7be7018e79ca9e2f88256e0094e45700f6042e4f4b7be887dc897ddb413ed3d5f1c7cab977e75d565d9d5a36a2335aab01309f3246a780e66ba06
│   │   │       ├── 98
│   │   │       │   ├── 9a
│   │   │       │   │   └── 68e84545cf186953b6927c75871a5e5f661d07ef805b585fa7c3a0c5be109626fd58145345d8bb858e94e1b66b59937dc1c3d4eb628c1c660dea5c352de7
│   │   │       │   └── ac
│   │   │       │       └── 864ad4b45e218c1f4de4d9f3b6c472c17387abd03684f2342e86b2ad5e72f68852c8c6e8ecce321554dbbecfb4675963f590d69a590ed55a1a6caef56aed
│   │   │       ├── 99
│   │   │       │   └── 98
│   │   │       │       └── 448f12378f9292ce130fc418d98bbf63a156f6d27e8eed850861153c0edcb5e811bad603432cc61b4f94549f2d43e8c48367de701b7ae30eca763af6018a
│   │   │       ├── 9b
│   │   │       │   ├── 3e
│   │   │       │   │   └── f67c86d00bc662f0c2cbed99d6642875488172be12158566b611303af794512f2efbf85a10234e59382d58b563f336d50407396c650a1f409d4af467e88e
│   │   │       │   ├── d6
│   │   │       │   │   └── 15ca4945a64c3bf495423b7131b87e3a97bee25d335e002733b2994ad038333639a7227df838fbdbb1c2c77dc3c1de199a53731445c081b4fd0c6973eade
│   │   │       │   └── d8
│   │   │       │       └── 13c11921cb696f08f7ba409a787771b54d81141e7fc5cc952dabd3231f8e9a9f5c0953e19da060b954ba1ff115fc16dfc3969b21029921b300cb6731c871
│   │   │       ├── a0
│   │   │       │   └── a9
│   │   │       │       └── db845c91217a54b9ecfc881326c846b89db8f820e432ba173fc32f6463bfd654f73020ef5503aebc3eef1190eefed06efa48b44e7b2c3d0a9434eb58b898
│   │   │       ├── a1
│   │   │       │   └── 16
│   │   │       │       └── 42c6790ed2f6bb0d8a2fa3d42ec39ae52b1f8c51fd99266c3eb50ad3f93da11c955666ddd334a871eb7e5d32df2d95fe4b411dc952edc2ec440075d2e4c7
│   │   │       ├── a2
│   │   │       │   └── 81
│   │   │       │       └── e7e49fbe8656a387fddebf50395ed76f90be5bde0d8da3e071dbaffa84d3fe80032b33ce9dc72a6feccd310b2b6c0ff2cb4e3b96afa5f64be198029a2977
│   │   │       ├── a3
│   │   │       │   └── 07
│   │   │       │       └── a03949db85191d4909f468f63cea33e3f1165e5851039ea92a6fdfe71c1a212684a0e979a2c59001a5d077f9627e64ac9808c3c23101d3e903dd678b2360
│   │   │       ├── a4
│   │   │       │   ├── c8
│   │   │       │   │   └── 4e7c50cf8aff6de638c85e41e8b169a44b241bbec80454d933d044476ee2e1d93ffb8f832aaa9cf9db715ef0c558f3d282e9287f41f4b6b0cf928e014373
│   │   │       │   └── d8
│   │   │       │       └── d31dae18a09757cdcfbf9ddfbba4eb2ced665dbc390b2319d6d3458cfe3931794c1bd7d09c8fd0990c0a836ac2b52e4c7a32da40824f2c2e9ad2828e9633
│   │   │       ├── a5
│   │   │       │   └── d9
│   │   │       │       └── d16d0e1c40b653ae71d75bbe980854d13737e87032bb5a41cab0335e2c19e80fdd1b630c2916090388deafd50c7901422926898f1dc9ee2272e2f790c246
│   │   │       ├── a6
│   │   │       │   ├── 45
│   │   │       │   │   └── 2e8a52ed9bc6f424126dd4d7da19cb119632aed03ca6dd744311f5edcc3b07a99242b1ac823c861dbc4ccb33ef1cc3f1b4a158438644851d2e6cc467b931
│   │   │       │   └── 5b
│   │   │       │       └── f44a23e04004f4fcb8c2d0c986b28a3fb1da52e95e13a4e500c4ee09dc39ef9cb2da2279cd87d8625354a51a00a3b11bf49cdf53bd7f69591a959d91fd93
│   │   │       ├── a7
│   │   │       │   ├── 32
│   │   │       │   │   └── 6ad76b4469a221aa36f3a42baffceca9258fc13dabcea1f9be75b69bf8c1cb6a3cb6efbfb594b9ba245706805e5eb2427a9aab868ab857636183ffcbbc52
│   │   │       │   ├── 7f
│   │   │       │   │   └── 3b7e7150102a863fe3f0c7edf01b5ebed441e1c485f1b97a3ac58ab37da80e535b9cde6231a3b7f09c4b2f1b566035d0610bfe0557ac9ae62216f1c01a50
│   │   │       │   └── d8
│   │   │       │       └── ff298663e8ee2d918a19a0a00435a7537ce757a337e6dd8597e213c9e56d4ce61b5be30c4b719c5054fed981c51f78a88f5389a1922dab4dcf5248e83c4c
│   │   │       ├── aa
│   │   │       │   └── 90
│   │   │       │       └── 80bd197db2db8e1ef78ab27ec79dc251befe74d6a21a70acd094effe2f0c5cf7ed2adb02f2bf80dfbedf34fc33e7da9a8e06c25d0e2a205c647df8ebf047
│   │   │       ├── ab
│   │   │       │   ├── 20
│   │   │       │   │   └── 87e36d5840f4b65850f10e37ed7dcd5947958a433573aaca789fd3369108553a8fc1c9a845a143497e5e7c90e70419f43fffbc1e1530e19beb2cf0473183
│   │   │       │   └── 90
│   │   │       │       └── a0dc68efd52e822d9d3b85754d0fdfcbf354308c8deba163bd0d9a25aa2ff3ffa91a4f516c78729887b3f82207b16c569db31b0fcfda64172e02808adf01
│   │   │       ├── ac
│   │   │       │   ├── 1c
│   │   │       │   │   └── 7865a5ac22a0bb027fcfbce2f71d4397d8847e951d782302ffd6e7dc65b329403a8408bddfe2410655ebc3a9e60ba4322b2930e6d32a039078654b548e94
│   │   │       │   ├── 51
│   │   │       │   │   └── e187fe9d41cda368bfed295f36e4ae7ad00117f4fd4cabc1ae41877ea3efc3cb5e620033fcab4d2b81c9906697165c165c9eb06d09c3f255e6bb627c3839
│   │   │       │   └── d5
│   │   │       │       └── 1ada8215399d75d02c07b0f09d6312f36af582cf44d1c5602926e26a7c8ec08371d2d44f9d457f4118c891f13f54ee29cc1f09f193c8a7148fddf9901d61
│   │   │       ├── ad
│   │   │       │   └── 48
│   │   │       │       └── d0a32ede8194fd5d855704ad637bd724067369eeacd164e84b431e51704a767421a55e8fa6bfabdfec09b82e29847050492086734867e04ea73d402acf4b
│   │   │       ├── af
│   │   │       │   └── 39
│   │   │       │       └── 5d2143741ba08238f96ddff36759c58c63b72cb2ace9b9d61da859fad9b26bb3996e4ff4755f8d512979dae21b107a1b67fbf120fa53187890dd08590d35
│   │   │       ├── b0
│   │   │       │   ├── 69
│   │   │       │   │   └── ef6f9766ac968a119f8b0c8a60baf757ddb0e5125966bf8fc2950f5ac1c98266b971e63432c8c58533990123e13234e0830e22a4f22974cdeb97dd9960ff
│   │   │       │   ├── c0
│   │   │       │   │   └── 6287fba94763d8f3bc9319dc82b1dcedef258efaf60c010e7ed197574d26380855104a640b6e1789895d846c1f52d4eb20267e7c0f1fc6687bdb0502bf99
│   │   │       │   ├── c4
│   │   │       │   │   └── 86eae8813cc26b7dfb5c095299e8d9b392c4d3b26e95a0736a0e93e14e5a532b33da47ecb9f8c6756f22a21ea62399d17e15f3c3819ecaa7043faa2e8914
│   │   │       │   └── da
│   │   │       │       └── 8dedbdab711791e11403743c443259923b3cfd3c763ac2b6dac038489319c7af46f4e0247e6e42be79aea56dc8e06bb9181ea26bdf8bfe4ff5e3ceb61c32
│   │   │       ├── b3
│   │   │       │   ├── 1a
│   │   │       │   │   └── 7f56449634bc6e62aad466db2af6562e57fda7258e005182788e3cd7642e657eb8cc865a4aaa3e607779c9076547a315a3328ee124b9c3d889af9f2a814b
│   │   │       │   ├── dc
│   │   │       │   │   └── 2c7145ba3c560a768d1533825be8d86c4f0afbf5ab6f4e664f0cd18f995a035188194d8495b01f2313f3cfdabbe528a40ef97c4127901e9e647b28e19f5a
│   │   │       │   └── eb
│   │   │       │       └── 39f998983a92db61bac89488a0adce33ed82cc1956815b337a97ee86515ad142f4d3d45ad1e332c7c5713591623b4b4017b0fd21eaaabe2843c2c69fbeb9
│   │   │       ├── b4
│   │   │       │   └── fb
│   │   │       │       └── 863930d065d0bb76f5651b3768e84387f4152d72303c3bd9761825cfa8c81d4e2c9c938025b8679f319c4b8d611f9626ba4d029f8475dc6ff586fe5979fd
│   │   │       ├── b5
│   │   │       │   ├── 37
│   │   │       │   │   └── cf317838766ab773d9617270de8511dd367bf7467f2b2288457a4bda388fdd00f3b1dc6a77e57848299423f08c9195f61ce16ae9d89f77798b9bc8cc57dd
│   │   │       │   └── 8e
│   │   │       │       └── ec56dd722fda33231be66ed379aad987da4ad770109f8c488280a18baae9c91ef82f646d8f725da843791b7190116f50461077642f371818ef329d59627a
│   │   │       ├── b6
│   │   │       │   ├── 3c
│   │   │       │   │   └── 0ce5ec4c83a046448fa43664e7b4db2f7594b55fc045612ead9c9da1747d2457133afde559db1cbe16a4ad496bd89ad7c53032c8c6eae8ac7c0329f0f3e5
│   │   │       │   └── 47
│   │   │       │       └── c51185189afee296af509cd342d0b1db64f8e4429ebd9b6a73eb6e59d67b5aa459b73c785beab5152061562876c7b4f09cfd2d913c0d1fa4e78814d23d63
│   │   │       ├── b7
│   │   │       │   ├── 63
│   │   │       │   │   └── 839645c14329fb8e497a4cd6b0fccb55115bc819e9490c21b8d4e92afcac14b090704385d566c1c055490ae2606fddec22012dcf1ae516b98d81a0ae1953
│   │   │       │   └── 85
│   │   │       │       └── 3df3088c6764797e7a179e32a80030fa7cbf022fef63c8c7f3ec5a65aa06d7ca593d705bde0d7b806cf0f7f944fdb66541229b42fe8d10525f7d39c896ce
│   │   │       ├── b8
│   │   │       │   └── 24
│   │   │       │       └── 3c28a65d120aeac2fb2d4de11c5f6593118bb868cbc14a7c4c3c8c10a707a0d9b55ff09e592f29a2f3f2075cf6d3db5a2a9d1edbf4e9dce27ae4e5b903a1
│   │   │       ├── b9
│   │   │       │   └── e1
│   │   │       │       └── 1ea67ba3a6a79eda8e5a2189ef1d4e82d00e3630d76c2037aacb907276b92e0b947566e5059e6dbb11e1491a8107250827dee95e46f9935da2607d76ede2
│   │   │       ├── bb
│   │   │       │   └── cc
│   │   │       │       └── 7c0db6fc0e8b37e0cecdf29e1ee0017ef818b50fe96af9d9110af2e2e50b9bfdd23be59ed84c85c17b30382db2084a5cbe11c9f4e5f7687f3670ab23afa6
│   │   │       ├── bc
│   │   │       │   └── 5b
│   │   │       │       └── f1455b099cabb9d8a6727135517bc28c43a223700d02c2cea588290de796c471d64d7cc6c97b7b6483d75b3fc88fedce342dbef7bafbcd492b7596a3134a
│   │   │       ├── be
│   │   │       │   └── 60
│   │   │       │       └── c3d7e8b035532cd971773988d125be5d9f3a7a698705b0a413fd08f7a91ae9efbbfab450561406f519cbe50fd85e2505f8be0a06dad1cc9e82b0c5a61a1e
│   │   │       ├── bf
│   │   │       │   └── 18
│   │   │       │       └── 54cb827c9727b28a71fb033975a5d778dc6261647fed3f6c1e37c4e7b506e5398f80d176d3f03264d7fa023ee38eca0fc96bbe7bac6d028077160bc39f30
│   │   │       ├── c0
│   │   │       │   ├── 0c
│   │   │       │   │   └── 6be3097ad962bee4229c4963415041ba3e48c57906c8c41a44937e26387be6882937d0d4ecc066ddbb4d152f7b2470c4b1448494dbb0a965e9876f6159f1
│   │   │       │   ├── 16
│   │   │       │   │   └── e9bfe3507ed1c3746f3a41cd292325e4e48477b4cf157749d62ca0dc5fc9cd9f89d714e170b0abaac36a2403fd43fe6a5a0249aeca776b3c94d80cd66d17
│   │   │       │   └── 1f
│   │   │       │       └── 0e75de3b862a4efcce4709d870b00fe43a864938289e23df5d43fe767ff3b8e2581e0eaa4feccf7d226fea861e9fa9f59a0e0470e42d2929412aaca5ae8a
│   │   │       ├── c1
│   │   │       │   ├── 2f
│   │   │       │   │   └── a1020252851d0a844bcf240adfb8f54dd7e1f3d6dd18ea7e632eb1906e46f8bab80f13fd11bdefb590c075bffa16807826e1621c57e8bb176a53563fb689
│   │   │       │   └── ae
│   │   │       │       └── d88f25067cd667808fefb4ad141c037e9600c2c413c2ca55571a9d33bb9f45cf96a21ad3576aadc3848a2fd3adcca2b07e55fb9f2e1dc9945d8a7532b7c6
│   │   │       ├── c5
│   │   │       │   ├── 23
│   │   │       │   │   └── 32519743bdedde63440ebffface305fc949686914dfcc2075cb850df6d2d7e4880f9d2c802eb2a8dc6d157eb74cb4442d5b2280cc8b486369e7e83e7d1bc
│   │   │       │   └── b6
│   │   │       │       └── c21f9742614e53f0b704861ba1ec727cf075ee5b7aac237634cce64529f6441dca5688753f271ce4eb6f41aec69bfe63221d0b62f7030ffbce3944f7b756
│   │   │       ├── c6
│   │   │       │   └── 4a
│   │   │       │       └── 67867eda208dceb36587eb399998dfd962207f9a25345a6c58e4d905c66c7330b2808b28d74afa4d79e91cf4d17769eb04d23d57f905b347b51db9143e02
│   │   │       ├── c7
│   │   │       │   ├── 94
│   │   │       │   │   └── 4bf58da9e7e4a1dc3dfc161f62fe243964af9ee31b9745dfe919b3380f5ded828fcc1b06edb5493c7a6cad72bd58633058b3e6a99d49e00431587e98cfb9
│   │   │       │   └── 9c
│   │   │       │       └── 4fab30e96ea730f3dd6b17884ae570f6a995a64029b6f853539b45c9fb64aa09540c15d496b4035a767b9b922f6c61c05ad88cba5a2e82f1cfa0a26c605a
│   │   │       ├── c9
│   │   │       │   ├── 0f
│   │   │       │   │   └── 42a371464ab760d591f588236bbdb498921141ee5849b2f5dfe4ce0e73fcdf4490c75edbfc83d0ca321b2b502c8ec705d8e66dc9414c5792531d550ebe2d
│   │   │       │   └── b0
│   │   │       │       └── 7244d7a1418095d97556fee24a89d1a3715b1b33d5845c4d53389f9dbcc6f9de8e2f983971f95732a5a2b90f1bd0d170d34359cf7dd294eb7a72f30a3002
│   │   │       ├── ca
│   │   │       │   ├── 87
│   │   │       │   │   └── 4a20524d4b42f751277b655d217ceeb1056a3c4319403050c7c8ff0667257b3a951e95ddd1ce7934cf7d1593e4af44057aa38fdfc44c54b3b33453189c66
│   │   │       │   ├── 97
│   │   │       │   │   └── 66254fd36c16f2d83c626eebfb64b5b706cd5012633b9c78c400d7e88492ef1345d5ba38ac9f5a8f25c67183ea83b9cb2bf9b3fa7cb0f5acf4b702127b11
│   │   │       │   ├── c4
│   │   │       │   │   └── fc9a1762c562ba1f0de2d55d80791a99e567d78351b8de6aa86253369dceb7f3c16ae63717cabe6646ca9588bc7f18961da0bd1b7d70fc9e617e667fc8a3
│   │   │       │   ├── d4
│   │   │       │   │   └── 080544005e733d3410ee04a580ae76e113c7c96cf6c46ef911e81db70436e4c5e31aeee0c4390aa643707d5df971f8f640d2b3cbbe2d6ba72d998a391b9d
│   │   │       │   └── ee
│   │   │       │       └── 294450a70a4b84bf3b89e152404c8f083f74a4ba786211b0155a743137bbf8eae432a8c53c73d6901f31714e573a3eade2972c4440e3a31bf1c8e3cbd1eb
│   │   │       ├── cb
│   │   │       │   └── 86
│   │   │       │       └── 2d309376a857f6fcfc38277e510b28f343876db7c89627103f93c9e61d4b32837103654fad9dfc59b28e3c41256aa36b70d43f5ca9e1d686c000cb8d04f3
│   │   │       ├── cd
│   │   │       │   └── b0
│   │   │       │       └── 7dac22404f5adb8e25436f686a2851cd60bc60b64f0d511c59dc86700f717a36dc5b5d94029e74a2d4b931f880e885d3e5169db6db05402c885e64941212
│   │   │       ├── cf
│   │   │       │   └── 87
│   │   │       │       └── aa26f7e236714c1c822f5cfdc2639ef2d9626ce60dafdd7d339bd984264ae436fe2b0f1bbeb20f4987c1245f27aa06407b48e71ba28f5d315aa1cab00222
│   │   │       ├── d0
│   │   │       │   └── d2
│   │   │       │       └── 50e0b14552e5a413b3b17f486d04a4baccb9248c11fe84cd6e93b360ef4e51791f26fee7a576ecb50c1a343f20573ca567040e9806553de0c0465eb4810b
│   │   │       ├── d1
│   │   │       │   └── 1f
│   │   │       │       └── 629116faebc1c1ed00f14f5be4a6e501b6a739dd8c80c0cc0679414a4688d8fcd58abdd67ef5462d45f1a686a35b4644d256931b9b28578a9145bf671bfc
│   │   │       ├── d2
│   │   │       │   └── b1
│   │   │       │       └── 60fd18f643ad8d0a6eb68d9c34417edadeccfa402414d0ba5974dac95fc6f2446686553a9bad6f630282001f2310aac369799f356204a2cceb79597ab43f
│   │   │       ├── d3
│   │   │       │   └── 40
│   │   │       │       └── 2ad23a9449077c89d8b4bbd6bf341d1ea1cf3711c191c9e4bb1f529d607c1f16c85709b8afcbcf0beb01181c36cd694b424413bfb590016508a7b4c3b0d2
│   │   │       ├── d5
│   │   │       │   └── 41
│   │   │       │       └── 16457ea39ce036cb81f959ccd9e3880e3a34c49a5aafd6e356e0600910ee7e6dab82061bfcb2763ae48c39fd5392fe084a37d82bd8a8e72cac6bb2fa0c57
│   │   │       ├── d9
│   │   │       │   └── d1
│   │   │       │       └── df4e80a3fe9cdc6b60a4ef6e0e6792f4115aebdde1d136c1bf6f7c5024b036859a55092f7d6cb017fa19b52075c3127cd4e9bcb9cffe4c218efde3f6bc35
│   │   │       ├── dc
│   │   │       │   ├── 17
│   │   │       │   │   └── a5b7ab5d73c6cf800b5b72676d349962ad5a139846f97b6802f783e7930116f6323a0801d47a81bce6d8d63f95aabaa7dabe832d330886e0ff76e9928ab9
│   │   │       │   ├── d6
│   │   │       │   │   └── 84b678e2efff1539dd12f7425ef76630d3778113ad0ec39e45589e122824507d3a7094f30c0542a0834a23f485fdd982d6bb91213f5ace9f249af4b49c6c
│   │   │       │   └── e4
│   │   │       │       └── b3dd369c516cb85ad397577f03820c31a2a24ae3e78390d325e59fcc2596a850f68fe3ff657fcd715cc7b523645e4c0a6dbdead95296cf638c16c16c8be6
│   │   │       ├── df
│   │   │       │   └── b6
│   │   │       │       └── 709849a279c02c19b1b4bdb6a81743d23ca14c40b8bdadcd835424e4c0b6afdfccc3f9421aa8be1837a5e111d4d5533ded5d7cf3f22830beb9a31bd60bfd
│   │   │       ├── e0
│   │   │       │   ├── 95
│   │   │       │   │   └── faac46ad404be59a053cd30672abd453f7a1d925af3cabc869d2905df8badccde0c8e28eae03633ebafc678151e8e0886bf2e89b5f11fafbbd3384016b57
│   │   │       │   └── a5
│   │   │       │       └── adbacd54192a2fe66c7b8f4ab78998b920ad0f70a69c47dd0de48302d7e4d32f017f420d92a8080765b0e0ed11759d04da6c85f6e30d6f992c8e0ff3a427
│   │   │       ├── e1
│   │   │       │   └── 71
│   │   │       │       └── f77479e68534ec1a2b93d8fc47c7a1399a534f50e98fda4e5c47d2d7210a51a869c271f2732f74df3aba4c3cbc0a5e2d47cc03390b056afb8d95767b0a3c
│   │   │       ├── e2
│   │   │       │   └── c4
│   │   │       │       └── e4fe3527435943bfd91bc759cde394aca00a43c56f218ca2ca7079c787d9df45510df525beca552336f5420cfef8c523690fcbf9a7a349c955ad6587cf58
│   │   │       ├── e6
│   │   │       │   ├── 31
│   │   │       │   │   └── c208522e3a132e9adde8101848478efcfdbd9d9dedef1a3498f8528e2e3bd63e9b03c11b1b689f80ef79cc3007e9d8113692b75d99b6cc8fd4fc524f3f15
│   │   │       │   └── 6e
│   │   │       │       └── 2740aa7ead945bd3d2cd1f9f463380714e1f76e75ff295b2886e97bb4e91b17c9fbd92fe812e42c15c88e3b296e06e720136a948db7b519d3593d2c9d423
│   │   │       ├── e7
│   │   │       │   ├── c4
│   │   │       │   │   └── bd403a86d17c76ed8c0f4adf5f2718af8d8978df6602c1f0cc7d9fbbd5102a52b65e7fb2eb2906772c72cec024b814b341a653f9df7671f3de5278e087bc
│   │   │       │   └── c9
│   │   │       │       └── 66c4a480e013722f3f871cc53394e129834f4557e7afe9931edef262860771ce073067c5681043e600b0991bd2e6a9f56834c30aa6db48613546eae0d8ec
│   │   │       ├── ea
│   │   │       │   └── 6a
│   │   │       │       └── e08b4fd9ee6e6504f13f3cdc682341d990770d134d9cb9eea062db05dbdeedec59beac621234d04aec080e7ecc761a0cb5ba6fb176d12a4c594e1affe34d
│   │   │       ├── eb
│   │   │       │   └── fb
│   │   │       │       └── f002c3c2e7371e2c96b7c632a51ed57545731aaaf1d2a2f7e4e81436dbbe703688886d65cad4a0e67a70677a5dd18e30f11710b5405773110be17ec09295
│   │   │       ├── ec
│   │   │       │   └── 0e
│   │   │       │       └── 92f634a09bf4beecc76d34349bf8853ce7dbd0a89fd002d71841c7c50ba5bc452e08c4864395d2d1d31a82159e830b2ad02e32cfb31b5335c8798d503894
│   │   │       ├── ee
│   │   │       │   └── 49
│   │   │       │       └── 3ab8e198f724a0085b11b91a655b3be3884c2e946f3bea97e78d0c6a681240714969dcdd72aceb7b61030166cc6fa29f911b0e7421e8623ee1acfbba21fb
│   │   │       ├── ef
│   │   │       │   ├── 17
│   │   │       │   │   └── 5c6ad83bfd4fbbf94772a23db3a1db48f47fc8228a6aa3e60e21c64eab59c9c1758167da7cc62bb99655e57a40db66471aefd6bf7e8cc46105c8038b16e8
│   │   │       │   └── 20
│   │   │       │       └── 10a43d94309ccb8b50eabfba856273db68fc7b65f14ae8f888c50e0f7e418fc8dca5d94831f9afee994a2798aaa384ce039df6ccbdd5faa2d5eaf37b2841
│   │   │       ├── f0
│   │   │       │   └── e4
│   │   │       │       └── a5493e3c7cf613ac0c16fb8ab8e0f240eec72decd3f67282dbb7528a041e4f509299294bd218553aa13f8255c4410e359acc0da417ab748ddb7f9e84870c
│   │   │       ├── f3
│   │   │       │   └── 3f
│   │   │       │       └── 5f545883735913820f7b9388c4bb8f5506d3a5342991621e9eb2d29c70ead7e24ed11fd239488463723f922bd375fd8cb1aeaf5d0118c7475cb516a11090
│   │   │       ├── f5
│   │   │       │   └── 3f
│   │   │       │       └── 548d6debd145b973543b193c25969b57c21bd8984cc587331f67d1fb1505adfae65e3e364f8c13ff5b5644c99d6dc065a89b9ff9e9317894f72a8e70c772
│   │   │       ├── f6
│   │   │       │   └── bf
│   │   │       │       └── b28bdfa6814df700a723e886d3f684423bbf16ae24a3eadfdc17c0d605927d68e18f393103bdd503cf51702a29bb4175b0987aad7479d125f840c441b8e9
│   │   │       ├── f8
│   │   │       │   └── 6d
│   │   │       │       └── ad94b9e6993772c5d9a05196731ca28aab1cec43bc63c70e16720eeb8905183896317bf54f03b08ead598d1c8574e8fd07f97f2344e801d4d99bb9997ac1
│   │   │       ├── fb
│   │   │       │   └── 07
│   │   │       │       └── 5b4f51db21cf13bb2531a41b5bb56490f2bdef064219525582fbc6edb0ace29922fb8613e7bf811cccabea9bf8bf817f3504b3cad598254fc5d28abfb7e4
│   │   │       ├── fc
│   │   │       │   └── cc
│   │   │       │       └── 2b4a058cdaf75b3dad8ffb7f2072d0d69160ad6b6cdddabfd348d4defb96799baa61adc2ad9c254944e9c3286516534e61c34ffd2bc242537aa40b056d5a
│   │   │       ├── fe
│   │   │       │   ├── 32
│   │   │       │   │   └── 99a0ca70d05f06470978fde2d138f03771f717b4b0293f44332e6513fc7b8f0995b207b218f59acc78ac363bf9c522a3d00773d533d6989b4177d760170d
│   │   │       │   ├── 37
│   │   │       │   │   └── c4c0d0dd41504236f8e41a2b7887aa4c3b3abc6c7928a6ae39f1d3edda5323c7e781414a2164d1bd03b0ed3bf3b9ba449bc6e68d1973231e2720c32eab41
│   │   │       │   └── b1
│   │   │       │       └── 5e0a934941b852663195c0ef51155df13ea6e71114bc326210cc2b43ff397a82926e57f6cc2ee37dda81b717b77ca031071d1aee8d25cd52bf1fa639ed2b
│   │   │       └── ff
│   │   │           └── 2e
│   │   │               └── ed24a00b559d653f3799641f636279adacbeddd0ddb3928ae28b96bbafb7611e4588b8b4f36696733092cad5d9984605ff34273889aad33b717b052d9cfc
│   │   └── index-v5
│   │       ├── 00
│   │       │   ├── b0
│   │       │   │   └── a5285b1dd41927c25a437d6e06e180ad401616f52c278cd64474969fb3e1
│   │       │   └── df
│   │       │       └── 216782e75230fb7e8d7057093e134da919f2d56aa9db5f6f7258b3b537d3
│   │       ├── 01
│   │       │   ├── 3c
│   │       │   │   └── 9305c09d5789a41fefc7aa0cd3a8a3813243d247f506487c2f66e9ff5971
│   │       │   ├── 85
│   │       │   │   └── ac002ce9e68821cd39a876c92f3e1be8caeddcf6419d6bc324f70d32b4e9
│   │       │   └── a9
│   │       │       └── b0d0d67beda769e84926f207549943c0bc17abbf66bc20099aaa1bb51736
│   │       ├── 02
│   │       │   └── 3d
│   │       │       └── 7ff49953c213d0e9070efaadaaf3c5ec6740893a6f3704b4f14e805bcfa2
│   │       ├── 03
│   │       │   └── 48
│   │       │       └── 75977735688016c583178c5e6055c5d811bf783ee09da9fe4b1137891c98
│   │       ├── 04
│   │       │   └── bb
│   │       │       └── e70e70e0cbc9b00841927b0c23c58d97f21063208f3e872c3e04db58c13b
│   │       ├── 06
│   │       │   ├── 5a
│   │       │   │   └── 98f8c4232b39b6ac68023a0bc186c128dffdec812a144648c26dac71f91a
│   │       │   └── 5e
│   │       │       └── 2009163f0b101c063269056e566eec4bbc4ec9c8e69f769867337a8ed57b
│   │       ├── 07
│   │       │   └── 2f
│   │       │       └── c26409f0f3f5f0a9723c9865acfaf682ce8a5f593e491d912d58f53f9ae7
│   │       ├── 08
│   │       │   └── b9
│   │       │       └── 8c0c17709bc08fb63e5f0c39c65b93c80c9663f548e949eb55cb434a357a
│   │       ├── 09
│   │       │   └── 8b
│   │       │       └── 0ac0d0ead7b0eee61d826bc69cca1c7d40e187e8282c876253d740b9e9f0
│   │       ├── 0a
│   │       │   ├── 08
│   │       │   │   └── 7555feef8088d2832129af7ce022f6637283712a9ecd731e4a9ef4932c14
│   │       │   ├── 2c
│   │       │   │   └── 10ae97cc0ddca9e23bc5e1c1a10c38f60b99fa734eb5749276bb78987586
│   │       │   └── a2
│   │       │       └── 6a45098c63203072b3c3abfd9346c85ac9bc463e9506bc2bdf17478905a3
│   │       ├── 0d
│   │       │   └── b3
│   │       │       └── 097d1aa2272aa0a4559d84bc3e8aa1b5438104f60d0a303dd8cf4a4919e2
│   │       ├── 0f
│   │       │   └── f7
│   │       │       └── ef3ad5111001a610f814d854d1ce9853e9d6d710a41430d086d07a0986cb
│   │       ├── 10
│   │       │   └── 17
│   │       │       └── fba3d249f38fffb6e9b99fc904d81622ca3edbd864d546795aece3329bb4
│   │       ├── 11
│   │       │   ├── 42
│   │       │   │   └── 63f22fbcf0c21b1e268e7098ba936a48f7ddd6c06761a6c5b4a5fe434ebf
│   │       │   └── d4
│   │       │       └── 2f9f9df8a204a306e5baed8f658a43e437792315d561c5eb0315c7a97d50
│   │       ├── 16
│   │       │   └── cb
│   │       │       └── 5a69d7ce799d5fc7d26a2056473c94a7bb373b72395bb56a9b740dffd152
│   │       ├── 1c
│   │       │   └── 65
│   │       │       └── 74c26755259935f238329c24af2f3305f57b1107f720cc0082e513d83ebb
│   │       ├── 1d
│   │       │   └── 59
│   │       │       └── c56cdb49f40694dc6b984bd43ff53d96f6ea1dbb06ee467a00e4a697e664
│   │       ├── 1f
│   │       │   └── 85
│   │       │       └── 3e0b21cc5deb10a0dc51ed6dace9f5ae0f08f66b5c064b262517165cfa2f
│   │       ├── 27
│   │       │   └── ef
│   │       │       └── 452a94b385f28d524a6fd9178863fe32cc70bc3d94033a3dda9c91b2e128
│   │       ├── 2b
│   │       │   ├── 0f
│   │       │   │   └── b8787add1f0675f7298f5d4e498f1c0091c7438fd73df02d649bbcc9c1ce
│   │       │   └── 2e
│   │       │       └── aa61c0bc2734278e23d60eeeab1fd752744ea5536b3ba08b35b3a667d229
│   │       ├── 2d
│   │       │   ├── 80
│   │       │   │   └── b5e9ca2e40744e7fa089861626d2a29c62363c01729964f4cf0c3e8ee632
│   │       │   └── f4
│   │       │       └── 9196d70f82f15d107105ed433fd462721c91b1594984d87b54d57730cb20
│   │       ├── 2e
│   │       │   └── 5e
│   │       │       └── 52bb770674006416c55571d38721a1575036bc260e9debd40db850bc0b20
│   │       ├── 2f
│   │       │   └── 2c
│   │       │       └── 2a12420aab34889ed2c64b80f9b722e2e90e139a130f13e34a1c7a0e1e29
│   │       ├── 31
│   │       │   ├── 7a
│   │       │   │   └── 9c96d52885c2170f2365ba2c1bb1035008b9daa92b20f4c5e52f16b85113
│   │       │   └── ca
│   │       │       └── a8c3ab0670811a3887ede187dcd3856d14272349a18f6844f7c8007cc05e
│   │       ├── 33
│   │       │   ├── 19
│   │       │   │   └── a311e591a2b51610ed276fe9968065a74c2f19efd7f917616967040ce127
│   │       │   └── f9
│   │       │       └── 071d7d949ade71febc395082397753f9a225031462df3ac9c8ff4104bbad
│   │       ├── 34
│   │       │   ├── 05
│   │       │   │   └── 127f37b0ff3cd9c76b1497b5838d265a8a2b7ef495b7f9841f5d4665ba67
│   │       │   └── 9e
│   │       │       └── 35f5913aa7a542b3357025e12a2a126c13ab15a9bfbb40721b56f89ecb48
│   │       ├── 35
│   │       │   ├── 45
│   │       │   │   └── acc6960018d880bf033f23b050a6c442be8b02eb6cd96e01c7ef7b61b640
│   │       │   └── fd
│   │       │       └── 45154839db33174def1653b1ca377b1d2a65a4c4e56564fe11d85b67a96e
│   │       ├── 38
│   │       │   ├── 04
│   │       │   │   └── a49ce7d19c6d98ec2d5f259e71f17a5727961200c4cf22a88e33ff7bbe5c
│   │       │   └── 36
│   │       │       └── 08fcd3ee98bd9b00bb28cc7d417209f374feb4bb23f9093fdab5ff57857b
│   │       ├── 3a
│   │       │   ├── 10
│   │       │   │   └── 33ebb16ca229c4cbdad65ac0947fbeb3765befe98674faa960578851637f
│   │       │   ├── 21
│   │       │   │   └── 946df9356ae372c19a7700e322d8d0276a406143c7375ce22124fad7dfcd
│   │       │   └── 46
│   │       │       └── 4a802da9ee2134f8f76df15df8ddd2d0f2b05e7de9b1d7e01669c4278824
│   │       ├── 3c
│   │       │   └── f6
│   │       │       └── 26a7f7dccb969c764b8bdecb3667023c64bc1159e674fbeeca633c54964c
│   │       ├── 3d
│   │       │   └── 2f
│   │       │       └── f8441bbef005e18fb70c8e8654894abf17ac44b2140cfd60f172246d894f
│   │       ├── 3e
│   │       │   └── 49
│   │       │       └── fc9a5a5b33508297834c9a4acf4d4de5b46348df8093fa7d0a6f82aba3d5
│   │       ├── 3f
│   │       │   ├── 3a
│   │       │   │   └── 2f0714110028b8f228c7c95100ea873c5a00ea03a97ed1d1f555cd404e1f
│   │       │   └── 55
│   │       │       └── a551d4620944369d858a04648adf3994a33934840d738144392e51784ac1
│   │       ├── 40
│   │       │   ├── 17
│   │       │   │   └── 8828f1bc3c004a75e5f93ab594b7418ca18ac8660a28916cc6e51643994d
│   │       │   └── 1e
│   │       │       └── 89f0b89d2ca92cd54ff481086fdd599c67170ea69eb9b22d37e34638d25e
│   │       ├── 42
│   │       │   └── 8b
│   │       │       └── c02d827ace565a38508b184eec46432a592ba2550cdb1930cd90b866d766
│   │       ├── 43
│   │       │   ├── 5f
│   │       │   │   └── 110819c5903563df1824b2214749ef7781289e80d4a600347e3901aac1c4
│   │       │   └── b0
│   │       │       └── 1da35d6e384e0146648258aa5ea61333fd10d6d00300adf4aac974f6d1e2
│   │       ├── 44
│   │       │   └── 10
│   │       │       └── 7cf4f1b3974687000c3e81a7b9d017adb6b8416e32f27309b764b12b8be5
│   │       ├── 45
│   │       │   └── 2e
│   │       │       └── 93eac58d3d5aa3f5721ac09fa7c3b814ccb98bc5000550243f4497f78a67
│   │       ├── 46
│   │       │   └── 98
│   │       │       └── 3144eac06844196da14c933cccc766b529c8917a7efc1c6c79bba5651a6e
│   │       ├── 47
│   │       │   └── 12
│   │       │       └── 2b0123c780f4536fbd0b803d54bb573a256230046b95fd342da9df92dc8d
│   │       ├── 48
│   │       │   ├── 7f
│   │       │   │   └── 4f4a841cc66ee33998620da1f4f341e422d9ebb37bb00178f3707927db1b
│   │       │   ├── ae
│   │       │   │   ├── 1499701156e55c38f37c319e42d8ee632f62ee16e676fb96bf268dc03e39
│   │       │   │   └── f6dae96ac72c3518cd54e6a1cf5ac3bc59c80cfdc62d65a101a0cb67304a
│   │       │   └── dd
│   │       │       └── 8c8b3dd9e0048fc9974197e48fdfa5ceb084560780473574323b9bfdebd4
│   │       ├── 4e
│   │       │   ├── 45
│   │       │   │   └── 17bdb2bc7c0f1b72ba954a40424fb4a9ef5929f88e922704c80b3d264ccc
│   │       │   └── be
│   │       │       └── da18b216664b1e58df4ffd6782d77f3c28a3f61355544535ff7704cc1b2d
│   │       ├── 50
│   │       │   ├── 85
│   │       │   │   └── a29f2ec233233dedaf6d110ada83bf22af3e52848fda04a91b64f889f53a
│   │       │   └── bb
│   │       │       └── 1a5b513e51544ef3ffcb8dade26b2fd155f2f50104e8ac073030a9d119ee
│   │       ├── 51
│   │       │   └── 89
│   │       │       └── 3d02d342de41905761accac02260bce79c49652be9e6066da254d77ba04d
│   │       ├── 52
│   │       │   ├── 20
│   │       │   │   └── 702ec5d12a1e111e2534ce89eb0f33f79fe3ffee0e80a428299cdaa0d007
│   │       │   ├── a2
│   │       │   │   └── ba77c6a126c66982a48c1fb49ac1ca7f841619a89a1f0fc5de3512a4b7f0
│   │       │   └── bd
│   │       │       └── 1b45d5168ed8296f6d5d5167fe2f8076e2cd5e5d67d2766935784d3e798d
│   │       ├── 53
│   │       │   └── e1
│   │       │       └── 0dc9829fd62522b01d70c6eff1025e862877619ba63ab3f1445df0451b8c
│   │       ├── 56
│   │       │   ├── 4b
│   │       │   │   └── 859813b09e1e5020654bf65fb2f19970c51f08f788d3c4f2ea5137051e1e
│   │       │   ├── 71
│   │       │   │   └── fa4fe23b6bc134c60d26da3033c87003fb50204af907f8ec32c9a7c9e48c
│   │       │   └── 9b
│   │       │       └── 5bc545281ee1f49775ff8b0f2921a08251d503d559ff3f999be9886f1712
│   │       ├── 57
│   │       │   └── b7
│   │       │       └── 2772f8c4daa4b31074e03545f8e473b547e88ef3141501fe2a54e1abdfc4
│   │       ├── 58
│   │       │   ├── 92
│   │       │   │   └── 5799a11997482f78a71307f2134a84b508b74d7faa3535d40d26c6261638
│   │       │   └── f0
│   │       │       └── 4fe556f104b09be642895a82afa463fe560d9a0dc8f507efeef825a6905e
│   │       ├── 5b
│   │       │   └── 42
│   │       │       └── b4487d788874a06f49235360174f1ba8832e8f6a83cb8533883b8fa09f4b
│   │       ├── 5d
│   │       │   ├── 58
│   │       │   │   └── 39fdc57612a04067ef7ec1c141646752e6563b84430cd56ba1df2434de91
│   │       │   └── ad
│   │       │       └── 1cb61ae613816d5f049cd87dd24009e364126f73726b1f8eab2350fec505
│   │       ├── 60
│   │       │   └── df
│   │       │       └── 89f1345cb5849d888a2cce2e6d6ddc0014eb3d6722956a06241f6e7f3d58
│   │       ├── 63
│   │       │   └── d3
│   │       │       └── bb861348e4b5fc53b62454cd498b01af8a51c93c0ebb3f9ca712ca253566
│   │       ├── 69
│   │       │   ├── 33
│   │       │   │   └── b968e19e42cda755b43c4bd1e354056b2be0e8ff44896e82e4bc9fdb6322
│   │       │   ├── 7f
│   │       │   │   └── ee4d73554ca4b3320cb01b422b9a9d45f388513d8fd2ccf4df9187578ce1
│   │       │   └── 97
│   │       │       └── dc07bc0d29ed2880b0e39905e8bc8a24a0344155c90a7ca65c8093d51295
│   │       ├── 6a
│   │       │   ├── 86
│   │       │   │   └── 14653864a77b7c8644710834018401ea9fd5653744bbbea2201a6af48a9f
│   │       │   └── a7
│   │       │       └── 23f89bea37ae703ce622e7188ccb889113f1d355f754c11544a1caec4cc6
│   │       ├── 6d
│   │       │   ├── 40
│   │       │   │   └── 0b02ee474cc305b6d0da00248cfa61780731440b4f237c6251314258b9bd
│   │       │   ├── 61
│   │       │   │   └── c9e7e8446341cea439547eb023fbf47c954ba932e6944a3fd50413c1e861
│   │       │   └── 65
│   │       │       └── 05c74d488e52e860b9de3668e482a62f5796264d2bf9f2700cf9423add5e
│   │       ├── 6e
│   │       │   └── 9e
│   │       │       └── 2004cc0984629401a6a3d3fa16900d49ac70112df7a8c515ec028b34c59d
│   │       ├── 6f
│   │       │   └── 9f
│   │       │       └── 4244544732d3e784c8fd360e0ea256a943488c53a834da3d0ddf3e83af9b
│   │       ├── 73
│   │       │   ├── c1
│   │       │   │   └── d8bbb109a8fa2903d912518bf54776b7794c8f6f0a759234283c3c2eefab
│   │       │   └── e2
│   │       │       └── 434e6cce71a37629e1945f6d35d5e52c1e34aa88ef24d1915846c72775f1
│   │       ├── 77
│   │       │   ├── 59
│   │       │   │   └── 986079464467eb2c4f1c178bf1c9fa9179b3c8384bd1eff68534419250ea
│   │       │   └── d8
│   │       │       └── 4c73393b4c86b064a434ecae7c4c202784cc49493fdc99469a7dc797494b
│   │       ├── 79
│   │       │   └── 0e
│   │       │       └── e6e294a39cc9407b6358b7284df63feda5d4f96e51519630d06219175167
│   │       ├── 7a
│   │       │   ├── 05
│   │       │   │   └── 8c39e8b9b5af7db5ea9983334f3ee2532aae9b7973de1dbb581781947ed3
│   │       │   ├── 1d
│   │       │   │   └── aa5b15d3f974ebd32c44778518e0984265598aa1e2dddc4ded4feb2a11b1
│   │       │   └── 23
│   │       │       └── df8deeb6de869825106ce68786ba9e16686f20a8b4f1c626c9635a5bc8da
│   │       ├── 7b
│   │       │   └── 1d
│   │       │       └── 314b6515b77b62a66c8a2ac140ac4a6926135c5866837fddded37acb1acf
│   │       ├── 7c
│   │       │   ├── 20
│   │       │   │   └── cba9852dc5e0811d9e6e24e74108bf7727a0c2730516ec8f41a08f13116b
│   │       │   └── 9a
│   │       │       └── 13a1f5cfe2738ebf2558b3fc8173e47bffd478a46c35ee5e0fc6e72e511d
│   │       ├── 7d
│   │       │   └── e8
│   │       │       └── 5446c5cdae0493e4ad3b10347b77c8df4b17b5fbe14834f5c6b06faa9f95
│   │       ├── 7f
│   │       │   ├── d5
│   │       │   │   └── 36068d8df17b31ccdbeedbb62ae94e354f6d768324e0dd6578917b8ecc16
│   │       │   └── f6
│   │       │       └── 5e3925b158405271b2f44be4d1ecbb5c60b3b7da87819ce03956b759b051
│   │       ├── 83
│   │       │   └── ef
│   │       │       └── aff47278d7ef72e864717a2bb5e09eca947c1b761d2a3f590af1b5f1b379
│   │       ├── 85
│   │       │   ├── 20
│   │       │   │   └── 71a0d0584d5ae3631b6b48b18785908616327f10115d683585b05072ca1b
│   │       │   ├── d3
│   │       │   │   └── 1b45f9b1e17b38c211d236888c737ca95cd5b9ca0e42c51cff12aece643f
│   │       │   └── d8
│   │       │       └── 7da2d1eaa517a5e80f7a1a8d7dee184babfd49523097c7b2ea907d755944
│   │       ├── 86
│   │       │   └── df
│   │       │       └── f30ac40daf6afa3c806cd525ffbf33eaad06c5f38e08f7ce9428a303241e
│   │       ├── 87
│   │       │   └── eb
│   │       │       └── ab402da37b8ea447b0cac7c54cf3452aae056ac8c63514cb6730629409a8
│   │       ├── 89
│   │       │   ├── 0b
│   │       │   │   └── e2ba88ed525834b932f3ddb5624a540e279742a3c6851ec4ee466890a5ed
│   │       │   ├── 0c
│   │       │   │   └── 98d70e9e25b9a23c255f11b8acd5d9ebed836d0004871577846f3bc3f03f
│   │       │   ├── 39
│   │       │   │   └── d7518a088b510f892a8355a21e2971328f68a8ef26d1962bbcfc70c84725
│   │       │   └── 58
│   │       │       └── 62a9a2b49fd26f8d788adbe5cc377e776463c3a01839945896d96fa48d4f
│   │       ├── 8a
│   │       │   ├── e9
│   │       │   │   └── f78a927b119d27ece8b731dfde1470b48159f26c89ce35d5fe0fc80122ed
│   │       │   └── ea
│   │       │       └── a9d2d6ff75cba71d63171f51aa258a77d99513740280af3884c1dea1f7cd
│   │       ├── 8b
│   │       │   ├── 4c
│   │       │   │   └── 6c0c483d470762dc61c704d8d07e1edd6421400f274c32ea22f543bfdb16
│   │       │   ├── d9
│   │       │   │   └── 617f84454e0342f885f6cbdd2661990c9060f183e29553e39e0506dbd847
│   │       │   └── ee
│   │       │       └── c2ea22c4bf9c5ddcd0333850e543442de3364478847c7ebc382b1ff3a70d
│   │       ├── 8c
│   │       │   └── 9a
│   │       │       └── e014072a08e7ba0b90a6897c5737bc438be37650b0470bfd7c0b83e18e23
│   │       ├── 8e
│   │       │   ├── 58
│   │       │   │   └── 1ce1355f39c75fa063f8dc1c958c11d57446438253b206afc18efb9f28c9
│   │       │   └── ff
│   │       │       └── fc9a834a298aa364d38f286bfc395217fe0559c9b322231ff5f6265ba504
│   │       ├── 91
│   │       │   └── 08
│   │       │       └── 56fc6b8aa67287e6e60a90a5e8bd6500ef9e97a317a38b324cca616a7d25
│   │       ├── 93
│   │       │   └── 31
│   │       │       └── 9f96e29572a9b3bd880f19dde2e443b99ec81a4258f3e56ce1c4fff64852
│   │       ├── 94
│   │       │   ├── 07
│   │       │   │   └── a7c22ba183764c0c27f706d74812444c27c14a97fc43669b7dd7c32a717f
│   │       │   └── 49
│   │       │       └── 0c8e6bfaa289aa93424dc1f6f28b3decc9f59cb08be977c3040f7d244ac3
│   │       ├── 96
│   │       │   ├── 7c
│   │       │   │   └── 454eb1ff3ec3546d35165170f771ff1c65f055203c5ab9f907e6af7067a8
│   │       │   └── c5
│   │       │       └── cfd4f290453cd7201716a3217433fe76e994d06ad3a598a6ab5772d5280f
│   │       ├── 98
│   │       │   └── fe
│   │       │       └── c68a85433f7c743aa9b9427fb21be6fd8c25f9e7893bd5cf65537496008d
│   │       ├── 9a
│   │       │   ├── 76
│   │       │   │   └── 06192603daebdeebec6ad6e070357bb297b864354a3998c359fa50ad570b
│   │       │   └── bc
│   │       │       └── 143ae50ba22ddec235347ed6a62762b673eddb52cb1939aea401679de36b
│   │       ├── 9d
│   │       │   └── 0d
│   │       │       └── cb301e666cb1b3f23405c9a023a97e35e0b646458b0dc07d4e4c45f072d2
│   │       ├── 9e
│   │       │   └── 24
│   │       │       └── 74490f75d8dec7ba5051c2fb1e3119fa15abb79366ea7664e5fbb2977153
│   │       ├── 9f
│   │       │   └── 43
│   │       │       └── 3636172cbc03abf2262c921f9f71572e6b049aa3db8c65d166bcfe5aca5f
│   │       ├── a1
│   │       │   └── 78
│   │       │       └── ee48142ac207e21a1a2eac9ca7111587ce699eebdc565abb3dfe976abf96
│   │       ├── a2
│   │       │   ├── 60
│   │       │   │   └── ea4e9555df962e8a55d27858ec6e935db7b0356b46d10718029046780c27
│   │       │   ├── 68
│   │       │   │   └── b7b4c1f69b4b4ff6c19e7de1b75dfa3eefbab3d36b6ce4ef15d6f64afb9c
│   │       │   └── b5
│   │       │       └── f2c35332a5ab256ee9271034e3b3b301ece6931e6e92531ca0bd8c08fe9a
│   │       ├── a3
│   │       │   └── 50
│   │       │       └── b739b1f6f936987c26973cec93f36482ed240ab90158c0d04899bab0de13
│   │       ├── a4
│   │       │   └── b7
│   │       │       └── a7cebac941d6c47ac2f6fde93c17edf93f4ae4aa6b051499d8f2ffeab614
│   │       ├── a5
│   │       │   ├── 87
│   │       │   │   └── bc838260e09216f01f45e48f0f96cb7691d978001a792540928b1153baa5
│   │       │   └── b8
│   │       │       └── 454c882933ab15d532e2493b0bd7ce7019f1caca2abb46f076ca0855330b
│   │       ├── a6
│   │       │   └── 54
│   │       │       └── c1733144b73a0422b1daf6390b4562d52ec887d209b643d8b0b789a2e4b1
│   │       ├── a7
│   │       │   └── 04
│   │       │       └── d0646f5e87aed79d9f0ad28e40eff59b4872fd92336c436b29f7280a9d3a
│   │       ├── a9
│   │       │   ├── 92
│   │       │   │   └── c230215c94371d341f1b38927e5f481994a870132101fd50efb0449f27c2
│   │       │   └── f7
│   │       │       └── 4c2a9fe6575921726a5579be73ddb2a3e8a7abbbb66a28c50ca8deaeccc5
│   │       ├── aa
│   │       │   └── cb
│   │       │       └── eb7e78deaaf4e5eba36039b514bbe6541a5e440f56bda5447a6a0c81f2aa
│   │       ├── ab
│   │       │   └── f0
│   │       │       └── 041961d523d853b40e4e55be33fe676651a97b630d01af1b06b28abc5697
│   │       ├── ac
│   │       │   ├── 5d
│   │       │   │   └── bac3965880e0e18bc7d1e21519c9073430f53c69821d54a4aeb5c313357f
│   │       │   └── 86
│   │       │       └── c0732592365d753d382502d91754a3c88f8b20e22cc25a0327beb9429687
│   │       ├── ad
│   │       │   ├── 5c
│   │       │   │   └── 217f4a9502eed2896935b005b187e4713d93ba3dc76eff284b00a1a8b92a
│   │       │   └── 7c
│   │       │       └── cc598261aa7c1f089fdcd0478664f8f5c80f8f02f241f08e3be264a9e616
│   │       ├── ae
│   │       │   └── 78
│   │       │       └── cedd14d309b153583ec33b511626642a5b2cecfae082a664e1e6a368bc97
│   │       ├── af
│   │       │   └── 8a
│   │       │       └── d90cfcd33a9895fbbb880406407aee65cd5b37556b94baafb95ba5cb93dd
│   │       ├── b0
│   │       │   └── 4a
│   │       │       └── c18a99a2710b49b5a3a1121226be4940f623f8ba056f8108a634ed347da9
│   │       ├── b1
│   │       │   ├── 4a
│   │       │   │   └── 6796e751962cdc0f1d356f7c34ae7e66a41858d769156329b5bd4379d591
│   │       │   └── 8f
│   │       │       └── 5767f914aa664f32503df614481bac973784e2bcd2b8af02e84faabe168d
│   │       ├── b2
│   │       │   └── 53
│   │       │       └── a51760f3239bd143eb2f11ec8f083702e47b0ca67ac04a9a45e7336f6cde
│   │       ├── b3
│   │       │   └── 63
│   │       │       └── f693e1cbbd8c651339dc83ea677e236d61935b81de6396cb4847fd5b08e4
│   │       ├── b4
│   │       │   └── d4
│   │       │       └── aa802aaebfa5cce97b6f2e688062d965ef9940c20866c45eb34a72b47d05
│   │       ├── b7
│   │       │   ├── 38
│   │       │   │   └── 992d3e6c01fc9098d137f7dbccfcaa5f5124ba9c487e582e6e0d83f99d30
│   │       │   └── fe
│   │       │       └── e66fb9a38a1ef7da481d041bc0dd117c0c2bddfa61bcf516da1e1486c290
│   │       ├── bd
│   │       │   └── e8
│   │       │       └── 7741857e809594830141a639d3d54110945a88bb85691de2f9dc97402c84
│   │       ├── be
│   │       │   ├── a3
│   │       │   │   └── c0779c8e0be92c748c91a7dad4e6f0fe57ba0158b6bb1bcfddd8fc56c934
│   │       │   └── f0
│   │       │       └── 1030b67d1c2d501a0e14ff9aea82addbf8b2e760ef58a5be510d7b4bad3c
│   │       ├── bf
│   │       │   ├── 03
│   │       │   │   └── d5dd5fa44593b3e2d24e270c89a4ebe5809a69837946acbe11b5f9ab29d0
│   │       │   └── 7c
│   │       │       └── 375aec77f76404d91225e72006a0105b2a6ec04bb02cfa365ebcd4a0232b
│   │       ├── c0
│   │       │   └── 83
│   │       │       └── 1295af917239a2fbe94404f49d472949b2a2519701a35e8dc9841f02ae34
│   │       ├── c1
│   │       │   ├── 3e
│   │       │   │   └── 4c4d082623156529b4fa73601a4ac92e33a6b20f963f1096cee31b6d9010
│   │       │   └── 8c
│   │       │       └── e4e9afe177a9d6771d71fe96d51887f262a8fede9d9d3e06ca7ddcf20990
│   │       ├── c2
│   │       │   └── d9
│   │       │       └── 7fb959fc2a833b8e68b8306a1b7d4cd5f15c8b4e0c9d6b46a6765796482e
│   │       ├── c3
│   │       │   └── c6
│   │       │       └── be9e8d92e3e1f8898fedbe33cae4e67f0352de1b0d48fee9cb29ecc1d6ab
│   │       ├── c4
│   │       │   ├── 11
│   │       │   │   └── bf2dd5bf2d9b9006f82aeedaffc7f69ad64358a9a08afe81cbcdca1766f2
│   │       │   ├── 68
│   │       │   │   └── b71baf5025326649162df1bd325b5637dd1e72f59a32177b49318d5efeac
│   │       │   ├── ac
│   │       │   │   └── 4511be3eecea50ee9cadc09a612f9be8598d7b29d5c8b1253c75fa283cc5
│   │       │   └── ca
│   │       │       └── df46b5b6c6148487b1afb20084da52f2838a08143f9b0ebd217d2a229e9a
│   │       ├── ca
│   │       │   ├── 98
│   │       │   │   └── 29ae16b7b413d7a609c6beba2ab22ac51a8f88aa3c3a36759292907ce3ac
│   │       │   └── f8
│   │       │       └── 5fdf8973f1896e77c07a4919f6166c6a04ef8354c5efb0156670a06d24e3
│   │       ├── cb
│   │       │   └── c7
│   │       │       └── 8dc870ee1a760dfda5ed1c13aec5056dae100cec5c9af892474d802a65b0
│   │       ├── cc
│   │       │   ├── 25
│   │       │   │   └── 0a0ad2d0308b6807a70e488194992de068d68b749910eee4847c38629984
│   │       │   ├── 60
│   │       │   │   └── ca5eb4c028e64ab99a3a71e5e6cff685d49a0052a23f473310db7d984f23
│   │       │   └── fb
│   │       │       └── 96cd6e2c34dfd1fc2a68d5b85c353ec81fec75a8e0856070c12777141d13
│   │       ├── d0
│   │       │   ├── 12
│   │       │   │   └── 0e893a332c0e07c4e6ad382322604cf61f86ba7822a3e02b24d4105846cb
│   │       │   ├── 39
│   │       │   │   └── f3ea46b7a48d1b108681523c9e802f48f2779894068bc9b984863ca18939
│   │       │   ├── 57
│   │       │   │   └── 3aa5d94761ad382e1a1acc61203736494009e20422bce1dd1433666dd012
│   │       │   └── f3
│   │       │       └── 570007f66e0a594c21201eb3e8f15d7a4d92bcb97b59246e5b7194b3b290
│   │       ├── d1
│   │       │   ├── 34
│   │       │   │   └── dd11aca2ddd3aeb854849cd81cab78174fc5ea935c0fd552de94684f90a8
│   │       │   ├── 3b
│   │       │   │   └── 5d145862c809774efedb998cae0b11c4062b94265112f8db93a55edb929e
│   │       │   └── 91
│   │       │       └── 1ea8e1c5735aa7333775abaea09cba50e98296556053fba7d4dd227c6732
│   │       ├── d2
│   │       │   ├── 3c
│   │       │   │   └── 9b2e81a9ef349bd31c3c94f1c2d4040643ee96b8128c972db597415d555c
│   │       │   └── 53
│   │       │       └── 0423c306fc66318eb336eeb4033781a7b495f0aa3ba92eec00f34069f13e
│   │       ├── d4
│   │       │   ├── 42
│   │       │   │   └── dcecd9ea33544599eb1e71ac0fd23e843f4caf0dd35ae634e5a1e2bca450
│   │       │   ├── 8f
│   │       │   │   └── 715a86aa779da41ab634b8f3191069d4b2966a3c5b47cb739ab6a9b93aec
│   │       │   └── a2
│   │       │       └── 61ef4c73c2a4a1a021b2b9d9d54cd0acbea9f5e44cebff230278f27bd92a
│   │       ├── d5
│   │       │   └── f4
│   │       │       └── 0913a74f5e223a4fe6108493dd3b03c2d47259df459926160659513c9ad3
│   │       ├── d6
│   │       │   ├── 3c
│   │       │   │   └── 3fd6a899c59ae533d9a5bb44570ada1eddb5802483d3e7812df2c207a7e1
│   │       │   ├── 47
│   │       │   │   └── 2d4e4b363564f0b3d6e59012bb07573fb947a866841f5259a96439aa3964
│   │       │   └── 4d
│   │       │       └── 95351bd7b1c4630fa6590049d83b56ced950f5f2fd281f27e28527249cee
│   │       ├── d7
│   │       │   └── 98
│   │       │       └── 895bffa858148e74eb0bae5ede536d11e4eb6ba643223069874bea4f6498
│   │       ├── d8
│   │       │   ├── 62
│   │       │   │   └── fa9d7982c1af34cc1664c1504cdcf5728bee5cbfba341507a5c033098737
│   │       │   └── f2
│   │       │       └── dfd78c09b8752f2fd7100ea4a9f64cec29a053d57d72983420eb853b3e6a
│   │       ├── dc
│   │       │   ├── 47
│   │       │   │   └── 9e3985de44e70129e4e28c25bdc69a204acabcbdd5962cf5109db4ca7aa5
│   │       │   └── 8a
│   │       │       └── 4dc2a1bdf5b195e99648a945ce742de5f6d0b1aac410a6fe3e7155933cc7
│   │       ├── e1
│   │       │   └── 53
│   │       │       └── 4da55a553f57b5ef4eb84d567d8d4fbd67732c8c090da290c199e0ac2ed4
│   │       ├── e3
│   │       │   └── c5
│   │       │       └── ad2fd86fe0c1b9f233d92c25e56b1a582b8425b52db4767f8d72410c021f
│   │       ├── e4
│   │       │   └── f2
│   │       │       └── 0b57f65571788559ed93ba6d26cacaac21da8e4adfe374787669e431e875
│   │       ├── e6
│   │       │   ├── 37
│   │       │   │   └── c9e69f5074e9a22c766ffcc622280d4e580d2ee0238f670f28199487dd44
│   │       │   └── f1
│   │       │       └── aa87087a727f6fb26b60b78c06c2b830f509c809c7b1752ab1bcab0a15af
│   │       ├── e7
│   │       │   ├── 40
│   │       │   │   └── 70186a6ceaad19b6b11ac1bccf00fa5e038b8151d455127f9868f0051d57
│   │       │   ├── 6f
│   │       │   │   └── 6df2d13a4e315af18cce3e1c8a09c911262fc54f57e6fc47d361ddcf408d
│   │       │   ├── 9e
│   │       │   │   └── 9df988403d9266b9610bf520678520e200090b726c2ea164a0fe727500ba
│   │       │   ├── a3
│   │       │   │   └── 60cfc8947cb925b4deffc13cf15258a667e1653daa12cf0001b2e0083bfb
│   │       │   └── e9
│   │       │       └── d2369beb18730dc4f30e1c9dcdf5bf16ac9bd28dec641b81ff8e8616e7fc
│   │       ├── e9
│   │       │   ├── 6e
│   │       │   │   └── ba29811d787f0fd92ce7f4bc3a6827dc6d66c47153d50683c80d6e7a9a6f
│   │       │   ├── 9a
│   │       │   │   └── b309e8b758264ef32fd578a2928ad1ac4a3241e8c570a5c275e121dd7ee1
│   │       │   ├── bf
│   │       │   │   └── 0bfc4abc982e4aecac42d77dbded146ef0ce46649865b55d62144af5a96d
│   │       │   ├── cb
│   │       │   │   └── b6d58aac267a95803951157a42d29db6c17ef57c66eb59c48684c280e4e8
│   │       │   └── df
│   │       │       └── 500f6d65c0cf35c0f7c0635f953b37393168aa27cb55c7b0ce3399c0d7f2
│   │       ├── ec
│   │       │   ├── 87
│   │       │   │   └── d81e1e7b2d776e609dbfaa2175a5825c0a63a9bcc70fdb5694b81e7f4fc3
│   │       │   └── 8e
│   │       │       └── 97eeecddd26637708519813d42ee2a5ec256bd4831ffa02269e8993e19b7
│   │       ├── ed
│   │       │   └── 40
│   │       │       └── e67da4ad085eef0344d8e253e4455423e0efc042d3898be0a399d1a76b79
│   │       ├── ee
│   │       │   ├── 3d
│   │       │   │   └── 1ab77d088759d13cd44eab2a2f7764233b7908340d97282d9765e014f29c
│   │       │   ├── 60
│   │       │   │   └── 850558038dbacbcba5202b181a0a0c4f947405cf3682df3e1c20dec79137
│   │       │   └── 7a
│   │       │       └── ee0e1b8bea3f05c1b42f1fe4a17fdc2aa37be14405f4e293de10bd30eb80
│   │       ├── f1
│   │       │   ├── 53
│   │       │   │   └── 8aee994a2b5c701755cdc5660748a90199cf48437f5f93fdd0572344f2f1
│   │       │   └── a1
│   │       │       └── 1de8ff1c9230508fdf1c71b3faa1a9d2aade80a7e0b0d4daa6f4040d8ba2
│   │       ├── f3
│   │       │   ├── 2c
│   │       │   │   └── 80267cf9b394a43404ccabe3e574f5fd89b769b43be625b75ff9b1b4a2ee
│   │       │   ├── 8b
│   │       │   │   └── 4a6b7b0714b6f1c94fff48ad31ee18cb6aa93ed63612067b4de30efd43f8
│   │       │   └── f5
│   │       │       └── d11839881d6df2061b642074ebfaf84ce0d4b1d8e227ad335d364cf6a913
│   │       ├── f4
│   │       │   └── 47
│   │       │       └── 8cb011f7e5de40eae9588617e8f3bce662a0ba2d60796b559a420b44783a
│   │       ├── f6
│   │       │   └── c7
│   │       │       └── c2aee6453a94a772577d770a438f34805af27cbf0c7a776b19d6850307b5
│   │       ├── f9
│   │       │   └── 82
│   │       │       └── 228120d240455dd412cb68cbe2007319fbf91d96bb998e7f24c45faadc0b
│   │       ├── fa
│   │       │   ├── 88
│   │       │   │   └── 31cbd6ca584e75edf3642c6f8b079c1f2b5eca1d7b2780ce2e86c24f1e84
│   │       │   └── a1
│   │       │       └── dd9e9a25a0a13875f496dfc7b415ddc641f6b30648050accc001be4635ee
│   │       ├── fb
│   │       │   └── fc
│   │       │       └── 6282476d454ca3b17e0ba6cf70a4b6a87142bd8f3139517d572b2f9911a4
│   │       ├── fc
│   │       │   └── ee
│   │       │       └── fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be
│   │       ├── fd
│   │       │   └── 60
│   │       │       └── 528c5445a438483b66270e6a4dddfa6e9bdcceb2b998cb6f7580d23ceb1b
│   │       └── ff
│   │           ├── 9f
│   │           │   └── 48b5354df0d5feb3420245101c38efe5fb13f171ce2093c16eeb4ba41c7e
│   │           └── d6
│   │               └── 9ea5f7eac400baceca422723dd933d7c505c100130f066f787943d1ac679
│   └── _update-notifier-last-checked
├── .pre-commit-config.yaml
├── .pre-commit-setup.md
├── .prettierrc.json
├── .tmp
│   └── temp-1758247471070.ts
├── archive
│   └── ebook
│       └── enterprise_architecture_mcp_ebook.pdf
├── async-fix-verification-summary.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── custom
│   ├── dir
│   │   └── adr-0001-complete-decision.md
│   └── research
│       ├── dir
│       │   └── perform_research_test_research_001.md
│       └── README.md
├── debug_test.js
├── docker-compose.docs.yml
├── docs
│   ├── .dockerignore
│   ├── .gitignore
│   ├── .vitepress
│   │   └── config.js
│   ├── adrs
│   │   ├── adr-0001-integration-test-decision.md
│   │   ├── adr-0001-test-decision.md
│   │   ├── adr-001-mcp-protocol-implementation-strategy.md
│   │   ├── adr-002-ai-integration-and-advanced-prompting-strategy.md
│   │   ├── adr-003-memory-centric-architecture.md
│   │   ├── adr-004-security-and-content-masking-strategy.md
│   │   ├── adr-005-testing-and-quality-assurance-strategy.md
│   │   ├── adr-006-tree-sitter-integration-strategy.md
│   │   ├── adr-007-cicd-pipeline-strategy.md
│   │   ├── adr-008-development-workflow-strategy.md
│   │   ├── adr-009-package-distribution-strategy.md
│   │   ├── adr-validated-patterns-framework.md
│   │   └── README.md
│   ├── api-styles.css
│   ├── CODE_OF_CONDUCT.md
│   ├── community
│   │   ├── .github
│   │   │   ├── ISSUE_TEMPLATE
│   │   │   │   ├── bug_report.yml
│   │   │   │   └── feature_request.yml
│   │   │   └── PULL_REQUEST_TEMPLATE.md
│   │   ├── CODE_OF_CONDUCT.md
│   │   ├── CONTRIBUTING.md
│   │   ├── README-library.md
│   │   └── SECURITY.md
│   ├── configuration.md
│   ├── context
│   │   ├── README.md
│   │   └── research
│   │       ├── latest.md
│   │       ├── perform-research-2025-10-20T15-31-34-312Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-314Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-316Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-318Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-319Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-321Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-323Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-326Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-328Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-329Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-331Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-332Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-335Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-336Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-338Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-340Z.md
│   │       ├── perform-research-2025-10-20T15-31-34-342Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-479Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-481Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-482Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-484Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-486Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-487Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-489Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-491Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-492Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-494Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-495Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-497Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-501Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-503Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-504Z.md
│   │       ├── perform-research-2025-10-20T15-38-18-505Z.md
│   │       └── perform-research-2025-10-20T15-38-18-507Z.md
│   ├── CONTRIBUTING.md
│   ├── CONVERSION_CHECKLIST.md
│   ├── DEPENDABOT.md
│   ├── DEPLOYMENT_GUIDE.md
│   ├── development.md
│   ├── diataxis-index.md
│   ├── DOCKER_SETUP.md
│   ├── DOCKER_TEST_SUCCESS.txt
│   ├── docker-compose.yml
│   ├── Dockerfile
│   ├── DOCUMENTATION_IMPROVEMENT_PLAN.md
│   ├── DOCUMENTATION-UPDATE-PLAN.md
│   ├── DOCUSAURUS_MIGRATION.md
│   ├── DOCUSAURUS_QUICKSTART.md
│   ├── docusaurus.config.js
│   ├── explanation
│   │   ├── adr-philosophy.md
│   │   ├── ai-architecture-concepts.md
│   │   ├── ai-workflow-concepts.md
│   │   ├── ape-framework-design.md
│   │   ├── architecture-overview.md
│   │   ├── context-file-tool-coverage.md
│   │   ├── index.md
│   │   ├── knowledge-generation-framework-design.md
│   │   ├── knowledge-graph.md
│   │   ├── mcp-architecture-flow.md
│   │   ├── mcp-concepts.md
│   │   ├── performance-design.md
│   │   ├── prompt-engineering.md
│   │   ├── reflexion-framework-design.md
│   │   ├── security-philosophy.md
│   │   ├── self-learning-architecture.md
│   │   ├── server-architecture.md
│   │   └── tool-design.md
│   ├── how-to
│   │   ├── deploy-to-production.md
│   │   └── index.md
│   ├── how-to-guides
│   │   ├── ape-implementation-strategy.md
│   │   ├── ape-usage-guide.md
│   │   ├── bootstrap-architecture-docs.md
│   │   ├── cicd-integration.md
│   │   ├── contribute.md
│   │   ├── custom-rules.md
│   │   ├── deploy-your-own-server.md
│   │   ├── deployment-readiness.md
│   │   ├── dynamic-pattern-configuration-system.md
│   │   ├── firecrawl-setup.md
│   │   ├── generate-adrs-from-prd.md
│   │   ├── getting-started-workflow-guidance.md
│   │   ├── hybrid-dag-bootstrap-design.md
│   │   ├── installation-guide.md
│   │   ├── interactive-adr-planning.md
│   │   ├── knowledge-generation-usage-guide.md
│   │   ├── large-team-scaling.md
│   │   ├── llm-context-file-configuration.md
│   │   ├── mcp-client-compatibility.md
│   │   ├── migrate-existing-adrs.md
│   │   ├── performance-testing.md
│   │   ├── prd-to-adrs.md
│   │   ├── progress-tracking.md
│   │   ├── prompting-guide.md
│   │   ├── reflexion-implementation-strategy.md
│   │   ├── reflexion-usage-guide.md
│   │   ├── research-integration.md
│   │   ├── security-analysis.md
│   │   ├── server-context-file.md
│   │   ├── testing-guide.md
│   │   ├── tool-context-documentation-plan.md
│   │   ├── tool-development.md
│   │   ├── troubleshooting.md
│   │   ├── using-validated-patterns-with-live-sources.md
│   │   ├── validated-patterns-implementation.md
│   │   └── work-with-existing-adrs.md
│   ├── ide-rules
│   │   ├── additional-workflows.md
│   │   ├── command-structure.md
│   │   ├── environment-validation-workflow.md
│   │   ├── ide-specific
│   │   │   ├── cursor
│   │   │   │   └── cursor-rules-template.md
│   │   │   ├── jetbrains
│   │   │   │   └── jetbrains-rules-template.md
│   │   │   ├── vscode
│   │   │   │   └── vscode-rules-template.md
│   │   │   └── windsurf
│   │   │       └── windsurf-rules-template.md
│   │   ├── quickstart-guide.md
│   │   ├── README.md
│   │   ├── standalone-usage.md
│   │   └── universal-workflows.md
│   ├── index.md
│   ├── LOGO_DESIGN_PROMPT.md
│   ├── Makefile
│   ├── mcp-planning-tool-usage.md
│   ├── MIGRATION_GUIDE.md
│   ├── nginx.conf
│   ├── notes
│   │   ├── DEVELOPER_GUIDANCE.md
│   │   ├── knowledge-graph.md
│   │   ├── media
│   │   │   ├── 01-first-steps.md
│   │   │   ├── diataxis-index.md
│   │   │   ├── install-rhel.sh
│   │   │   ├── LICENSE
│   │   │   ├── mcp-client-config.md
│   │   │   ├── mcp-concepts.md
│   │   │   ├── performance-design.md
│   │   │   ├── security-philosophy.md
│   │   │   └── troubleshooting.md
│   │   ├── performance-design.md
│   │   ├── prompt-engineering.md
│   │   ├── README.md
│   │   ├── RESEARCH-DRIVEN-ARCHITECTURE.md
│   │   ├── RESEARCH-DRIVEN-INTEGRATION-ANALYSIS.md
│   │   ├── research-driven-workflow.md
│   │   ├── research-integration.md
│   │   ├── technical-debt
│   │   │   └── LINT_CLEANUP_PLAN.md
│   │   ├── tool-design.md
│   │   └── USER_GUIDANCE.md
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   │   └── logo.png
│   ├── QUICK_START.md
│   ├── README_SCRIPTS.md
│   ├── README-library.md
│   ├── README.md
│   ├── reference
│   │   ├── analysis-tools.md
│   │   ├── api-documentation.md
│   │   ├── api-reference-updated.md
│   │   ├── api-reference.md
│   │   ├── comprehensive-api-reference.md
│   │   ├── environment-config.md
│   │   ├── generation-tools.md
│   │   ├── index.md
│   │   ├── mcp-client-config.md
│   │   ├── security-tools.md
│   │   ├── usage-examples.md
│   │   └── validation-tools.md
│   ├── release-dashboard.md
│   ├── research
│   │   ├── perform_research_research_000.md
│   │   ├── perform_research_research_001.md
│   │   ├── perform_research_research_002.md
│   │   ├── perform_research_research_003.md
│   │   ├── perform_research_research_004.md
│   │   ├── perform_research_research_005.md
│   │   ├── perform_research_research_006.md
│   │   ├── perform_research_research_007.md
│   │   ├── perform_research_research_008.md
│   │   ├── perform_research_research_009.md
│   │   ├── perform_research_research_010.md
│   │   ├── perform_research_research_011.md
│   │   ├── perform_research_research_012.md
│   │   ├── perform_research_research_013.md
│   │   ├── perform_research_research_014.md
│   │   ├── perform_research_research_015.md
│   │   ├── perform_research_research_016.md
│   │   ├── perform_research_research_017.md
│   │   ├── perform_research_research_018.md
│   │   ├── perform_research_research_019.md
│   │   ├── perform_research_research_020.md
│   │   ├── perform_research_research_021.md
│   │   ├── perform_research_research_022.md
│   │   ├── perform_research_research_023.md
│   │   ├── perform_research_research_024.md
│   │   ├── perform_research_research_025.md
│   │   ├── perform_research_research_026.md
│   │   ├── perform_research_research_027.md
│   │   ├── perform_research_research_028.md
│   │   ├── perform_research_research_029.md
│   │   ├── perform_research_research_030.md
│   │   ├── perform_research_research_031.md
│   │   ├── perform_research_research_032.md
│   │   ├── perform_research_research_033.md
│   │   ├── perform_research_research_034.md
│   │   ├── perform_research_research_035.md
│   │   ├── perform_research_research_036.md
│   │   ├── perform_research_research_037.md
│   │   ├── perform_research_research_038.md
│   │   ├── perform_research_research_039.md
│   │   ├── perform_research_research_040.md
│   │   ├── perform_research_research_041.md
│   │   ├── perform_research_research_042.md
│   │   ├── perform_research_research_043.md
│   │   ├── perform_research_research_044.md
│   │   ├── perform_research_research_045.md
│   │   ├── perform_research_research_046.md
│   │   ├── perform_research_research_047.md
│   │   ├── perform_research_research_048.md
│   │   ├── perform_research_research_049.md
│   │   ├── perform_research_test_research__________001.md
│   │   ├── perform_research_test_research_001.md
│   │   ├── perform_research_test_research_002.md
│   │   ├── perform_research_test_unicode.md
│   │   └── README.md
│   ├── SECURITY.md
│   ├── setup-docusaurus.sh
│   ├── setup-website.sh
│   ├── sidebars.js
│   ├── sitemap.xml
│   ├── src
│   │   └── css
│   │       └── custom.css
│   ├── static
│   │   └── img
│   │       ├── logo.png
│   │       └── og-image.png
│   ├── technical.md
│   ├── TESTING_GUIDE.md
│   ├── TODO_MANAGEMENT_FIX.md
│   ├── tsconfig.json
│   ├── tutorials
│   │   ├── 01-first-steps.md
│   │   ├── 02-existing-projects.md
│   │   ├── 03-advanced-analysis.md
│   │   ├── index.md
│   │   ├── security-focused-workflow.md
│   │   └── team-collaboration.md
│   ├── VERSION_MANAGEMENT.md
│   └── WEBSITE_SETUP.md
├── eslint.config.js
├── jest.config.js
├── LICENSE
├── LLM_CONTEXT.md
├── Makefile
├── mcp-inspector-config.json
├── mcp-test-results.json
├── package-lock.json
├── package.json
├── patterns
│   ├── CONTRIBUTING.md
│   ├── infrastructure
│   │   ├── aws.yaml
│   │   ├── firebase.yaml
│   │   ├── kubernetes.yaml
│   │   └── openshift.yaml
│   ├── README.md
│   └── schema.json
├── README.md
├── RELEASE_NOTES_v2.0.22.md
├── reports
│   ├── comprehensive-validation_20251003_185155.json
│   ├── link-summary_20251003_185121.json
│   ├── link-validation_20250922_151241.txt
│   ├── link-validation_20250922_151242.txt
│   ├── link-validation_20251003_184136.txt
│   ├── link-validation_20251003_184141.txt
│   ├── link-validation_20251003_184945.txt
│   ├── link-validation_20251003_185000.txt
│   ├── link-validation_20251003_185121.txt
│   └── markdown-validation_20251003_185155.txt
├── sample-project
│   ├── docs
│   │   └── adrs
│   │       ├── 001-database-architecture.md
│   │       ├── 002-api-authentication.md
│   │       └── 003-legacy-data-migration.md
│   └── README.md
├── scripts
│   ├── ai-release-notes.ts
│   ├── check-docs-links.sh
│   ├── check-duplicate-links.ts
│   ├── cleanup-template-docs.sh
│   ├── docs-workflow.sh
│   ├── fix-broken-links.py
│   ├── fix-docs-accuracy.sh
│   ├── fix-docs-content-accuracy.sh
│   ├── install-rhel.sh
│   ├── pre-commit-check.sh
│   ├── pre-commit-checklist.sh
│   ├── remove-duplicate-docs.sh
│   ├── sync-tags-to-npm.sh
│   ├── test-advanced-prompting.sh
│   ├── test-infrastructure.sh
│   ├── test-mcp-functionality.sh
│   ├── test-mcp-logging.ts
│   ├── test-mcp-server.sh
│   ├── test-node-compatibility.js
│   ├── test-npm-package.sh
│   ├── test-release-integration.sh
│   ├── validate-build.js
│   ├── validate-docs.sh
│   └── validate-links-with-sitemap.ts
├── SECURITY.md
├── src
│   ├── config
│   │   └── ai-config.ts
│   ├── index.ts
│   ├── prompts
│   │   ├── adr-suggestion-prompts.ts
│   │   ├── analysis-prompts.ts
│   │   ├── deployment-analysis-prompts.ts
│   │   ├── environment-analysis-prompts.ts
│   │   ├── index.ts
│   │   ├── research-integration-prompts.ts
│   │   ├── research-question-prompts.ts
│   │   ├── rule-generation-prompts.ts
│   │   ├── security-prompts.ts
│   │   └── validated-pattern-prompts.ts
│   ├── resources
│   │   ├── adr-by-id-resource.ts
│   │   ├── code-quality-resource.ts
│   │   ├── deployment-history-resource.ts
│   │   ├── deployment-status-resource.ts
│   │   ├── environment-analysis-resource.ts
│   │   ├── index.ts
│   │   ├── memory-snapshots-resource.ts
│   │   ├── pattern-base-code-by-platform-resource.ts
│   │   ├── pattern-by-name-resource.ts
│   │   ├── pattern-sources-by-platform-resource.ts
│   │   ├── project-metrics-resource.ts
│   │   ├── project-status-resource.ts
│   │   ├── research-by-topic-resource.ts
│   │   ├── research-index-resource.ts
│   │   ├── resource-cache.ts
│   │   ├── resource-router.ts
│   │   ├── rule-by-id-resource.ts
│   │   ├── rule-catalog-resource.ts
│   │   ├── rule-generation-resource.ts
│   │   ├── technology-by-name-resource.ts
│   │   ├── todo-by-id-resource.ts
│   │   ├── todo-list-resource.ts
│   │   ├── validated-pattern-by-platform-resource.ts
│   │   └── validated-patterns-catalog-resource.ts
│   ├── templates
│   │   └── domain-knowledge-templates.ts
│   ├── tools
│   │   ├── adr-bootstrap-validation-tool.ts
│   │   ├── adr-suggestion-tool.ts
│   │   ├── adr-validation-tool.ts
│   │   ├── bootstrap-validation-loop-tool.ts
│   │   ├── content-masking-tool.ts
│   │   ├── conversation-memory-tool.ts
│   │   ├── deployment-analysis-tool.ts
│   │   ├── deployment-guidance-tool.ts
│   │   ├── deployment-readiness-tool.ts
│   │   ├── environment-analysis-tool.ts
│   │   ├── expand-analysis-tool.ts
│   │   ├── get-server-context-tool.ts
│   │   ├── interactive-adr-planning-tool.ts
│   │   ├── llm-cloud-management-tool.ts
│   │   ├── llm-database-management-tool.ts
│   │   ├── llm-web-search-tool.ts
│   │   ├── mcp-planning-tool.ts
│   │   ├── memory-loading-tool.ts
│   │   ├── perform-research-tool.ts
│   │   ├── research-integration-tool.ts
│   │   ├── research-question-tool.ts
│   │   ├── review-existing-adrs-tool.ts
│   │   ├── rule-generation-tool.ts
│   │   ├── smart-git-push-tool-v2.ts
│   │   ├── smart-git-push-tool.ts
│   │   ├── tool-chain-orchestrator.ts
│   │   └── troubleshoot-guided-workflow-tool.ts
│   ├── types
│   │   ├── ape-framework.ts
│   │   ├── conversation-context.ts
│   │   ├── conversation-memory.ts
│   │   ├── enhanced-errors.ts
│   │   ├── index.ts
│   │   ├── knowledge-generation.ts
│   │   ├── knowledge-graph-schemas.ts
│   │   ├── memory-entities.ts
│   │   ├── reflexion-framework.ts
│   │   ├── state-reinforcement.ts
│   │   ├── tiered-response.ts
│   │   ├── tool-arguments.ts
│   │   └── tool-context.ts
│   └── utils
│       ├── actual-file-operations.ts
│       ├── adr-discovery.ts
│       ├── adr-knowledge-initializer.ts
│       ├── adr-suggestions.ts
│       ├── ai-executor.ts
│       ├── apply-cot-enhancement.ts
│       ├── automatic-prompt-engineering.ts
│       ├── cache.ts
│       ├── chain-of-thought-template.ts
│       ├── conditional-request.ts
│       ├── config.ts
│       ├── content-masking.ts
│       ├── context-document-manager.ts
│       ├── conversation-memory-manager.ts
│       ├── dag-executor.ts
│       ├── deployment-analysis.ts
│       ├── deployment-type-registry.ts
│       ├── directory-compat.ts
│       ├── dynamic-deployment-intelligence.ts
│       ├── enhanced-logging.ts
│       ├── environment-analysis.ts
│       ├── environment-capability-registry.ts
│       ├── file-system.ts
│       ├── file-system.ts.backup
│       ├── gitleaks-detector.ts
│       ├── index.ts
│       ├── interactive-approval.ts
│       ├── json-safe.ts
│       ├── knowledge-generation.ts
│       ├── knowledge-graph-manager.ts
│       ├── llm-artifact-detector.ts
│       ├── location-filter.ts
│       ├── mcp-response-validator.ts
│       ├── memory-entity-manager.ts
│       ├── memory-health-scoring.ts
│       ├── memory-migration-manager.ts
│       ├── memory-relationship-mapper.ts
│       ├── memory-rollback-manager.ts
│       ├── memory-transformation.ts
│       ├── monitoring.ts
│       ├── output-masking.ts
│       ├── pattern-contribution-helper.ts
│       ├── pattern-loader.ts
│       ├── pattern-research-utility.ts
│       ├── pattern-to-dag-converter.ts
│       ├── platform-detector.ts
│       ├── prompt-composition.ts
│       ├── prompt-execution.ts
│       ├── reflexion.ts
│       ├── release-readiness-detector.ts
│       ├── research-documentation.ts
│       ├── research-integration.ts
│       ├── research-orchestrator.ts
│       ├── research-questions.ts
│       ├── resource-extractor.ts
│       ├── resource-versioning.ts
│       ├── ripgrep-wrapper.ts
│       ├── root-manager.ts
│       ├── rule-format.ts
│       ├── rule-generation.ts
│       ├── server-context-generator.ts
│       ├── state-reinforcement-manager.ts
│       ├── system-card-manager.ts
│       ├── tiered-response-manager.ts
│       ├── tree-sitter-analyzer.ts
│       └── validated-pattern-definitions.ts
├── test-results
│   └── junit.xml
├── tests
│   ├── __mocks__
│   │   ├── @tree-sitter-grammars
│   │   │   └── tree-sitter-hcl.ts
│   │   ├── tree-sitter-bash.ts
│   │   ├── tree-sitter-dockerfile.ts
│   │   ├── tree-sitter-javascript.ts
│   │   ├── tree-sitter-json.ts
│   │   ├── tree-sitter-python.ts
│   │   ├── tree-sitter-typescript.ts
│   │   ├── tree-sitter-yaml.ts
│   │   └── tree-sitter.ts
│   ├── ape.test.ts
│   ├── cache-architecture-analysis.md
│   ├── cache.test.ts
│   ├── config
│   │   └── ai-config.test.ts
│   ├── config.test.ts
│   ├── index.test.ts
│   ├── integration
│   │   ├── hybrid-dag-kubernetes.test.ts
│   │   ├── memory-migration-integration.test.ts
│   │   ├── memory-migration-simple.test.ts
│   │   ├── memory-system-integration.test.ts
│   │   ├── smart-code-linking.test.ts
│   │   └── systemcard-bootstrap.test.ts
│   ├── knowledge-generation.test.ts
│   ├── mcp-server.test.ts
│   ├── performance
│   │   └── memory-performance.test.ts
│   ├── performance-effectiveness.test.ts
│   ├── prompts
│   │   ├── deployment-analysis-prompts.test.ts
│   │   ├── environment-analysis-prompts.test.ts
│   │   ├── research-integration-prompts.test.ts
│   │   ├── research-question-prompts.test.ts
│   │   ├── rule-generation-prompts.test.ts
│   │   └── security-prompts.test.ts
│   ├── README.md
│   ├── reflexion.test.ts
│   ├── research-integration-tool.test.ts
│   ├── research-question-tool.test.ts
│   ├── resources
│   │   ├── code-quality-resource.test.ts
│   │   └── deployment-history-resource.test.ts
│   ├── setup.ts
│   ├── smart-git-push-release-readiness.test.ts
│   ├── smart-git-push-v2.test.ts
│   ├── smart-git-push.test.ts
│   ├── smoke.test.ts
│   ├── templates
│   │   └── domain-knowledge-templates.test.ts
│   ├── tools
│   │   ├── adr-bootstrap-validation-tool.test.ts
│   │   ├── adr-suggestion-tool.test.ts
│   │   ├── adr-validation-tool.test.ts
│   │   ├── bootstrap-validation-loop-tool.test.ts
│   │   ├── content-masking-tool.test.ts
│   │   ├── deployment-analysis-tool.test.ts
│   │   ├── deployment-guidance-tool.test.ts
│   │   ├── deployment-readiness-tool.test.ts
│   │   ├── environment-analysis-tool.test.ts
│   │   ├── interactive-adr-planning-tool.test.ts
│   │   ├── mcp-planning-tool.test.ts
│   │   ├── memory-loading-tool.test.ts
│   │   ├── perform-research-tool.test.ts
│   │   ├── perform-research-tool.test.ts.backup
│   │   ├── research-integration-tool.test.ts
│   │   ├── review-existing-adrs-tool.test.ts
│   │   ├── rule-generation-tool.test.ts
│   │   ├── smart-git-push-tool-v2.test.ts
│   │   ├── smart-git-push-tool.test.ts
│   │   ├── tool-chain-orchestrator.test.ts
│   │   └── troubleshoot-guided-workflow-tool.test.ts
│   ├── types
│   │   └── conversation-context.test.ts
│   ├── types.test.ts
│   ├── utils
│   │   ├── adr-knowledge-initializer.test.ts
│   │   ├── advanced-prompting-test-utils.ts
│   │   ├── ai-executor.test.ts
│   │   ├── conditional-request.test.ts
│   │   ├── context-document-manager.test.ts
│   │   ├── deployment-analysis.test.ts
│   │   ├── environment-capability-registry.test.ts
│   │   ├── file-system.test.ts
│   │   ├── find-related-code.test.ts
│   │   ├── gitleaks-detector.test.ts
│   │   ├── interactive-approval.test.ts
│   │   ├── llm-artifact-detector.test.ts
│   │   ├── location-filter.test.ts
│   │   ├── mcp-response-validator.test.ts
│   │   ├── memory-entity-manager.test.ts
│   │   ├── memory-relationship-mapper.test.ts
│   │   ├── memory-rollback-manager.test.ts
│   │   ├── memory-transformation.test.ts
│   │   ├── monitoring-smoke.test.ts
│   │   ├── monitoring.test.ts
│   │   ├── output-masking.test.ts
│   │   ├── pattern-loader.test.ts
│   │   ├── pattern-validation.test.ts
│   │   ├── prompt-composition.test.ts
│   │   ├── prompt-execution.test.ts
│   │   ├── release-readiness-detector.test.ts
│   │   ├── research-documentation.test.ts
│   │   ├── research-integration.test.ts
│   │   ├── research-orchestrator.test.ts
│   │   ├── research-questions.test.ts
│   │   ├── resource-extractor.test.ts
│   │   ├── resource-versioning.test.ts
│   │   ├── rule-format.test.ts
│   │   ├── rule-generation.test.ts
│   │   ├── system-card-manager.test.ts
│   │   ├── test-config.ts
│   │   ├── test-helpers.test.ts
│   │   ├── test-helpers.ts
│   │   ├── test-infrastructure.test.ts
│   │   ├── test-infrastructure.ts
│   │   ├── tree-sitter-analyzer.test.ts
│   │   └── tree-sitter-jest-integration.test.ts
│   └── version.test.ts
├── tsconfig.json
└── typedoc.json
```

# Files

--------------------------------------------------------------------------------
/src/tools/adr-bootstrap-validation-tool.ts:
--------------------------------------------------------------------------------

```typescript
   1 | /**
   2 |  * MCP Tool for ADR Bootstrap Validation
   3 |  * Guides LLMs to create bootstrap.sh and validate_bootstrap.sh scripts
   4 |  * that ensure code deployment follows ADR architectural decisions
   5 |  */
   6 | 
   7 | import { McpAdrError } from '../types/index.js';
   8 | import { ConversationContext } from '../types/conversation-context.js';
   9 | import { TreeSitterAnalyzer } from '../utils/tree-sitter-analyzer.js';
  10 | import { findRelatedCode } from '../utils/file-system.js';
  11 | import { detectPlatforms, PlatformDetectionResult } from '../utils/platform-detector.js';
  12 | import { getPattern, ValidatedPattern } from '../utils/validated-pattern-definitions.js';
  13 | import { generatePatternResearchReport } from '../utils/pattern-research-utility.js';
  14 | 
  15 | /**
  16 |  * Interface for bootstrap script generation
  17 |  */
  18 | export interface BootstrapScriptConfig {
  19 |   projectPath: string;
  20 |   adrDirectory?: string;
  21 |   outputPath?: string;
  22 |   scriptType: 'bootstrap' | 'validate' | 'both';
  23 |   includeTests?: boolean;
  24 |   includeDeployment?: boolean;
  25 |   customValidations?: string[];
  26 | }
  27 | 
  28 | /**
  29 |  * Interface for ADR compliance validation
  30 |  */
  31 | export interface AdrComplianceCheck {
  32 |   adrId: string;
  33 |   adrTitle: string;
  34 |   requirement: string;
  35 |   validationCommand: string;
  36 |   expectedOutcome: string;
  37 |   severity: 'critical' | 'error' | 'warning' | 'info';
  38 | }
  39 | 
  40 | /**
  41 |  * Generate bootstrap and validation scripts for ADR-compliant deployment
  42 |  * This tool tells the LLM HOW to create deployment scripts that validate
  43 |  * the implemented code matches ADR requirements
  44 |  */
  45 | export async function generateAdrBootstrapScripts(args: {
  46 |   projectPath?: string;
  47 |   adrDirectory?: string;
  48 |   outputPath?: string;
  49 |   scriptType?: 'bootstrap' | 'validate' | 'both';
  50 |   includeTests?: boolean;
  51 |   includeDeployment?: boolean;
  52 |   customValidations?: string[];
  53 |   enableTreeSitterAnalysis?: boolean;
  54 |   conversationContext?: ConversationContext;
  55 | }): Promise<any> {
  56 |   const {
  57 |     projectPath = process.cwd(),
  58 |     adrDirectory = 'docs/adrs',
  59 |     outputPath = projectPath,
  60 |     scriptType = 'both',
  61 |     includeTests = true,
  62 |     includeDeployment = true,
  63 |     customValidations = [],
  64 |     enableTreeSitterAnalysis = true,
  65 |     // conversationContext is available but not used currently
  66 |   } = args;
  67 | 
  68 |   try {
  69 |     // STEP 0: Detect platform using Validated Patterns framework
  70 |     console.log('🔍 Detecting platform type using Validated Patterns...');
  71 |     const platformDetection: PlatformDetectionResult = await detectPlatforms(projectPath);
  72 | 
  73 |     console.log(
  74 |       `📋 Platform detection complete (confidence: ${(platformDetection.confidence * 100).toFixed(0)}%)`,
  75 |       {
  76 |         primaryPlatform: platformDetection.primaryPlatform,
  77 |         detectedPlatforms: platformDetection.detectedPlatforms.map(p => p.type),
  78 |       }
  79 |     );
  80 | 
  81 |     // STEP 0.1: Get validated pattern and generate research report
  82 |     let validatedPattern: ValidatedPattern | null = null;
  83 |     let patternResearchReport: string | null = null;
  84 |     let baseRepoGuidance = '';
  85 | 
  86 |     if (platformDetection.primaryPlatform) {
  87 |       validatedPattern = getPattern(platformDetection.primaryPlatform);
  88 | 
  89 |       if (validatedPattern) {
  90 |         console.log(`✅ Loaded validated pattern: ${validatedPattern.name}`);
  91 | 
  92 |         // Generate research report with base code repository guidance
  93 |         patternResearchReport = generatePatternResearchReport(platformDetection.primaryPlatform);
  94 | 
  95 |         // Create specific guidance about the base code repository
  96 |         baseRepoGuidance = `
  97 | 
  98 | ## 🎯 VALIDATED PATTERN INTEGRATION (CRITICAL)
  99 | 
 100 | **Platform Detected**: ${platformDetection.primaryPlatform.toUpperCase()}
 101 | **Base Code Repository**: ${validatedPattern.baseCodeRepository.url}
 102 | 
 103 | ### Integration Instructions:
 104 | ${validatedPattern.baseCodeRepository.integrationInstructions}
 105 | 
 106 | ### Required Files:
 107 | ${validatedPattern.baseCodeRepository.requiredFiles.map((f, i) => `${i + 1}. \`${f}\``).join('\n')}
 108 | 
 109 | ${
 110 |   validatedPattern.baseCodeRepository.scriptEntrypoint
 111 |     ? `### Bootstrap Entry Point:
 112 | Your bootstrap.sh should call: \`${validatedPattern.baseCodeRepository.scriptEntrypoint}\`
 113 | `
 114 |     : ''
 115 | }
 116 | 
 117 | **⚠️ IMPORTANT**: Before generating scripts, use WebFetch to query:
 118 | 1. **Base Repository**: ${validatedPattern.baseCodeRepository.url}
 119 | 2. **Documentation**: ${validatedPattern.authoritativeSources.find(s => s.type === 'documentation')?.url || 'N/A'}
 120 | 
 121 | Then merge the base repository into your project and customize for your needs.
 122 | 
 123 | ---
 124 | `;
 125 | 
 126 |         console.log('📚 Generated research report with base code repository guidance');
 127 |         console.log(
 128 |           `⚠️  CRITICAL: LLM should merge ${validatedPattern.baseCodeRepository.url} before generating scripts`
 129 |         );
 130 | 
 131 |         // Log the research report for debugging (can be removed if not needed)
 132 |         console.log(
 133 |           '[DEBUG] Pattern Research Report Generated:',
 134 |           patternResearchReport ? 'YES' : 'NO'
 135 |         );
 136 |       } else {
 137 |         console.warn(
 138 |           `No validated pattern found for ${platformDetection.primaryPlatform}, generating generic scripts`
 139 |         );
 140 |       }
 141 |     }
 142 | 
 143 |     // Discover ADRs in the target project
 144 |     const { discoverAdrsInDirectory } = await import('../utils/adr-discovery.js');
 145 |     const discoveryResult = await discoverAdrsInDirectory(adrDirectory, true, projectPath);
 146 | 
 147 |     // Smart Code Linking - Find related implementation files
 148 |     let relatedCodeAnalysis = '';
 149 |     let relatedFiles: any[] = [];
 150 | 
 151 |     if (discoveryResult.adrs.length > 0) {
 152 |       try {
 153 |         // Combine all ADR content for comprehensive analysis
 154 |         const combinedAdrContent = discoveryResult.adrs
 155 |           .map(adr => `# ${adr.title}\n${adr.content || ''}`)
 156 |           .join('\n\n');
 157 | 
 158 |         const relatedCodeResult = await findRelatedCode(
 159 |           'bootstrap-validation-analysis',
 160 |           combinedAdrContent,
 161 |           projectPath,
 162 |           {
 163 |             useAI: true,
 164 |             useRipgrep: true,
 165 |             maxFiles: 20,
 166 |             includeContent: false,
 167 |           }
 168 |         );
 169 | 
 170 |         relatedFiles = relatedCodeResult.relatedFiles;
 171 | 
 172 |         if (relatedFiles.length > 0) {
 173 |           relatedCodeAnalysis = `
 174 | ## 🔗 Smart Code Linking Analysis
 175 | 
 176 | Found ${relatedFiles.length} code files related to ADR implementations that should be included in validation:
 177 | 
 178 | ### Critical Implementation Files
 179 | ${relatedFiles
 180 |   .slice(0, 8)
 181 |   .map(
 182 |     (file, index) => `
 183 | ${index + 1}. **${file.path}**
 184 |    - Type: ${file.extension} file
 185 |    - Size: ${file.size} bytes
 186 |    - Directory: ${file.directory}
 187 | `
 188 |   )
 189 |   .join('')}
 190 | 
 191 | ### Validation Targets
 192 | - **Keywords Found**: ${relatedCodeResult.keywords.join(', ')}
 193 | - **Search Patterns**: ${relatedCodeResult.searchPatterns.join(', ')}
 194 | - **Implementation Confidence**: ${(relatedCodeResult.confidence * 100).toFixed(1)}%
 195 | 
 196 | **Bootstrap Integration**: These files will be included in validation scripts to ensure ADR compliance during deployment.
 197 | 
 198 | ---
 199 | `;
 200 |         } else {
 201 |           relatedCodeAnalysis = `
 202 | ## 🔗 Smart Code Linking Analysis
 203 | 
 204 | **Status**: No related implementation files found for ADRs
 205 | **Keywords Searched**: ${relatedCodeResult.keywords.join(', ')}
 206 | **Analysis**: ADRs may be high-level decisions not yet implemented in code
 207 | 
 208 | **Recommendation**: Focus validation on configuration files, deployment scripts, and architectural constraints rather than implementation details.
 209 | 
 210 | ---
 211 | `;
 212 |         }
 213 |       } catch (error) {
 214 |         console.warn('[WARNING] Smart Code Linking for bootstrap validation failed:', error);
 215 |         relatedCodeAnalysis = `
 216 | ## 🔗 Smart Code Linking Analysis
 217 | 
 218 | **Status**: ⚠️ Analysis failed - continuing with standard validation
 219 | **Error**: ${error instanceof Error ? error.message : 'Unknown error'}
 220 | 
 221 | ---
 222 | `;
 223 |       }
 224 |     }
 225 | 
 226 |     // Extract validation requirements from ADRs
 227 |     const complianceChecks = await extractComplianceChecks(discoveryResult.adrs, relatedFiles);
 228 | 
 229 |     // Perform tree-sitter analysis for ADR compliance validation
 230 |     let codeAnalysisResults: any = null;
 231 |     let complianceValidation = '';
 232 |     if (enableTreeSitterAnalysis) {
 233 |       try {
 234 |         codeAnalysisResults = await performAdrComplianceAnalysis(
 235 |           projectPath,
 236 |           discoveryResult.adrs,
 237 |           complianceChecks
 238 |         );
 239 | 
 240 |         if (
 241 |           codeAnalysisResults.violations.length > 0 ||
 242 |           codeAnalysisResults.implementations.length > 0
 243 |         ) {
 244 |           complianceValidation = `
 245 | 
 246 | ## 🔍 Tree-sitter ADR Compliance Analysis
 247 | 
 248 | **Analysis Results:**
 249 | - **Files Analyzed**: ${codeAnalysisResults.filesAnalyzed}
 250 | - **ADR Implementations Found**: ${codeAnalysisResults.implementations.length}
 251 | - **Compliance Violations**: ${codeAnalysisResults.violations.length}
 252 | - **Architecture Patterns Detected**: ${codeAnalysisResults.patterns.join(', ') || 'None'}
 253 | 
 254 | ${
 255 |   codeAnalysisResults.implementations.length > 0
 256 |     ? `
 257 | ### ✅ Detected ADR Implementations
 258 | ${codeAnalysisResults.implementations.map((impl: any) => `- **${impl.adrTitle}**: ${impl.evidence} (${impl.file}:${impl.line})`).join('\n')}
 259 | `
 260 |     : ''
 261 | }
 262 | 
 263 | ${
 264 |   codeAnalysisResults.violations.length > 0
 265 |     ? `
 266 | ### ❌ ADR Compliance Violations
 267 | ${codeAnalysisResults.violations.map((violation: any) => `- **${violation.adrTitle}**: ${violation.issue} (${violation.file}:${violation.line})`).join('\n')}
 268 | `
 269 |     : ''
 270 | }
 271 | 
 272 | ---
 273 | `;
 274 |         }
 275 |       } catch (error) {
 276 |         console.warn('Tree-sitter ADR compliance analysis failed:', error);
 277 |         complianceValidation = `
 278 | 
 279 | ## 🔍 Tree-sitter ADR Compliance Analysis
 280 | 
 281 | **Status**: ⚠️ Analysis failed - continuing with basic validation
 282 | **Error**: ${error instanceof Error ? error.message : 'Unknown error'}
 283 | 
 284 | ---
 285 | `;
 286 |       }
 287 |     }
 288 | 
 289 |     // Generate bootstrap.sh script
 290 |     const bootstrapScript = generateBootstrapScript(
 291 |       complianceChecks,
 292 |       projectPath,
 293 |       includeTests,
 294 |       includeDeployment,
 295 |       customValidations,
 296 |       validatedPattern // Pass validated pattern for pattern-aware script generation
 297 |     );
 298 | 
 299 |     // Generate validate_bootstrap.sh script
 300 |     const validationScript = generateValidationScript(
 301 |       complianceChecks,
 302 |       projectPath,
 303 |       discoveryResult.adrs
 304 |     );
 305 | 
 306 |     const response = {
 307 |       instructions: `
 308 | # ADR Bootstrap Validation Scripts Generation
 309 | 
 310 | ## Purpose
 311 | These scripts ensure that code deployed to production follows the architectural decisions documented in ADRs.
 312 | The bootstrap script deploys the code while the validation script verifies ADR compliance.
 313 | 
 314 | ${baseRepoGuidance}
 315 | 
 316 | ## Discovered ADRs (${discoveryResult.totalAdrs} total)
 317 | ${discoveryResult.adrs.map(adr => `- ${adr.title} (${adr.status})`).join('\n')}
 318 | 
 319 | ${relatedCodeAnalysis}
 320 | 
 321 | ${complianceValidation}
 322 | 
 323 | ## Generated Scripts
 324 | 
 325 | ### 1. bootstrap.sh - Deployment Script
 326 | This script deploys the code that was created based on ADR planning.
 327 | It ensures the deployment follows architectural requirements.
 328 | 
 329 | **Location**: ${outputPath}/bootstrap.sh
 330 | **Purpose**: Deploy ADR-compliant code to the environment
 331 | **Key Features**:
 332 | - Validates prerequisites from ADRs
 333 | - Deploys code components in correct order
 334 | - Runs ADR compliance checks during deployment
 335 | - Provides rollback on failure
 336 | 
 337 | ### 2. validate_bootstrap.sh - Validation Script
 338 | This script validates that deployed code matches ADR requirements.
 339 | It catches integration issues that unit tests miss.
 340 | 
 341 | **Location**: ${outputPath}/validate_bootstrap.sh
 342 | **Purpose**: Verify deployed code follows ADR decisions
 343 | **Key Features**:
 344 | - Checks implementation against each ADR
 345 | - Validates architectural constraints
 346 | - Tests integration points
 347 | - Reports compliance status
 348 | 
 349 | ## Implementation Instructions for LLM
 350 | 
 351 | 1. **Create bootstrap.sh**:
 352 |    - Save the generated bootstrap script to ${outputPath}/bootstrap.sh
 353 |    - Make it executable: chmod +x bootstrap.sh
 354 |    - Include ADR-specific deployment steps
 355 |    - Add rollback functionality for failures
 356 | 
 357 | 2. **Create validate_bootstrap.sh**:
 358 |    - Save the validation script to ${outputPath}/validate_bootstrap.sh
 359 |    - Make it executable: chmod +x validate_bootstrap.sh
 360 |    - Include comprehensive ADR compliance checks
 361 |    - Generate detailed compliance report
 362 | 
 363 | 3. **Integration Steps**:
 364 |    - Run bootstrap.sh to deploy the code
 365 |    - Run validate_bootstrap.sh to verify compliance
 366 |    - Include both in CI/CD pipeline
 367 |    - Document any failures with ADR references
 368 | 
 369 | ## Compliance Checks Generated
 370 | ${complianceChecks.length} validation rules extracted from ADRs:
 371 | ${complianceChecks
 372 |   .slice(0, 5)
 373 |   .map(check => `- ${check.adrId}: ${check.requirement} (${check.severity})`)
 374 |   .join('\n')}
 375 | ${complianceChecks.length > 5 ? `... and ${complianceChecks.length - 5} more checks` : ''}
 376 | 
 377 | ## Usage
 378 | \`\`\`bash
 379 | # Deploy code following ADR requirements
 380 | ./bootstrap.sh
 381 | 
 382 | # Validate deployment matches ADRs
 383 | ./validate_bootstrap.sh
 384 | 
 385 | # Both scripts exit with:
 386 | # 0 - Success, ADR compliant
 387 | # 1 - Failure, ADR violations found
 388 | \`\`\`
 389 | `,
 390 |       scripts:
 391 |         scriptType === 'both'
 392 |           ? {
 393 |               bootstrap: bootstrapScript,
 394 |               validation: validationScript,
 395 |             }
 396 |           : scriptType === 'bootstrap'
 397 |             ? {
 398 |                 bootstrap: bootstrapScript,
 399 |               }
 400 |             : {
 401 |                 validation: validationScript,
 402 |               },
 403 |       complianceChecks,
 404 |       adrSummary: {
 405 |         total: discoveryResult.totalAdrs,
 406 |         byStatus: discoveryResult.summary.byStatus,
 407 |         withImplementationTasks: discoveryResult.adrs.filter(
 408 |           adr =>
 409 |             adr.content?.includes('Implementation') ||
 410 |             adr.content?.includes('TODO') ||
 411 |             adr.content?.includes('Tasks')
 412 |         ).length,
 413 |         smartCodeLinking: {
 414 |           enabled: relatedFiles.length > 0,
 415 |           relatedFilesCount: relatedFiles.length,
 416 |           fileTypes:
 417 |             relatedFiles.length > 0
 418 |               ? [...new Set(relatedFiles.map(f => f.extension))].join(', ')
 419 |               : 'none',
 420 |           validationEnhancements:
 421 |             relatedFiles.length > 0
 422 |               ? 'File-specific validation commands generated'
 423 |               : 'Standard validation only',
 424 |         },
 425 |       },
 426 |     };
 427 | 
 428 |     return {
 429 |       content: [
 430 |         {
 431 |           type: 'text',
 432 |           text: JSON.stringify(response, null, 2),
 433 |         },
 434 |       ],
 435 |     };
 436 |   } catch (error) {
 437 |     throw new McpAdrError(
 438 |       `Failed to generate ADR bootstrap scripts: ${error instanceof Error ? error.message : String(error)}`,
 439 |       'BOOTSTRAP_GENERATION_ERROR'
 440 |     );
 441 |   }
 442 | }
 443 | 
 444 | /**
 445 |  * Extract compliance checks from ADR content
 446 |  * Enhanced with Smart Code Linking for related file validation
 447 |  */
 448 | async function extractComplianceChecks(
 449 |   adrs: any[],
 450 |   relatedFiles: any[] = []
 451 | ): Promise<AdrComplianceCheck[]> {
 452 |   const checks: AdrComplianceCheck[] = [];
 453 | 
 454 |   for (const adr of adrs) {
 455 |     if (!adr.content) continue;
 456 | 
 457 |     // Extract requirements from ADR content
 458 |     const requirements = extractRequirements(adr.content);
 459 | 
 460 |     requirements.forEach((req, index) => {
 461 |       checks.push({
 462 |         adrId: adr.filename || `adr-${index}`,
 463 |         adrTitle: adr.title || 'Unknown ADR',
 464 |         requirement: req.text,
 465 |         validationCommand: generateValidationCommand(req),
 466 |         expectedOutcome: req.expected,
 467 |         severity: determineSeverity(req.text),
 468 |       });
 469 |     });
 470 |   }
 471 | 
 472 |   // Add Smart Code Linking validation checks
 473 |   if (relatedFiles.length > 0) {
 474 |     // Group related files by type for validation
 475 |     const filesByType = relatedFiles.reduce(
 476 |       (acc, file) => {
 477 |         const type = file.extension || 'unknown';
 478 |         if (!acc[type]) acc[type] = [];
 479 |         acc[type].push(file);
 480 |         return acc;
 481 |       },
 482 |       {} as Record<string, any[]>
 483 |     );
 484 | 
 485 |     // Add file-specific validation checks
 486 |     Object.entries(filesByType).forEach(([fileType, files]) => {
 487 |       const typedFiles = files as any[]; // Type assertion for files array
 488 |       const fileCount = typedFiles.length;
 489 | 
 490 |       // Configuration file validation
 491 |       if (['json', 'yml', 'yaml', 'env'].includes(fileType)) {
 492 |         checks.push({
 493 |           adrId: 'smart-code-linking',
 494 |           adrTitle: 'Configuration File Validation',
 495 |           requirement: `Validate ${fileCount} ${fileType.toUpperCase()} configuration file(s) comply with ADR requirements`,
 496 |           validationCommand: generateConfigValidationCommand(typedFiles),
 497 |           expectedOutcome: 'Configuration files are valid and ADR-compliant',
 498 |           severity: 'error',
 499 |         });
 500 |       }
 501 | 
 502 |       // Source code validation
 503 |       if (['ts', 'js', 'py', 'java', 'go'].includes(fileType)) {
 504 |         checks.push({
 505 |           adrId: 'smart-code-linking',
 506 |           adrTitle: 'Implementation File Validation',
 507 |           requirement: `Validate ${fileCount} ${fileType.toUpperCase()} implementation file(s) follow architectural patterns`,
 508 |           validationCommand: generateImplementationValidationCommand(typedFiles, fileType),
 509 |           expectedOutcome: 'Implementation files follow ADR architectural decisions',
 510 |           severity: 'warning',
 511 |         });
 512 |       }
 513 | 
 514 |       // Infrastructure as Code validation
 515 |       if (['tf', 'hcl', 'dockerfile'].includes(fileType)) {
 516 |         checks.push({
 517 |           adrId: 'smart-code-linking',
 518 |           adrTitle: 'Infrastructure Validation',
 519 |           requirement: `Validate ${fileCount} infrastructure file(s) match deployment requirements`,
 520 |           validationCommand: generateInfrastructureValidationCommand(typedFiles, fileType),
 521 |           expectedOutcome: 'Infrastructure configurations comply with ADR deployment decisions',
 522 |           severity: 'critical',
 523 |         });
 524 |       }
 525 |     });
 526 | 
 527 |     // Add overall integration check
 528 |     checks.push({
 529 |       adrId: 'smart-code-linking',
 530 |       adrTitle: 'Smart Code Linking Integration',
 531 |       requirement: `Verify ${relatedFiles.length} ADR-related files are properly integrated`,
 532 |       validationCommand: `echo "Checking integration of ADR-related files..." && find . -type f \\( ${relatedFiles.map(f => `-name "${f.name}"`).join(' -o ')} \\) | wc -l`,
 533 |       expectedOutcome: `${relatedFiles.length} files found and accessible`,
 534 |       severity: 'info',
 535 |     });
 536 |   }
 537 | 
 538 |   return checks;
 539 | }
 540 | 
 541 | /**
 542 |  * Generate validation command for configuration files
 543 |  */
 544 | function generateConfigValidationCommand(files: any[]): string {
 545 |   const filePaths = files.map(f => f.path).slice(0, 5); // Limit to first 5 files
 546 |   const fileType = files[0]?.extension || 'unknown';
 547 | 
 548 |   if (fileType === 'json') {
 549 |     return `echo "Validating JSON configuration files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && cat "$file" | jq . > /dev/null || echo "Invalid JSON: $file"; done`;
 550 |   } else if (['yml', 'yaml'].includes(fileType)) {
 551 |     return `echo "Validating YAML configuration files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && python -c "import yaml; yaml.safe_load(open('$file'))" || echo "Invalid YAML: $file"; done`;
 552 |   } else if (fileType === 'env') {
 553 |     return `echo "Validating environment files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && grep -E '^[A-Z_]+=.*$' "$file" > /dev/null || echo "Invalid ENV format: $file"; done`;
 554 |   } else {
 555 |     return `echo "Checking configuration files exist..." && ls -la ${filePaths.join(' ')}`;
 556 |   }
 557 | }
 558 | 
 559 | /**
 560 |  * Generate validation command for implementation files
 561 |  */
 562 | function generateImplementationValidationCommand(files: any[], fileType: string): string {
 563 |   const filePaths = files.map(f => f.path).slice(0, 3); // Limit to first 3 files
 564 | 
 565 |   if (['ts', 'js'].includes(fileType)) {
 566 |     return `echo "Validating TypeScript/JavaScript files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && node -c "$file" > /dev/null 2>&1 || echo "Syntax error: $file"; done`;
 567 |   } else if (fileType === 'py') {
 568 |     return `echo "Validating Python files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && python -m py_compile "$file" > /dev/null 2>&1 || echo "Syntax error: $file"; done`;
 569 |   } else if (fileType === 'java') {
 570 |     return `echo "Validating Java files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && javac -cp . "$file" > /dev/null 2>&1 || echo "Compilation error: $file"; done`;
 571 |   } else if (fileType === 'go') {
 572 |     return `echo "Validating Go files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && go fmt "$file" > /dev/null || echo "Format error: $file"; done`;
 573 |   } else {
 574 |     return `echo "Checking implementation files exist..." && ls -la ${filePaths.join(' ')}`;
 575 |   }
 576 | }
 577 | 
 578 | /**
 579 |  * Generate validation command for infrastructure files
 580 |  */
 581 | function generateInfrastructureValidationCommand(files: any[], fileType: string): string {
 582 |   const filePaths = files.map(f => f.path).slice(0, 3); // Limit to first 3 files
 583 | 
 584 |   if (['tf', 'hcl'].includes(fileType)) {
 585 |     return `echo "Validating Terraform files..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && terraform validate "$file" > /dev/null 2>&1 || echo "Terraform validation failed: $file"; done`;
 586 |   } else if (fileType === 'dockerfile') {
 587 |     return `echo "Validating Dockerfile..." && for file in ${filePaths.join(' ')}; do echo "Checking $file" && docker build -f "$file" --dry-run . > /dev/null 2>&1 || echo "Dockerfile validation failed: $file"; done`;
 588 |   } else {
 589 |     return `echo "Checking infrastructure files exist..." && ls -la ${filePaths.join(' ')}`;
 590 |   }
 591 | }
 592 | 
 593 | /**
 594 |  * Extract requirements from ADR content
 595 |  */
 596 | function extractRequirements(content: string): Array<{ text: string; expected: string }> {
 597 |   const requirements: Array<{ text: string; expected: string }> = [];
 598 | 
 599 |   // Look for common requirement patterns
 600 |   const patterns = [
 601 |     /(?:must|should|shall|will)\s+([^.]+)/gi,
 602 |     /(?:requirement|constraint):\s*([^.]+)/gi,
 603 |     /(?:decision|approach):\s*([^.]+)/gi,
 604 |     /\[x?\]\s+([^[\n]+)/g, // Checklist items
 605 |   ];
 606 | 
 607 |   patterns.forEach(pattern => {
 608 |     const matches = content.matchAll(pattern);
 609 |     for (const match of matches) {
 610 |       if (match[1]) {
 611 |         requirements.push({
 612 |           text: match[1].trim(),
 613 |           expected: 'Requirement satisfied',
 614 |         });
 615 |       }
 616 |     }
 617 |   });
 618 | 
 619 |   return requirements;
 620 | }
 621 | 
 622 | /**
 623 |  * Generate validation command for a requirement
 624 |  */
 625 | function generateValidationCommand(requirement: { text: string; expected: string }): string {
 626 |   const text = requirement.text.toLowerCase();
 627 | 
 628 |   // Generate appropriate validation based on requirement type
 629 |   if (text.includes('database') || text.includes('postgres') || text.includes('mysql')) {
 630 |     return 'echo "Checking database configuration..." && psql --version || mysql --version';
 631 |   } else if (text.includes('api') || text.includes('rest') || text.includes('http')) {
 632 |     return 'echo "Validating API endpoints..." && curl -s http://localhost:3000/health || echo "API not responding"';
 633 |   } else if (text.includes('auth') || text.includes('jwt') || text.includes('token')) {
 634 |     return 'echo "Checking authentication setup..." && grep -r "jwt\\|auth" src/ | head -5';
 635 |   } else if (text.includes('test') || text.includes('coverage')) {
 636 |     return 'echo "Running tests..." && npm test -- --coverage --silent';
 637 |   } else if (text.includes('docker') || text.includes('container')) {
 638 |     return 'echo "Checking Docker setup..." && docker ps || docker-compose ps';
 639 |   } else if (text.includes('cache') || text.includes('redis')) {
 640 |     return 'echo "Validating cache configuration..." && redis-cli ping || echo "Redis not available"';
 641 |   } else {
 642 |     return `echo "Checking: ${requirement.text.substring(0, 50)}..."`;
 643 |   }
 644 | }
 645 | 
 646 | /**
 647 |  * Determine severity based on requirement text
 648 |  */
 649 | function determineSeverity(text: string): 'critical' | 'error' | 'warning' | 'info' {
 650 |   const lower = text.toLowerCase();
 651 |   if (lower.includes('must') || lower.includes('critical') || lower.includes('required')) {
 652 |     return 'critical';
 653 |   } else if (lower.includes('shall') || lower.includes('error')) {
 654 |     return 'error';
 655 |   } else if (lower.includes('should') || lower.includes('warning')) {
 656 |     return 'warning';
 657 |   } else {
 658 |     return 'info';
 659 |   }
 660 | }
 661 | 
 662 | /**
 663 |  * Generate bootstrap.sh script content
 664 |  * If validatedPattern is provided, generates a script that calls the pattern's scripts
 665 |  * Otherwise, generates standalone deployment script
 666 |  */
 667 | function generateBootstrapScript(
 668 |   checks: AdrComplianceCheck[],
 669 |   projectPath: string,
 670 |   includeTests: boolean,
 671 |   includeDeployment: boolean,
 672 |   customValidations: string[],
 673 |   validatedPattern: ValidatedPattern | null = null
 674 | ): string {
 675 |   // If we have a validated pattern, generate a script that calls its scripts
 676 |   const hasValidatedPattern =
 677 |     validatedPattern && validatedPattern.baseCodeRepository.scriptEntrypoint;
 678 | 
 679 |   if (hasValidatedPattern) {
 680 |     const baseRepo = validatedPattern!.baseCodeRepository;
 681 |     return `#!/bin/bash
 682 | # ADR Bootstrap Deployment Script with Validated Pattern Integration
 683 | # Generated by MCP ADR Analysis Server
 684 | # Purpose: Deploy code using validated ${validatedPattern!.name} pattern
 685 | 
 686 | set -e # Exit on error
 687 | 
 688 | echo "🚀 ADR Bootstrap Deployment Starting..."
 689 | echo "📍 Project: ${projectPath}"
 690 | echo "🎯 Pattern: ${validatedPattern!.name}"
 691 | echo "📦 Base Repository: ${baseRepo.url}"
 692 | echo "📋 ADR Compliance Checks: ${checks.length}"
 693 | echo ""
 694 | 
 695 | # Color codes for output
 696 | RED='\\033[0;31m'
 697 | GREEN='\\033[0;32m'
 698 | YELLOW='\\033[1;33m'
 699 | BLUE='\\033[0;34m'
 700 | NC='\\033[0m' # No Color
 701 | 
 702 | # Track deployment status
 703 | DEPLOYMENT_SUCCESS=true
 704 | FAILED_CHECKS=()
 705 | 
 706 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 707 | echo -e "\${BLUE}Phase 0: Validated Pattern Integration Check\${NC}"
 708 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 709 | echo ""
 710 | 
 711 | # Check if base repository code is present
 712 | ${baseRepo.requiredFiles
 713 |   .map(
 714 |     (file, i) => `
 715 | echo -n "  [${i + 1}/${baseRepo.requiredFiles.length}] Checking for ${file}... "
 716 | if [ -e "${file}" ]; then
 717 |     echo -e "\${GREEN}✓\${NC}"
 718 | else
 719 |     echo -e "\${RED}✗ MISSING\${NC}"
 720 |     echo ""
 721 |     echo -e "\${RED}ERROR: Required file '${file}' from validated pattern not found!\${NC}"
 722 |     echo ""
 723 |     echo "To fix this:"
 724 |     echo "  1. Clone/merge base repository: ${baseRepo.url}"
 725 |     echo "  2. Follow integration instructions:"
 726 |     echo "     ${baseRepo.integrationInstructions.split('.').slice(0, 2).join('.')}"
 727 |     echo ""
 728 |     exit 1
 729 | fi`
 730 |   )
 731 |   .join('')}
 732 | 
 733 | echo ""
 734 | echo -e "\${GREEN}✅ All validated pattern files present\${NC}"
 735 | echo ""
 736 | 
 737 | # Function to check ADR compliance
 738 | check_adr_compliance() {
 739 |     local adr_id="$1"
 740 |     local requirement="$2"
 741 |     local command="$3"
 742 |     local expected="$4"
 743 |     local severity="$5"
 744 | 
 745 |     echo -n "  Checking $adr_id: $requirement... "
 746 | 
 747 |     if eval "$command" > /dev/null 2>&1; then
 748 |         echo -e "\${GREEN}✓\${NC}"
 749 |         return 0
 750 |     else
 751 |         echo -e "\${RED}✗\${NC}"
 752 |         FAILED_CHECKS+=("$adr_id: $requirement [$severity]")
 753 |         if [ "$severity" = "critical" ]; then
 754 |             DEPLOYMENT_SUCCESS=false
 755 |         fi
 756 |         return 1
 757 |     fi
 758 | }
 759 | 
 760 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 761 | echo -e "\${BLUE}Phase 1: Pre-deployment ADR Validation\${NC}"
 762 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 763 | echo ""
 764 | 
 765 | ${checks
 766 |   .filter(c => c.severity === 'critical')
 767 |   .map(
 768 |     check => `
 769 | check_adr_compliance \\
 770 |     "${check.adrId}" \\
 771 |     "${check.requirement.substring(0, 50)}..." \\
 772 |     "${check.validationCommand}" \\
 773 |     "${check.expectedOutcome}" \\
 774 |     "${check.severity}"`
 775 |   )
 776 |   .join('\n')}
 777 | 
 778 | if [ "$DEPLOYMENT_SUCCESS" = false ]; then
 779 |     echo ""
 780 |     echo -e "\${RED}❌ Critical ADR violations found. Deployment aborted.\${NC}"
 781 |     exit 1
 782 | fi
 783 | 
 784 | echo ""
 785 | echo -e "\${GREEN}✅ All critical checks passed\${NC}"
 786 | echo ""
 787 | 
 788 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 789 | echo -e "\${BLUE}Phase 2: Execute Validated Pattern Deployment\${NC}"
 790 | echo -e "\${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
 791 | echo ""
 792 | 
 793 | echo "🎯 Calling validated pattern script: ${baseRepo.scriptEntrypoint}"
 794 | echo ""
 795 | 
 796 | # Call the validated pattern's deployment script
 797 | if [ -x "${baseRepo.scriptEntrypoint}" ]; then
 798 |     ${baseRepo.scriptEntrypoint}
 799 |     PATTERN_EXIT_CODE=$?
 800 | elif [ -f "${baseRepo.scriptEntrypoint}" ]; then
 801 |     bash ${baseRepo.scriptEntrypoint}
 802 |     PATTERN_EXIT_CODE=$?
 803 | else
 804 |     echo -e "\${RED}ERROR: Pattern script '${baseRepo.scriptEntrypoint}' not found or not executable\${NC}"
 805 |     exit 1
 806 | fi
 807 | 
 808 | if [ $PATTERN_EXIT_CODE -ne 0 ]; then
 809 |     echo ""
 810 |     echo -e "\${RED}❌ Validated pattern deployment failed with exit code: $PATTERN_EXIT_CODE\${NC}"
 811 |     exit $PATTERN_EXIT_CODE
 812 | fi
 813 | 
 814 | echo ""
 815 | echo -e "\${GREEN}✅ Validated pattern deployment successful\${NC}"
 816 | `;
 817 |   }
 818 | 
 819 |   // Original standalone script generation (fallback when no validated pattern)
 820 |   return `#!/bin/bash
 821 | # ADR Bootstrap Deployment Script (Standalone Mode)
 822 | # Generated by MCP ADR Analysis Server
 823 | # Purpose: Deploy code that follows ADR architectural decisions
 824 | #
 825 | # ⚠️  WARNING: This is a standalone deployment script.
 826 | # Consider integrating a validated pattern for production deployments:
 827 | # - OpenShift: https://github.com/validatedpatterns/common
 828 | # - Kubernetes: https://github.com/kubernetes/examples
 829 | # - Docker: https://github.com/docker/awesome-compose
 830 | 
 831 | set -e # Exit on error
 832 | 
 833 | echo "🚀 ADR Bootstrap Deployment Starting..."
 834 | echo "📍 Project: ${projectPath}"
 835 | echo "📋 ADR Compliance Checks: ${checks.length}"
 836 | echo "⚠️  Running in STANDALONE mode (no validated pattern detected)"
 837 | echo ""
 838 | 
 839 | # Color codes for output
 840 | RED='\\033[0;31m'
 841 | GREEN='\\033[0;32m'
 842 | YELLOW='\\033[1;33m'
 843 | NC='\\033[0m' # No Color
 844 | 
 845 | # Track deployment status
 846 | DEPLOYMENT_SUCCESS=true
 847 | FAILED_CHECKS=()
 848 | 
 849 | # Function to check ADR compliance
 850 | check_adr_compliance() {
 851 |     local adr_id="$1"
 852 |     local requirement="$2"
 853 |     local command="$3"
 854 |     local expected="$4"
 855 |     local severity="$5"
 856 | 
 857 |     echo -n "  Checking $adr_id: $requirement... "
 858 | 
 859 |     if eval "$command" > /dev/null 2>&1; then
 860 |         echo -e "\${GREEN}✓\${NC}"
 861 |         return 0
 862 |     else
 863 |         echo -e "\${RED}✗\${NC}"
 864 |         FAILED_CHECKS+=("$adr_id: $requirement [$severity]")
 865 |         if [ "$severity" = "critical" ]; then
 866 |             DEPLOYMENT_SUCCESS=false
 867 |         fi
 868 |         return 1
 869 |     fi
 870 | }
 871 | 
 872 | # Phase 1: Pre-deployment validation
 873 | echo "📋 Phase 1: Pre-deployment ADR Validation"
 874 | echo "=========================================="
 875 | 
 876 | ${checks
 877 |   .filter(c => c.severity === 'critical')
 878 |   .map(
 879 |     check => `
 880 | check_adr_compliance \\
 881 |     "${check.adrId}" \\
 882 |     "${check.requirement.substring(0, 50)}..." \\
 883 |     "${check.validationCommand}" \\
 884 |     "${check.expectedOutcome}" \\
 885 |     "${check.severity}"`
 886 |   )
 887 |   .join('\n')}
 888 | 
 889 | if [ "$DEPLOYMENT_SUCCESS" = false ]; then
 890 |     echo -e "\${RED}❌ Critical ADR violations found. Deployment aborted.\${NC}"
 891 |     exit 1
 892 | fi
 893 | 
 894 | # Phase 2: Build and prepare deployment
 895 | echo ""
 896 | echo "🔨 Phase 2: Build and Prepare"
 897 | echo "============================="
 898 | 
 899 | # Install dependencies if needed
 900 | if [ -f "package.json" ]; then
 901 |     echo "  Installing dependencies..."
 902 |     npm ci || npm install
 903 | fi
 904 | 
 905 | # Build the project
 906 | if [ -f "package.json" ] && grep -q '"build"' package.json; then
 907 |     echo "  Building project..."
 908 |     npm run build
 909 | fi
 910 | 
 911 | ${
 912 |   includeTests
 913 |     ? `
 914 | # Phase 3: Run tests
 915 | echo ""
 916 | echo "🧪 Phase 3: Test Execution"
 917 | echo "========================="
 918 | 
 919 | if [ -f "package.json" ] && grep -q '"test"' package.json; then
 920 |     echo "  Running tests..."
 921 |     npm test || {
 922 |         echo -e "\${YELLOW}⚠️  Tests failed but continuing...\${NC}"
 923 |     }
 924 | fi
 925 | `
 926 |     : ''
 927 | }
 928 | 
 929 | ${
 930 |   includeDeployment
 931 |     ? `
 932 | # Phase 4: Deploy application
 933 | echo ""
 934 | echo "🚢 Phase 4: Deployment"
 935 | echo "====================="
 936 | 
 937 | # Start the application
 938 | if [ -f "docker-compose.yml" ]; then
 939 |     echo "  Starting with Docker Compose..."
 940 |     docker-compose up -d
 941 | elif [ -f "package.json" ] && grep -q '"start"' package.json; then
 942 |     echo "  Starting application..."
 943 |     npm start &
 944 |     sleep 5 # Wait for startup
 945 | else
 946 |     echo "  No deployment method detected"
 947 | fi
 948 | `
 949 |     : ''
 950 | }
 951 | 
 952 | # Phase 5: Post-deployment validation
 953 | echo ""
 954 | echo "✅ Phase 5: Post-deployment ADR Validation"
 955 | echo "========================================="
 956 | 
 957 | ${checks
 958 |   .filter(c => c.severity !== 'critical')
 959 |   .map(
 960 |     check => `
 961 | check_adr_compliance \\
 962 |     "${check.adrId}" \\
 963 |     "${check.requirement.substring(0, 50)}..." \\
 964 |     "${check.validationCommand}" \\
 965 |     "${check.expectedOutcome}" \\
 966 |     "${check.severity}"`
 967 |   )
 968 |   .join('\n')}
 969 | 
 970 | ${
 971 |   customValidations.length > 0
 972 |     ? `
 973 | # Custom validations
 974 | echo ""
 975 | echo "🔧 Custom Validations"
 976 | echo "===================="
 977 | ${customValidations.map(v => `eval "${v}"`).join('\n')}
 978 | `
 979 |     : ''
 980 | }
 981 | 
 982 | # Final report
 983 | echo ""
 984 | echo "📊 Deployment Summary"
 985 | echo "===================="
 986 | 
 987 | if [ \${#FAILED_CHECKS[@]} -eq 0 ]; then
 988 |     echo -e "\${GREEN}✅ All ADR compliance checks passed!\${NC}"
 989 |     echo "🎉 Deployment successful and ADR-compliant!"
 990 |     exit 0
 991 | else
 992 |     echo -e "\${YELLOW}⚠️  Some ADR checks failed:\${NC}"
 993 |     for check in "\${FAILED_CHECKS[@]}"; do
 994 |         echo "  - $check"
 995 |     done
 996 | 
 997 |     if [ "$DEPLOYMENT_SUCCESS" = false ]; then
 998 |         echo -e "\${RED}❌ Deployment failed due to critical ADR violations\${NC}"
 999 |         exit 1
1000 |     else
1001 |         echo -e "\${YELLOW}⚠️  Deployment completed with warnings\${NC}"
1002 |         exit 0
1003 |     fi
1004 | fi
1005 | `;
1006 | }
1007 | 
1008 | /**
1009 |  * Generate validate_bootstrap.sh script content
1010 |  */
1011 | function generateValidationScript(
1012 |   checks: AdrComplianceCheck[],
1013 |   projectPath: string,
1014 |   adrs: any[]
1015 | ): string {
1016 |   return `#!/bin/bash
1017 | # ADR Validation Script
1018 | # Generated by MCP ADR Analysis Server
1019 | # Purpose: Validate deployed code follows ADR requirements
1020 | 
1021 | set -e # Exit on error
1022 | 
1023 | echo "🔍 ADR Compliance Validation"
1024 | echo "============================"
1025 | echo "📍 Project: ${projectPath}"
1026 | echo "📋 ADRs to validate: ${adrs.length}"
1027 | echo "✓ Validation checks: ${checks.length}"
1028 | echo ""
1029 | 
1030 | # Color codes
1031 | RED='\\033[0;31m'
1032 | GREEN='\\033[0;32m'
1033 | YELLOW='\\033[1;33m'
1034 | BLUE='\\033[0;34m'
1035 | NC='\\033[0m' # No Color
1036 | 
1037 | # Tracking variables
1038 | TOTAL_CHECKS=${checks.length}
1039 | PASSED_CHECKS=0
1040 | FAILED_CHECKS=0
1041 | CRITICAL_FAILURES=0
1042 | 
1043 | # Results array
1044 | declare -a RESULTS
1045 | 
1046 | # Validation function
1047 | validate_adr() {
1048 |     local adr_id="$1"
1049 |     local adr_title="$2"
1050 |     local requirement="$3"
1051 |     local command="$4"
1052 |     local severity="$5"
1053 |     local status="FAIL"
1054 |     local color=$RED
1055 | 
1056 |     echo -e "\${BLUE}Validating:\${NC} $adr_id - $adr_title"
1057 |     echo "  Requirement: $requirement"
1058 |     echo -n "  Status: "
1059 | 
1060 |     if eval "$command" > /dev/null 2>&1; then
1061 |         status="PASS"
1062 |         color=$GREEN
1063 |         PASSED_CHECKS=$((PASSED_CHECKS + 1))
1064 |         echo -e "\${color}✓ PASSED\${NC}"
1065 |     else
1066 |         FAILED_CHECKS=$((FAILED_CHECKS + 1))
1067 |         if [ "$severity" = "critical" ]; then
1068 |             CRITICAL_FAILURES=$((CRITICAL_FAILURES + 1))
1069 |         fi
1070 |         echo -e "\${color}✗ FAILED [$severity]\${NC}"
1071 |     fi
1072 | 
1073 |     RESULTS+=("$adr_id|$adr_title|$requirement|$status|$severity")
1074 |     echo ""
1075 | }
1076 | 
1077 | # Run all validations
1078 | echo "🔍 Running ADR Compliance Checks"
1079 | echo "================================"
1080 | echo ""
1081 | 
1082 | ${checks
1083 |   .map(
1084 |     check => `
1085 | validate_adr \\
1086 |     "${check.adrId}" \\
1087 |     "${check.adrTitle}" \\
1088 |     "${check.requirement}" \\
1089 |     "${check.validationCommand}" \\
1090 |     "${check.severity}"`
1091 |   )
1092 |   .join('\n')}
1093 | 
1094 | # Generate compliance report
1095 | echo ""
1096 | echo "📊 ADR Compliance Report"
1097 | echo "======================="
1098 | echo ""
1099 | echo "Summary:"
1100 | echo "--------"
1101 | echo "  Total ADRs: ${adrs.length}"
1102 | echo "  Total Checks: $TOTAL_CHECKS"
1103 | echo -e "  \${GREEN}Passed: $PASSED_CHECKS\${NC}"
1104 | echo -e "  \${RED}Failed: $FAILED_CHECKS\${NC}"
1105 | echo -e "  \${RED}Critical Failures: $CRITICAL_FAILURES\${NC}"
1106 | echo ""
1107 | 
1108 | # Calculate compliance percentage
1109 | COMPLIANCE_PERCENT=0
1110 | if [ $TOTAL_CHECKS -gt 0 ]; then
1111 |     COMPLIANCE_PERCENT=$((PASSED_CHECKS * 100 / TOTAL_CHECKS))
1112 | fi
1113 | 
1114 | echo "Compliance Score: $COMPLIANCE_PERCENT%"
1115 | echo ""
1116 | 
1117 | # Detailed results table
1118 | echo "Detailed Results:"
1119 | echo "-----------------"
1120 | printf "%-20s %-40s %-10s %-10s\\n" "ADR" "Requirement" "Status" "Severity"
1121 | echo "--------------------------------------------------------------------------------"
1122 | 
1123 | for result in "\${RESULTS[@]}"; do
1124 |     IFS='|' read -r adr_id adr_title requirement status severity <<< "$result"
1125 | 
1126 |     if [ "$status" = "PASS" ]; then
1127 |         status_color=$GREEN
1128 |     else
1129 |         status_color=$RED
1130 |     fi
1131 | 
1132 |     printf "%-20s %-40s \${status_color}%-10s\${NC} %-10s\\n" \\
1133 |         "$adr_id" \\
1134 |         "\${requirement:0:40}" \\
1135 |         "$status" \\
1136 |         "$severity"
1137 | done
1138 | 
1139 | echo ""
1140 | echo "=================================================================================="
1141 | 
1142 | # Exit with appropriate code
1143 | if [ $CRITICAL_FAILURES -gt 0 ]; then
1144 |     echo -e "\${RED}❌ Validation FAILED: Critical ADR violations detected\${NC}"
1145 |     echo ""
1146 |     echo "Action Required:"
1147 |     echo "  1. Review failed critical checks above"
1148 |     echo "  2. Update implementation to match ADR requirements"
1149 |     echo "  3. Re-run this validation script"
1150 |     exit 1
1151 | elif [ $FAILED_CHECKS -gt 0 ]; then
1152 |     echo -e "\${YELLOW}⚠️  Validation PASSED with warnings\${NC}"
1153 |     echo ""
1154 |     echo "Recommended Actions:"
1155 |     echo "  1. Review non-critical failures"
1156 |     echo "  2. Plan remediation for next iteration"
1157 |     exit 0
1158 | else
1159 |     echo -e "\${GREEN}✅ Validation PASSED: Full ADR compliance achieved!\${NC}"
1160 |     exit 0
1161 | fi
1162 | `;
1163 | }
1164 | 
1165 | /**
1166 |  * Perform tree-sitter analysis for ADR compliance validation
1167 |  */
1168 | async function performAdrComplianceAnalysis(
1169 |   projectPath: string,
1170 |   adrs: any[],
1171 |   complianceChecks: AdrComplianceCheck[]
1172 | ): Promise<{
1173 |   filesAnalyzed: number;
1174 |   implementations: Array<{
1175 |     adrTitle: string;
1176 |     evidence: string;
1177 |     file: string;
1178 |     line: number;
1179 |     confidence: number;
1180 |   }>;
1181 |   violations: Array<{
1182 |     adrTitle: string;
1183 |     issue: string;
1184 |     file: string;
1185 |     line: number;
1186 |     severity: string;
1187 |   }>;
1188 |   patterns: string[];
1189 | }> {
1190 |   const analyzer = new TreeSitterAnalyzer();
1191 |   const { readdirSync, statSync } = await import('fs');
1192 |   const { join } = await import('path');
1193 | 
1194 |   const results = {
1195 |     filesAnalyzed: 0,
1196 |     implementations: [] as any[],
1197 |     violations: [] as any[],
1198 |     patterns: [] as string[],
1199 |   };
1200 | 
1201 |   // Find source files to analyze
1202 |   const sourceFiles: string[] = [];
1203 |   const findSourceFiles = (dir: string, depth: number = 0) => {
1204 |     if (depth > 3) return; // Limit recursion depth
1205 | 
1206 |     try {
1207 |       const items = readdirSync(dir);
1208 |       for (const item of items) {
1209 |         if (item.startsWith('.') || item === 'node_modules') continue;
1210 | 
1211 |         const fullPath = join(dir, item);
1212 |         const stat = statSync(fullPath);
1213 | 
1214 |         if (stat.isDirectory()) {
1215 |           findSourceFiles(fullPath, depth + 1);
1216 |         } else if (stat.isFile()) {
1217 |           const ext = item.split('.').pop()?.toLowerCase();
1218 |           if (['ts', 'js', 'py', 'yml', 'yaml', 'tf', 'hcl', 'json'].includes(ext || '')) {
1219 |             sourceFiles.push(fullPath);
1220 |           }
1221 |         }
1222 |       }
1223 |     } catch {
1224 |       // Skip directories we can't read
1225 |     }
1226 |   };
1227 | 
1228 |   findSourceFiles(projectPath);
1229 | 
1230 |   // Analyze files (limit to first 15 for performance)
1231 |   const filesToAnalyze = sourceFiles.slice(0, 15);
1232 |   results.filesAnalyzed = filesToAnalyze.length;
1233 | 
1234 |   for (const filePath of filesToAnalyze) {
1235 |     try {
1236 |       const analysis = await analyzer.analyzeFile(filePath);
1237 | 
1238 |       // Check for ADR implementation evidence
1239 |       for (const adr of adrs) {
1240 |         if (!adr.content) continue;
1241 | 
1242 |         // Look for technology/framework mentions in ADR
1243 |         const adrTechnologies = extractTechnologiesFromAdr(adr.content);
1244 | 
1245 |         // Check if file implements required technologies
1246 |         if (analysis.imports) {
1247 |           for (const imp of analysis.imports) {
1248 |             for (const tech of adrTechnologies) {
1249 |               if (imp.module.toLowerCase().includes(tech.toLowerCase())) {
1250 |                 results.implementations.push({
1251 |                   adrTitle: adr.title || 'Unknown ADR',
1252 |                   evidence: `Uses required technology: ${tech} (import: ${imp.module})`,
1253 |                   file: filePath,
1254 |                   line: imp.location.line,
1255 |                   confidence: 0.8,
1256 |                 });
1257 |               }
1258 |             }
1259 |           }
1260 |         }
1261 | 
1262 |         // Check for architectural pattern compliance
1263 |         if (analysis.functions) {
1264 |           const adrPatterns = extractPatternsFromAdr(adr.content);
1265 |           for (const pattern of adrPatterns) {
1266 |             // Look for functions that match architectural patterns
1267 |             const matchingFunctions = analysis.functions.filter(
1268 |               func =>
1269 |                 func.name.toLowerCase().includes(pattern.toLowerCase()) ||
1270 |                 (pattern.includes('service') && func.name.toLowerCase().includes('service')) ||
1271 |                 (pattern.includes('controller') && func.name.toLowerCase().includes('controller'))
1272 |             );
1273 | 
1274 |             if (matchingFunctions.length > 0) {
1275 |               results.implementations.push({
1276 |                 adrTitle: adr.title || 'Unknown ADR',
1277 |                 evidence: `Implements ${pattern} pattern (${matchingFunctions.length} functions)`,
1278 |                 file: filePath,
1279 |                 line: matchingFunctions[0]?.location.line || 1,
1280 |                 confidence: 0.7,
1281 |               });
1282 | 
1283 |               if (!results.patterns.includes(pattern)) {
1284 |                 results.patterns.push(pattern);
1285 |               }
1286 |             }
1287 |           }
1288 |         }
1289 |       }
1290 | 
1291 |       // Check for compliance violations
1292 |       for (const check of complianceChecks) {
1293 |         // Security-related violations
1294 |         if (analysis.hasSecrets && check.requirement.toLowerCase().includes('security')) {
1295 |           results.violations.push({
1296 |             adrTitle: check.adrTitle,
1297 |             issue: `Security violation: ${analysis.secrets.length} secrets detected`,
1298 |             file: filePath,
1299 |             line: analysis.secrets[0]?.location.line || 1,
1300 |             severity: check.severity,
1301 |           });
1302 |         }
1303 | 
1304 |         // Architecture violations
1305 |         if (analysis.architecturalViolations && analysis.architecturalViolations.length > 0) {
1306 |           for (const violation of analysis.architecturalViolations) {
1307 |             results.violations.push({
1308 |               adrTitle: check.adrTitle,
1309 |               issue: `Architectural violation: ${violation.message}`,
1310 |               file: filePath,
1311 |               line: violation.location.line,
1312 |               severity: check.severity,
1313 |             });
1314 |           }
1315 |         }
1316 |       }
1317 |     } catch (error) {
1318 |       // Skip files that can't be analyzed
1319 |       console.warn(`Could not analyze file ${filePath}:`, error);
1320 |     }
1321 |   }
1322 | 
1323 |   return results;
1324 | }
1325 | 
1326 | /**
1327 |  * Extract technologies mentioned in ADR content
1328 |  */
1329 | function extractTechnologiesFromAdr(content: string): string[] {
1330 |   const technologies = [];
1331 |   const techPatterns = [
1332 |     /\b(react|vue|angular|express|fastapi|django|flask|spring|laravel)\b/gi,
1333 |     /\b(postgres|mysql|mongodb|redis|elasticsearch)\b/gi,
1334 |     /\b(docker|kubernetes|terraform|ansible)\b/gi,
1335 |     /\b(aws|azure|gcp|cloudflare)\b/gi,
1336 |   ];
1337 | 
1338 |   for (const pattern of techPatterns) {
1339 |     const matches = content.match(pattern);
1340 |     if (matches) {
1341 |       technologies.push(...matches.map(m => m.toLowerCase()));
1342 |     }
1343 |   }
1344 | 
1345 |   return [...new Set(technologies)]; // Remove duplicates
1346 | }
1347 | 
1348 | /**
1349 |  * Extract architectural patterns mentioned in ADR content
1350 |  */
1351 | function extractPatternsFromAdr(content: string): string[] {
1352 |   const patterns = [];
1353 |   const patternKeywords = [
1354 |     'microservice',
1355 |     'service',
1356 |     'controller',
1357 |     'repository',
1358 |     'factory',
1359 |     'singleton',
1360 |     'observer',
1361 |     'strategy',
1362 |     'adapter',
1363 |     'facade',
1364 |     'mvc',
1365 |     'mvp',
1366 |     'mvvm',
1367 |     'layered',
1368 |     'hexagonal',
1369 |     'clean',
1370 |   ];
1371 | 
1372 |   for (const keyword of patternKeywords) {
1373 |     if (content.toLowerCase().includes(keyword)) {
1374 |       patterns.push(keyword);
1375 |     }
1376 |   }
1377 | 
1378 |   return patterns;
1379 | }
1380 | 
1381 | export default generateAdrBootstrapScripts;
1382 | 
```
Page 432/445FirstPrevNextLast