From 5b7f69fa5e237f23b08eac24626a7539f6adddc2 Mon Sep 17 00:00:00 2001 From: "penify-dev[bot]" <146478655+penify-dev[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 04:04:41 +0000 Subject: [PATCH] Add architecture documentation --- docs/html/README_8md.html | 130 + docs/html/annotated.html | 160 + docs/html/annotated_dup.js | 44 + docs/html/api__client_8py.html | 146 + docs/html/api__client_8py.js | 4 + docs/html/auth__commands_8py.html | 150 + docs/html/auth__commands_8py.js | 5 + docs/html/base__analyzer_8py.html | 146 + docs/html/base__analyzer_8py.js | 4 + docs/html/bc_s.png | Bin 0 -> 676 bytes docs/html/bdwn.png | Bin 0 -> 147 bytes docs/html/classException.html | 145 + docs/html/classException__coll__graph.map | 3 + docs/html/classException__coll__graph.md5 | 1 + docs/html/classException__coll__graph.svg | 26 + docs/html/classException__inherit__graph.map | 4 + docs/html/classException__inherit__graph.md5 | 1 + docs/html/classException__inherit__graph.svg | 46 + docs/html/classes.html | 159 + ...k_1_1api__client_1_1APIClient-members.html | 141 + ...ify__hook_1_1api__client_1_1APIClient.html | 468 +++ ...enify__hook_1_1api__client_1_1APIClient.js | 12 + ...1api__client_1_1APIClient__coll__graph.map | 3 + ...1api__client_1_1APIClient__coll__graph.md5 | 1 + ...1api__client_1_1APIClient__coll__graph.svg | 36 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.map | 4 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.md5 | 1 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.svg | 39 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.map | 6 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 | 1 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.svg | 158 + ...470b897935f9fb372cd0e7e51e3_cgraph_org.svg | 70 + ...ase__analyzer_1_1BaseAnalyzer-members.html | 140 + ...ook_1_1base__analyzer_1_1BaseAnalyzer.html | 308 ++ ..._hook_1_1base__analyzer_1_1BaseAnalyzer.js | 11 + ..._analyzer_1_1BaseAnalyzer__coll__graph.map | 3 + ..._analyzer_1_1BaseAnalyzer__coll__graph.md5 | 1 + ..._analyzer_1_1BaseAnalyzer__coll__graph.svg | 33 + ...alyzer_1_1BaseAnalyzer__inherit__graph.map | 7 + ...alyzer_1_1BaseAnalyzer__inherit__graph.md5 | 1 + ...alyzer_1_1BaseAnalyzer__inherit__graph.svg | 215 ++ ...er_1_1BaseAnalyzer__inherit__graph_org.svg | 127 + ..._analyzer_1_1CommitDocGenHook-members.html | 138 + ...1commit__analyzer_1_1CommitDocGenHook.html | 486 +++ ...1_1commit__analyzer_1_1CommitDocGenHook.js | 9 + ...lyzer_1_1CommitDocGenHook__coll__graph.map | 4 + ...lyzer_1_1CommitDocGenHook__coll__graph.md5 | 1 + ...lyzer_1_1CommitDocGenHook__coll__graph.svg | 57 + ...er_1_1CommitDocGenHook__inherit__graph.map | 4 + ...er_1_1CommitDocGenHook__inherit__graph.md5 | 1 + ...er_1_1CommitDocGenHook__inherit__graph.svg | 57 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.map | 12 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 | 1 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.svg | 268 ++ ...03f7ed9175ef6f81e931a105ea9_cgraph_org.svg | 180 ++ ...496194276441fa2eb2fa014eaab9a37_cgraph.map | 5 + ...496194276441fa2eb2fa014eaab9a37_cgraph.md5 | 1 + ...496194276441fa2eb2fa014eaab9a37_cgraph.svg | 142 + ...94276441fa2eb2fa014eaab9a37_cgraph_org.svg | 54 + ...96194276441fa2eb2fa014eaab9a37_icgraph.map | 4 + ...96194276441fa2eb2fa014eaab9a37_icgraph.md5 | 1 + ...96194276441fa2eb2fa014eaab9a37_icgraph.svg | 40 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.map | 4 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 | 1 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.svg | 40 + ...da13cc121d96342476ccf72b63a007f_cgraph.map | 7 + ...da13cc121d96342476ccf72b63a007f_cgraph.md5 | 1 + ...da13cc121d96342476ccf72b63a007f_cgraph.svg | 174 ++ ...cc121d96342476ccf72b63a007f_cgraph_org.svg | 86 + ...a13cc121d96342476ccf72b63a007f_icgraph.map | 4 + ...a13cc121d96342476ccf72b63a007f_icgraph.md5 | 1 + ...a13cc121d96342476ccf72b63a007f_icgraph.svg | 40 + ...127d86729e226d74dbeb095b008db3e_cgraph.map | 3 + ...127d86729e226d74dbeb095b008db3e_cgraph.md5 | 1 + ...127d86729e226d74dbeb095b008db3e_cgraph.svg | 30 + ...27d86729e226d74dbeb095b008db3e_icgraph.map | 3 + ...27d86729e226d74dbeb095b008db3e_icgraph.md5 | 1 + ...27d86729e226d74dbeb095b008db3e_icgraph.svg | 30 + ...alyzer_1_1FileAnalyzerGenHook-members.html | 137 + ...file__analyzer_1_1FileAnalyzerGenHook.html | 362 +++ ..._1file__analyzer_1_1FileAnalyzerGenHook.js | 8 + ...er_1_1FileAnalyzerGenHook__coll__graph.map | 4 + ...er_1_1FileAnalyzerGenHook__coll__graph.md5 | 1 + ...er_1_1FileAnalyzerGenHook__coll__graph.svg | 56 + ...1_1FileAnalyzerGenHook__inherit__graph.map | 4 + ...1_1FileAnalyzerGenHook__inherit__graph.md5 | 1 + ...1_1FileAnalyzerGenHook__inherit__graph.svg | 56 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map | 6 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 | 1 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg | 159 + ...22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg | 71 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map | 5 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 | 1 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg | 55 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.map | 14 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 | 1 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.svg | 292 ++ ...fbc432fac3e259d957dd1e187f1_cgraph_org.svg | 204 ++ ...ab39391dfb7686f2a2d21a702dd3073_cgraph.map | 4 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 | 1 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.svg | 40 + ...yzer_1_1FolderAnalyzerGenHook-members.html | 136 + ...er__analyzer_1_1FolderAnalyzerGenHook.html | 301 ++ ...lder__analyzer_1_1FolderAnalyzerGenHook.js | 7 + ..._1_1FolderAnalyzerGenHook__coll__graph.map | 4 + ..._1_1FolderAnalyzerGenHook__coll__graph.md5 | 1 + ..._1_1FolderAnalyzerGenHook__coll__graph.svg | 55 + ...1FolderAnalyzerGenHook__inherit__graph.map | 4 + ...1FolderAnalyzerGenHook__inherit__graph.md5 | 1 + ...1FolderAnalyzerGenHook__inherit__graph.svg | 55 + ...b845318fc7ac3b607daf26378e19ec_icgraph.map | 4 + ...b845318fc7ac3b607daf26378e19ec_icgraph.md5 | 1 + ...b845318fc7ac3b607daf26378e19ec_icgraph.svg | 41 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.map | 4 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.md5 | 1 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.svg | 41 + ...it__analyzer_1_1GitDocGenHook-members.html | 137 + ...ook_1_1git__analyzer_1_1GitDocGenHook.html | 385 +++ ..._hook_1_1git__analyzer_1_1GitDocGenHook.js | 8 + ...analyzer_1_1GitDocGenHook__coll__graph.map | 4 + ...analyzer_1_1GitDocGenHook__coll__graph.md5 | 1 + ...analyzer_1_1GitDocGenHook__coll__graph.svg | 58 + ...lyzer_1_1GitDocGenHook__inherit__graph.map | 4 + ...lyzer_1_1GitDocGenHook__inherit__graph.md5 | 1 + ...lyzer_1_1GitDocGenHook__inherit__graph.svg | 58 + ...5313caa22b173ce75638f0db08eeb85_cgraph.map | 4 + ...5313caa22b173ce75638f0db08eeb85_cgraph.md5 | 1 + ...5313caa22b173ce75638f0db08eeb85_cgraph.svg | 39 + ...313caa22b173ce75638f0db08eeb85_icgraph.map | 5 + ...313caa22b173ce75638f0db08eeb85_icgraph.md5 | 1 + ...313caa22b173ce75638f0db08eeb85_icgraph.svg | 55 + ...549766100e91eb94b5f1a1d34bf481_icgraph.map | 4 + ...549766100e91eb94b5f1a1d34bf481_icgraph.md5 | 1 + ...549766100e91eb94b5f1a1d34bf481_icgraph.svg | 40 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.map | 18 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.md5 | 1 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.svg | 356 +++ ...14e92d717391a74bb70b1fab0ae_cgraph_org.svg | 268 ++ ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map | 3 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 | 1 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg | 29 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map | 3 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 | 1 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg | 29 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map | 6 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 | 1 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg | 159 + ...51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg | 71 + ...1_1jira__client_1_1JiraClient-members.html | 147 + ...y__hook_1_1jira__client_1_1JiraClient.html | 774 +++++ ...ify__hook_1_1jira__client_1_1JiraClient.js | 18 + ...ira__client_1_1JiraClient__coll__graph.map | 3 + ...ira__client_1_1JiraClient__coll__graph.md5 | 1 + ...ira__client_1_1JiraClient__coll__graph.svg | 44 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.map | 10 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.md5 | 1 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.svg | 264 ++ ...ae006313a21576362d26ac5ec8_icgraph_org.svg | 176 ++ ...93d6456fe053ef7a7862d5d6851910c_cgraph.map | 5 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.md5 | 1 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.svg | 142 + ...456fe053ef7a7862d5d6851910c_cgraph_org.svg | 54 + ...9ea1149758f7f5212149d357b13cc23_cgraph.map | 6 + ...9ea1149758f7f5212149d357b13cc23_cgraph.md5 | 1 + ...9ea1149758f7f5212149d357b13cc23_cgraph.svg | 166 + ...149758f7f5212149d357b13cc23_cgraph_org.svg | 78 + ...ea1149758f7f5212149d357b13cc23_icgraph.map | 4 + ...ea1149758f7f5212149d357b13cc23_icgraph.md5 | 1 + ...ea1149758f7f5212149d357b13cc23_icgraph.svg | 41 + ...5f6924819084b7c8d268956a784804a_cgraph.map | 4 + ...5f6924819084b7c8d268956a784804a_cgraph.md5 | 1 + ...5f6924819084b7c8d268956a784804a_cgraph.svg | 39 + ...f6924819084b7c8d268956a784804a_icgraph.map | 6 + ...f6924819084b7c8d268956a784804a_icgraph.md5 | 1 + ...f6924819084b7c8d268956a784804a_icgraph.svg | 168 ++ ...4819084b7c8d268956a784804a_icgraph_org.svg | 80 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.map | 9 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 | 1 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.svg | 241 ++ ...5a6432aa6f238da0ff65d49a760_cgraph_org.svg | 153 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map | 4 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 | 1 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg | 45 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.map | 3 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 | 1 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg | 29 + ...967169a4b7970c67c0947b9ac56f746_cgraph.map | 4 + ...967169a4b7970c67c0947b9ac56f746_cgraph.md5 | 1 + ...967169a4b7970c67c0947b9ac56f746_cgraph.svg | 40 + ...67169a4b7970c67c0947b9ac56f746_icgraph.map | 5 + ...67169a4b7970c67c0947b9ac56f746_icgraph.md5 | 1 + ...67169a4b7970c67c0947b9ac56f746_icgraph.svg | 58 + ...a8837552d37bfd611de23441a240826_cgraph.map | 4 + ...a8837552d37bfd611de23441a240826_cgraph.md5 | 1 + ...a8837552d37bfd611de23441a240826_cgraph.svg | 40 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.map | 5 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.md5 | 1 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.svg | 145 + ...d1d3baaedd38039913c3a97fd7_icgraph_org.svg | 57 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.map | 6 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 | 1 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg | 85 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.map | 4 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 | 1 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg | 41 + ...k_1_1llm__client_1_1LLMClient-members.html | 137 + ...ify__hook_1_1llm__client_1_1LLMClient.html | 360 +++ ...enify__hook_1_1llm__client_1_1LLMClient.js | 8 + ...1llm__client_1_1LLMClient__coll__graph.map | 3 + ...1llm__client_1_1LLMClient__coll__graph.md5 | 1 + ...1llm__client_1_1LLMClient__coll__graph.svg | 29 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.map | 4 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 | 1 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.svg | 38 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.map | 4 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.md5 | 1 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.svg | 39 + ...f06658ca922793f879474f2234518e_icgraph.map | 5 + ...f06658ca922793f879474f2234518e_icgraph.md5 | 1 + ...f06658ca922793f879474f2234518e_icgraph.svg | 142 + ...58ca922793f879474f2234518e_icgraph_org.svg | 54 + ...hook_1_1utils_1_1GitRepoNotFoundError.html | 145 + ...s_1_1GitRepoNotFoundError__coll__graph.map | 4 + ...s_1_1GitRepoNotFoundError__coll__graph.md5 | 1 + ...s_1_1GitRepoNotFoundError__coll__graph.svg | 46 + ..._1GitRepoNotFoundError__inherit__graph.map | 4 + ..._1GitRepoNotFoundError__inherit__graph.md5 | 1 + ..._1GitRepoNotFoundError__inherit__graph.svg | 46 + ...ommands_1_1TestCommitCommands-members.html | 144 + ...ommit__commands_1_1TestCommitCommands.html | 791 +++++ ..._commit__commands_1_1TestCommitCommands.js | 15 + ...nds_1_1TestCommitCommands__coll__graph.map | 3 + ...nds_1_1TestCommitCommands__coll__graph.md5 | 1 + ...nds_1_1TestCommitCommands__coll__graph.svg | 42 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.map | 11 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.md5 | 1 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.svg | 244 ++ ...f3707124aa48e8eb581106b8691_cgraph_org.svg | 156 + ...d04b125e102190a768f65f1948f15bc_cgraph.map | 4 + ...d04b125e102190a768f65f1948f15bc_cgraph.md5 | 1 + ...d04b125e102190a768f65f1948f15bc_cgraph.svg | 40 + ...13e368262340af98b30fd8ebdac6597_cgraph.map | 18 + ...13e368262340af98b30fd8ebdac6597_cgraph.md5 | 1 + ...13e368262340af98b30fd8ebdac6597_cgraph.svg | 405 +++ ...68262340af98b30fd8ebdac6597_cgraph_org.svg | 317 ++ ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.map | 11 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 | 1 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.svg | 244 ++ ...e4189792a3f7c11d2a745f479c0_cgraph_org.svg | 156 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.map | 11 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 | 1 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg | 245 ++ ...934ee0f2b914b0b893736e8fe4e_cgraph_org.svg | 157 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.map | 11 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.md5 | 1 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.svg | 244 ++ ...013055ec39ddde86b487aefcf8b_cgraph_org.svg | 156 + ...ommands_1_1TestConfigCommands-members.html | 144 + ...onfig__commands_1_1TestConfigCommands.html | 886 ++++++ ..._config__commands_1_1TestConfigCommands.js | 15 + ...nds_1_1TestConfigCommands__coll__graph.map | 3 + ...nds_1_1TestConfigCommands__coll__graph.md5 | 1 + ...nds_1_1TestConfigCommands__coll__graph.svg | 50 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.map | 5 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 | 1 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.svg | 150 + ...2082bcdd5652bb37bdb14cf453a_cgraph_org.svg | 62 + ...355f7d313bebaa71694387cf2bc5232_cgraph.map | 8 + ...355f7d313bebaa71694387cf2bc5232_cgraph.md5 | 1 + ...355f7d313bebaa71694387cf2bc5232_cgraph.svg | 211 ++ ...7d313bebaa71694387cf2bc5232_cgraph_org.svg | 123 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.map | 5 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.md5 | 1 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.svg | 150 + ...60eee3b67e1cde3aed755ebb948_cgraph_org.svg | 62 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.map | 8 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.md5 | 1 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.svg | 211 ++ ...5d9fcdc159714e8df54920f9436_cgraph_org.svg | 123 + ...73984d31452b56acd6ce4011a1248bd_cgraph.map | 7 + ...73984d31452b56acd6ce4011a1248bd_cgraph.md5 | 1 + ...73984d31452b56acd6ce4011a1248bd_cgraph.svg | 189 ++ ...4d31452b56acd6ce4011a1248bd_cgraph_org.svg | 101 + ...c0207be563c3de59a6d16277805114c_cgraph.map | 8 + ...c0207be563c3de59a6d16277805114c_cgraph.md5 | 1 + ...c0207be563c3de59a6d16277805114c_cgraph.svg | 211 ++ ...7be563c3de59a6d16277805114c_cgraph_org.svg | 123 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.map | 5 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.md5 | 1 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.svg | 150 + ...4dfb21e16003e095b79f6eab2ac_cgraph_org.svg | 62 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map | 7 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 | 1 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg | 189 ++ ...028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg | 101 + ...d8df8219441b9e9871b903a681400d9_cgraph.map | 5 + ...d8df8219441b9e9871b903a681400d9_cgraph.md5 | 1 + ...d8df8219441b9e9871b903a681400d9_cgraph.svg | 150 + ...8219441b9e9871b903a681400d9_cgraph_org.svg | 62 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.map | 7 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 | 1 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.svg | 189 ++ ...233a3f4cc5725b9d4f05758b167_cgraph_org.svg | 101 + ...e37b97432821d19758c6325d4c74bcf_cgraph.map | 7 + ...e37b97432821d19758c6325d4c74bcf_cgraph.md5 | 1 + ...e37b97432821d19758c6325d4c74bcf_cgraph.svg | 189 ++ ...97432821d19758c6325d4c74bcf_cgraph_org.svg | 101 + ...8d62310da2d768e21770f8f01ff5375_cgraph.map | 5 + ...8d62310da2d768e21770f8f01ff5375_cgraph.md5 | 1 + ...8d62310da2d768e21770f8f01ff5375_cgraph.svg | 150 + ...310da2d768e21770f8f01ff5375_cgraph_org.svg | 62 + ..._web__config_1_1TestWebConfig-members.html | 134 + ...1_1test__web__config_1_1TestWebConfig.html | 268 ++ ...s_1_1test__web__config_1_1TestWebConfig.js | 5 + ...__config_1_1TestWebConfig__coll__graph.map | 3 + ...__config_1_1TestWebConfig__coll__graph.md5 | 1 + ...__config_1_1TestWebConfig__coll__graph.svg | 30 + ...6e600222e426b003850509cb1d3190a_cgraph.map | 9 + ...6e600222e426b003850509cb1d3190a_cgraph.md5 | 1 + ...6e600222e426b003850509cb1d3190a_cgraph.svg | 227 ++ ...0222e426b003850509cb1d3190a_cgraph_org.svg | 139 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.map | 4 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.md5 | 1 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.svg | 40 + docs/html/closed.png | Bin 0 -> 132 bytes docs/html/commit-commands_8md.html | 130 + docs/html/commit__analyzer_8py.html | 146 + docs/html/commit__analyzer_8py.js | 4 + docs/html/commit__commands_8py.html | 152 + docs/html/commit__commands_8py.js | 6 + docs/html/config-commands_8md.html | 130 + docs/html/config__command_8py.html | 148 + docs/html/config__command_8py.js | 5 + docs/html/config__commands_8py.html | 174 ++ docs/html/config__commands_8py.js | 15 + docs/html/conftest_8py.html | 140 + docs/html/constants_8py.html | 148 + docs/html/constants_8py.js | 5 + docs/html/detailed-usage_8md.html | 130 + .../dir_063e2d5fe58a131099a7fe4200cca78c.html | 152 + .../dir_063e2d5fe58a131099a7fe4200cca78c.js | 9 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.map | 4 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.md5 | 1 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.svg | 30 + .../dir_1648a057408aae8db85b8e3797335623.html | 136 + ...r_1648a057408aae8db85b8e3797335623_dep.map | 4 + ...r_1648a057408aae8db85b8e3797335623_dep.md5 | 1 + ...r_1648a057408aae8db85b8e3797335623_dep.svg | 30 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.html | 152 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.js | 9 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.map | 4 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 | 1 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.svg | 30 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.html | 145 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.js | 7 + .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.html | 175 ++ .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.js | 19 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map | 5 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 | 1 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg | 42 + docs/html/doc.png | Bin 0 -> 746 bytes docs/html/doc__commands_8md.html | 130 + docs/html/doc__commands_8py.html | 158 + docs/html/doc__commands_8py.js | 7 + docs/html/doxygen-awesome-darkmode-toggle.js | 157 + .../doxygen-awesome-fragment-copy-button.js | 85 + docs/html/doxygen-awesome-interactive-toc.js | 81 + docs/html/doxygen-awesome-paragraph-link.js | 51 + ...n-awesome-sidebar-only-darkmode-toggle.css | 40 + docs/html/doxygen-awesome-sidebar-only.css | 116 + docs/html/doxygen-awesome-tabs.js | 90 + docs/html/doxygen-awesome.css | 2675 +++++++++++++++++ docs/html/doxygen.css | 1841 ++++++++++++ docs/html/doxygen.svg | 26 + docs/html/dynsections.js | 121 + docs/html/example-workflows_8md.html | 130 + docs/html/file__analyzer_8py.html | 152 + docs/html/file__analyzer_8py.js | 5 + docs/html/files.html | 166 + docs/html/files_dup.js | 4 + docs/html/folder__analyzer_8py.html | 146 + docs/html/folder__analyzer_8py.js | 4 + docs/html/folderclosed.png | Bin 0 -> 616 bytes docs/html/folderopen.png | Bin 0 -> 597 bytes docs/html/functions.html | 261 ++ docs/html/functions_func.html | 230 ++ docs/html/functions_vars.html | 147 + docs/html/git__analyzer_8py.html | 152 + docs/html/git__analyzer_8py.js | 5 + docs/html/graph_legend.html | 189 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 117 + docs/html/hierarchy.html | 148 + docs/html/hierarchy.js | 18 + docs/html/hook__commands_8py.html | 158 + docs/html/hook__commands_8py.js | 7 + docs/html/index.html | 129 + docs/html/inherit_graph_0.map | 4 + docs/html/inherit_graph_0.md5 | 1 + docs/html/inherit_graph_0.svg | 38 + docs/html/inherit_graph_1.map | 3 + docs/html/inherit_graph_1.md5 | 1 + docs/html/inherit_graph_1.svg | 22 + docs/html/inherit_graph_2.map | 7 + docs/html/inherit_graph_2.md5 | 1 + docs/html/inherit_graph_2.svg | 87 + docs/html/inherit_graph_3.map | 3 + docs/html/inherit_graph_3.md5 | 1 + docs/html/inherit_graph_3.svg | 23 + docs/html/inherit_graph_4.map | 3 + docs/html/inherit_graph_4.md5 | 1 + docs/html/inherit_graph_4.svg | 22 + docs/html/inherit_graph_5.map | 3 + docs/html/inherit_graph_5.md5 | 1 + docs/html/inherit_graph_5.svg | 23 + docs/html/inherit_graph_6.map | 3 + docs/html/inherit_graph_6.md5 | 1 + docs/html/inherit_graph_6.svg | 23 + docs/html/inherit_graph_7.map | 3 + docs/html/inherit_graph_7.md5 | 1 + docs/html/inherit_graph_7.svg | 23 + docs/html/inherits.html | 149 + docs/html/jira__client_8py.html | 152 + docs/html/jira__client_8py.js | 5 + docs/html/jquery.js | 35 + docs/html/llm__client_8py.html | 146 + docs/html/llm__client_8py.js | 4 + docs/html/login__command_8py.html | 148 + docs/html/login__command_8py.js | 5 + docs/html/main_8py.html | 146 + docs/html/main_8py.js | 4 + ...nContext_Penify_dev_penify_cli_README.html | 244 ++ ...y_dev_penify_cli_docs_commit_commands.html | 255 ++ ...y_dev_penify_cli_docs_config_commands.html | 286 ++ ...fy_dev_penify_cli_docs_detailed_usage.html | 280 ++ ...nify_dev_penify_cli_docs_doc_commands.html | 363 +++ ...dev_penify_cli_docs_example_workflows.html | 239 ++ docs/html/menu.js | 135 + docs/html/menudata.js | 117 + docs/html/namespacemembers.html | 289 ++ docs/html/namespacemembers_func.html | 228 ++ docs/html/namespacemembers_vars.html | 215 ++ docs/html/namespacepenify__hook.html | 166 + docs/html/namespacepenify__hook.js | 56 + .../namespacepenify__hook_1_1api__client.html | 138 + .../namespacepenify__hook_1_1api__client.js | 4 + ...mespacepenify__hook_1_1base__analyzer.html | 138 + ...namespacepenify__hook_1_1base__analyzer.js | 4 + .../namespacepenify__hook_1_1commands.html | 146 + .../html/namespacepenify__hook_1_1commands.js | 38 + ...y__hook_1_1commands_1_1auth__commands.html | 229 ++ ...8f375c58bb6f69f98675e6a9ac84655_cgraph.map | 5 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.md5 | 1 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.svg | 149 + ...5c58bb6f69f98675e6a9ac84655_cgraph_org.svg | 61 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.map | 5 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.md5 | 1 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.svg | 148 + ...c58bb6f69f98675e6a9ac84655_icgraph_org.svg | 60 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.map | 4 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 | 1 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg | 45 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.map | 6 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 | 1 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.svg | 164 + ...a1749d4218ea1dc6e5b6218b24_icgraph_org.svg | 76 + ..._hook_1_1commands_1_1commit__commands.html | 311 ++ ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.map | 10 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 | 1 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg | 227 ++ ...c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg | 139 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.map | 10 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 | 1 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg | 234 ++ ...4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg | 146 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.map | 5 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.md5 | 1 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.svg | 61 + ...4f739f524c38b437e4e47673d683e23_cgraph.map | 17 + ...4f739f524c38b437e4e47673d683e23_cgraph.md5 | 1 + ...4f739f524c38b437e4e47673d683e23_cgraph.svg | 388 +++ ...9f524c38b437e4e47673d683e23_cgraph_org.svg | 300 ++ ...f739f524c38b437e4e47673d683e23_icgraph.map | 5 + ...f739f524c38b437e4e47673d683e23_icgraph.md5 | 1 + ...f739f524c38b437e4e47673d683e23_icgraph.svg | 61 + ..._hook_1_1commands_1_1config__commands.html | 567 ++++ ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map | 6 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 | 1 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg | 172 ++ ...685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg | 84 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map | 10 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 | 1 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg | 237 ++ ...85c4dcb5c15ba6a4055e484cf2_icgraph_org.svg | 149 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.map | 6 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 | 1 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.svg | 165 + ...34a655ed80e6c95939b6f3c35c_icgraph_org.svg | 77 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.map | 24 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 | 1 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg | 486 +++ ...062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg | 398 +++ ...617bc5956e502c9555dc0dda0376df4_cgraph.map | 4 + ...617bc5956e502c9555dc0dda0376df4_cgraph.md5 | 1 + ...617bc5956e502c9555dc0dda0376df4_cgraph.svg | 45 + ...17bc5956e502c9555dc0dda0376df4_icgraph.map | 7 + ...17bc5956e502c9555dc0dda0376df4_icgraph.md5 | 1 + ...17bc5956e502c9555dc0dda0376df4_icgraph.svg | 182 ++ ...5956e502c9555dc0dda0376df4_icgraph_org.svg | 94 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.map | 7 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.md5 | 1 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.svg | 194 ++ ...51c905e2f1b299b12d2a73bd812_cgraph_org.svg | 106 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.map | 14 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.md5 | 1 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.svg | 302 ++ ...1c905e2f1b299b12d2a73bd812_icgraph_org.svg | 214 ++ ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map | 6 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 | 1 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg | 172 ++ ...c8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg | 84 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.map | 9 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 | 1 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg | 216 ++ ...8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg | 128 + ...559a82d0bf727703d550d1003d3ed20_cgraph.map | 4 + ...559a82d0bf727703d550d1003d3ed20_cgraph.md5 | 1 + ...559a82d0bf727703d550d1003d3ed20_cgraph.svg | 45 + ...59a82d0bf727703d550d1003d3ed20_icgraph.map | 17 + ...59a82d0bf727703d550d1003d3ed20_icgraph.md5 | 1 + ...59a82d0bf727703d550d1003d3ed20_icgraph.svg | 352 +++ ...2d0bf727703d550d1003d3ed20_icgraph_org.svg | 264 ++ ...be277132ce0bc0aacef951cf1dee2ae_cgraph.map | 4 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.md5 | 1 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.svg | 51 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.map | 24 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.md5 | 1 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.svg | 491 +++ ...132ce0bc0aacef951cf1dee2ae_icgraph_org.svg | 403 +++ ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map | 4 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 | 1 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg | 45 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.map | 8 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 | 1 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg | 204 ++ ...c2bf16b4a671e49625bfa4f9b4_icgraph_org.svg | 116 + ...115198ea5d6808ccb98733957f50b06_cgraph.map | 8 + ...115198ea5d6808ccb98733957f50b06_cgraph.md5 | 1 + ...115198ea5d6808ccb98733957f50b06_cgraph.svg | 210 ++ ...98ea5d6808ccb98733957f50b06_cgraph_org.svg | 122 + ...15198ea5d6808ccb98733957f50b06_icgraph.map | 6 + ...15198ea5d6808ccb98733957f50b06_icgraph.md5 | 1 + ...15198ea5d6808ccb98733957f50b06_icgraph.svg | 165 + ...8ea5d6808ccb98733957f50b06_icgraph_org.svg | 77 + ...fy__hook_1_1commands_1_1doc__commands.html | 279 ++ ...006ab13bff718ef783868a910c0b704_cgraph.map | 11 + ...006ab13bff718ef783868a910c0b704_cgraph.md5 | 1 + ...006ab13bff718ef783868a910c0b704_cgraph.svg | 258 ++ ...b13bff718ef783868a910c0b704_cgraph_org.svg | 170 ++ ...06ab13bff718ef783868a910c0b704_icgraph.map | 8 + ...06ab13bff718ef783868a910c0b704_icgraph.md5 | 1 + ...06ab13bff718ef783868a910c0b704_icgraph.svg | 108 + ...aac68bc563432bf25c85dc78081a25_icgraph.map | 15 + ...aac68bc563432bf25c85dc78081a25_icgraph.md5 | 1 + ...aac68bc563432bf25c85dc78081a25_icgraph.svg | 309 ++ ...8bc563432bf25c85dc78081a25_icgraph_org.svg | 221 ++ ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.map | 5 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 | 1 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg | 60 + ...y__hook_1_1commands_1_1hook__commands.html | 242 ++ ...543eb5fa835fd1237f24e8bce6201d_icgraph.map | 9 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.md5 | 1 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.svg | 212 ++ ...b5fa835fd1237f24e8bce6201d_icgraph_org.svg | 124 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.map | 9 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 | 1 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.svg | 212 ++ ...d3bf1c3795974a391ee95b72b2_icgraph_org.svg | 124 + ...spacepenify__hook_1_1commit__analyzer.html | 138 + ...mespacepenify__hook_1_1commit__analyzer.js | 4 + ...espacepenify__hook_1_1config__command.html | 205 ++ ...40e5331681eb574ac319d7458783bde_cgraph.map | 11 + ...40e5331681eb574ac319d7458783bde_cgraph.md5 | 1 + ...40e5331681eb574ac319d7458783bde_cgraph.svg | 270 ++ ...331681eb574ac319d7458783bde_cgraph_org.svg | 182 ++ ...0e5331681eb574ac319d7458783bde_icgraph.map | 4 + ...0e5331681eb574ac319d7458783bde_icgraph.md5 | 1 + ...0e5331681eb574ac319d7458783bde_icgraph.svg | 44 + ...3eb92164a69df1446d745f8a09285e_icgraph.map | 4 + ...3eb92164a69df1446d745f8a09285e_icgraph.md5 | 1 + ...3eb92164a69df1446d745f8a09285e_icgraph.svg | 45 + .../namespacepenify__hook_1_1constants.html | 169 ++ ...mespacepenify__hook_1_1file__analyzer.html | 159 + ...namespacepenify__hook_1_1file__analyzer.js | 5 + ...spacepenify__hook_1_1folder__analyzer.html | 138 + ...mespacepenify__hook_1_1folder__analyzer.js | 4 + ...amespacepenify__hook_1_1git__analyzer.html | 159 + .../namespacepenify__hook_1_1git__analyzer.js | 5 + ...namespacepenify__hook_1_1jira__client.html | 159 + .../namespacepenify__hook_1_1jira__client.js | 5 + .../namespacepenify__hook_1_1llm__client.html | 138 + .../namespacepenify__hook_1_1llm__client.js | 4 + ...mespacepenify__hook_1_1login__command.html | 196 ++ ...63db4c484797bead34b7d874020c6a_icgraph.map | 4 + ...63db4c484797bead34b7d874020c6a_icgraph.md5 | 1 + ...63db4c484797bead34b7d874020c6a_icgraph.svg | 44 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map | 6 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 | 1 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg | 165 + ...32fbafeff834b0a0c5a37f74ccd_cgraph_org.svg | 77 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.map | 4 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 | 1 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg | 44 + docs/html/namespacepenify__hook_1_1main.html | 176 ++ ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.map | 34 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 | 1 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.svg | 708 +++++ ...b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg | 620 ++++ ...838b20df4bd14ee4b5e1dd2906738f_icgraph.map | 3 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 | 1 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.svg | 28 + .../namespacepenify__hook_1_1ui__utils.html | 795 +++++ ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map | 17 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 | 1 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg | 347 +++ ...613c6fe053b6e4356cd9e5cda2_icgraph_org.svg | 259 ++ ...2b92532b1458af94f3649d411b5505c_cgraph.map | 4 + ...2b92532b1458af94f3649d411b5505c_cgraph.md5 | 1 + ...2b92532b1458af94f3649d411b5505c_cgraph.svg | 38 + ...b92532b1458af94f3649d411b5505c_icgraph.map | 4 + ...b92532b1458af94f3649d411b5505c_icgraph.md5 | 1 + ...b92532b1458af94f3649d411b5505c_icgraph.svg | 39 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.map | 4 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 | 1 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.svg | 39 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.map | 16 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.md5 | 1 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.svg | 331 ++ ...671dbe233770268e2dd66a67fa_icgraph_org.svg | 243 ++ ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map | 4 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 | 1 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg | 39 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.map | 6 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 | 1 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg | 71 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.map | 4 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.md5 | 1 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.svg | 38 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.map | 4 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.md5 | 1 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.svg | 39 + ...d934568897433fa73f9cc182ac4a3e_icgraph.map | 12 + ...d934568897433fa73f9cc182ac4a3e_icgraph.md5 | 1 + ...d934568897433fa73f9cc182ac4a3e_icgraph.svg | 266 ++ ...568897433fa73f9cc182ac4a3e_icgraph_org.svg | 178 ++ ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.map | 7 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 | 1 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.svg | 175 ++ ...4de7c679ce8b29c3e9116c4776_icgraph_org.svg | 87 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.map | 6 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 | 1 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.svg | 165 + ...d0fc60fb80f17514d60bf45f1d_icgraph_org.svg | 77 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.map | 4 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 | 1 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg | 39 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.map | 11 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 | 1 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.svg | 250 ++ ...7dd91abfe67d0807803bc3b65f_icgraph_org.svg | 162 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.map | 4 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.md5 | 1 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.svg | 37 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.map | 16 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.md5 | 1 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.svg | 356 +++ ...df6e9bf71510c379b6fa155e44_icgraph_org.svg | 268 ++ ...c3e466d1912058167be2eacf85b9f6_icgraph.map | 20 + ...c3e466d1912058167be2eacf85b9f6_icgraph.md5 | 1 + ...c3e466d1912058167be2eacf85b9f6_icgraph.svg | 425 +++ ...66d1912058167be2eacf85b9f6_icgraph_org.svg | 337 +++ ...e684c00e26199440137a87ed9b195c_icgraph.map | 5 + ...e684c00e26199440137a87ed9b195c_icgraph.md5 | 1 + ...e684c00e26199440137a87ed9b195c_icgraph.svg | 55 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map | 4 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 | 1 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg | 39 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.map | 4 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 | 1 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg | 39 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map | 6 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 | 1 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg | 160 + ...b3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg | 72 + docs/html/namespacepenify__hook_1_1utils.html | 253 ++ docs/html/namespacepenify__hook_1_1utils.js | 8 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map | 3 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 | 1 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg | 29 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map | 41 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 | 1 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg | 815 +++++ ...c80860d6a2e2d061d2fb660a3f_icgraph_org.svg | 727 +++++ docs/html/namespaces.html | 173 ++ docs/html/namespaces_dup.js | 20 + docs/html/namespacesetup.html | 345 +++ docs/html/namespacetests.html | 146 + docs/html/namespacetests.js | 20 + docs/html/namespacetests_1_1conftest.html | 130 + ...espacetests_1_1test__commit__commands.html | 138 + ...amespacetests_1_1test__commit__commands.js | 4 + ...espacetests_1_1test__config__commands.html | 138 + ...amespacetests_1_1test__config__commands.js | 4 + ...namespacetests_1_1test__doc__commands.html | 746 +++++ ...e74c920f258f442914771164fe26b45_cgraph.map | 4 + ...e74c920f258f442914771164fe26b45_cgraph.md5 | 1 + ...e74c920f258f442914771164fe26b45_cgraph.svg | 39 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map | 4 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 | 1 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg | 39 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.map | 12 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.md5 | 1 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.svg | 274 ++ ...f9ad0128c3ca1263b552fd5e482_cgraph_org.svg | 186 ++ ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.map | 4 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 | 1 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.svg | 39 + ...bb75610e40d94d42bc169b25403c186_cgraph.map | 4 + ...bb75610e40d94d42bc169b25403c186_cgraph.md5 | 1 + ...bb75610e40d94d42bc169b25403c186_cgraph.svg | 39 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.map | 4 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.md5 | 1 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.svg | 40 + ...06110833eb0aad547156faf014b31d8_cgraph.map | 4 + ...06110833eb0aad547156faf014b31d8_cgraph.md5 | 1 + ...06110833eb0aad547156faf014b31d8_cgraph.svg | 39 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.map | 12 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 | 1 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.svg | 274 ++ ...fa48469b6c097a7a55fcb20c21a_cgraph_org.svg | 186 ++ ...74688baa8c9b5ba302c2877a9789d05_cgraph.map | 12 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.md5 | 1 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.svg | 274 ++ ...8baa8c9b5ba302c2877a9789d05_cgraph_org.svg | 186 ++ ...c76cc25c23476794234cdadbcaef0c0_cgraph.map | 4 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.md5 | 1 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.svg | 39 + ...9b01e5fc89255cac96747fa081c442c_cgraph.map | 12 + ...9b01e5fc89255cac96747fa081c442c_cgraph.md5 | 1 + ...9b01e5fc89255cac96747fa081c442c_cgraph.svg | 274 ++ ...e5fc89255cac96747fa081c442c_cgraph_org.svg | 186 ++ .../namespacetests_1_1test__web__config.html | 138 + .../namespacetests_1_1test__web__config.js | 4 + docs/html/nav_f.png | Bin 0 -> 153 bytes docs/html/nav_g.png | Bin 0 -> 95 bytes docs/html/nav_h.png | Bin 0 -> 98 bytes docs/html/navtree.css | 147 + docs/html/navtree.js | 549 ++++ docs/html/navtreedata.js | 241 ++ docs/html/navtreeindex0.js | 253 ++ docs/html/navtreeindex1.js | 253 ++ docs/html/navtreeindex2.js | 90 + docs/html/open.png | Bin 0 -> 123 bytes docs/html/pages.html | 139 + docs/html/penify-cli-documentation_8md.html | 130 + docs/html/penify__hook_2____init_____8py.html | 130 + ...ify__hook_2commands_2____init_____8py.html | 140 + docs/html/resize.js | 150 + docs/html/search/all_0.html | 37 + docs/html/search/all_0.js | 7 + docs/html/search/all_1.html | 37 + docs/html/search/all_1.js | 14 + docs/html/search/all_10.html | 37 + docs/html/search/all_10.js | 16 + docs/html/search/all_11.html | 37 + docs/html/search/all_11.js | 47 + docs/html/search/all_12.html | 37 + docs/html/search/all_12.js | 9 + docs/html/search/all_13.html | 37 + docs/html/search/all_13.js | 4 + docs/html/search/all_14.html | 37 + docs/html/search/all_14.js | 5 + docs/html/search/all_2.html | 37 + docs/html/search/all_2.js | 6 + docs/html/search/all_3.html | 37 + docs/html/search/all_3.js | 18 + docs/html/search/all_4.html | 37 + docs/html/search/all_4.js | 11 + docs/html/search/all_5.html | 37 + docs/html/search/all_5.js | 11 + docs/html/search/all_6.html | 37 + docs/html/search/all_6.js | 17 + docs/html/search/all_7.html | 37 + docs/html/search/all_7.js | 23 + docs/html/search/all_8.html | 37 + docs/html/search/all_8.js | 11 + docs/html/search/all_9.html | 37 + docs/html/search/all_9.js | 7 + docs/html/search/all_a.html | 37 + docs/html/search/all_a.js | 10 + docs/html/search/all_b.html | 37 + docs/html/search/all_b.js | 14 + docs/html/search/all_c.html | 37 + docs/html/search/all_c.js | 12 + docs/html/search/all_d.html | 37 + docs/html/search/all_d.js | 5 + docs/html/search/all_e.html | 37 + docs/html/search/all_e.js | 43 + docs/html/search/all_f.html | 37 + docs/html/search/all_f.js | 10 + docs/html/search/classes_0.html | 37 + docs/html/search/classes_0.js | 4 + docs/html/search/classes_1.html | 37 + docs/html/search/classes_1.js | 4 + docs/html/search/classes_2.html | 37 + docs/html/search/classes_2.js | 4 + docs/html/search/classes_3.html | 37 + docs/html/search/classes_3.js | 4 + docs/html/search/classes_4.html | 37 + docs/html/search/classes_4.js | 5 + docs/html/search/classes_5.html | 37 + docs/html/search/classes_5.js | 5 + docs/html/search/classes_6.html | 37 + docs/html/search/classes_6.js | 4 + docs/html/search/classes_7.html | 37 + docs/html/search/classes_7.js | 4 + docs/html/search/classes_8.html | 37 + docs/html/search/classes_8.js | 6 + docs/html/search/close.svg | 31 + docs/html/search/files_0.html | 37 + docs/html/search/files_0.js | 4 + docs/html/search/files_1.html | 37 + docs/html/search/files_1.js | 5 + docs/html/search/files_10.html | 37 + docs/html/search/files_10.js | 5 + docs/html/search/files_2.html | 37 + docs/html/search/files_2.js | 4 + docs/html/search/files_3.html | 37 + docs/html/search/files_3.js | 11 + docs/html/search/files_4.html | 37 + docs/html/search/files_4.js | 6 + docs/html/search/files_5.html | 37 + docs/html/search/files_5.js | 4 + docs/html/search/files_6.html | 37 + docs/html/search/files_6.js | 5 + docs/html/search/files_7.html | 37 + docs/html/search/files_7.js | 4 + docs/html/search/files_8.html | 37 + docs/html/search/files_8.js | 4 + docs/html/search/files_9.html | 37 + docs/html/search/files_9.js | 4 + docs/html/search/files_a.html | 37 + docs/html/search/files_a.js | 5 + docs/html/search/files_b.html | 37 + docs/html/search/files_b.js | 4 + docs/html/search/files_c.html | 37 + docs/html/search/files_c.js | 4 + docs/html/search/files_d.html | 37 + docs/html/search/files_d.js | 4 + docs/html/search/files_e.html | 37 + docs/html/search/files_e.js | 4 + docs/html/search/files_f.html | 37 + docs/html/search/files_f.js | 7 + docs/html/search/functions_0.html | 37 + docs/html/search/functions_0.js | 5 + docs/html/search/functions_1.html | 37 + docs/html/search/functions_1.js | 4 + docs/html/search/functions_2.html | 37 + docs/html/search/functions_2.js | 8 + docs/html/search/functions_3.html | 37 + docs/html/search/functions_3.js | 6 + docs/html/search/functions_4.html | 37 + docs/html/search/functions_4.js | 11 + docs/html/search/functions_5.html | 37 + docs/html/search/functions_5.js | 20 + docs/html/search/functions_6.html | 37 + docs/html/search/functions_6.js | 7 + docs/html/search/functions_7.html | 37 + docs/html/search/functions_7.js | 5 + docs/html/search/functions_8.html | 37 + docs/html/search/functions_8.js | 7 + docs/html/search/functions_9.html | 37 + docs/html/search/functions_9.js | 10 + docs/html/search/functions_a.html | 37 + docs/html/search/functions_a.js | 11 + docs/html/search/functions_b.html | 37 + docs/html/search/functions_b.js | 5 + docs/html/search/functions_c.html | 37 + docs/html/search/functions_c.js | 11 + docs/html/search/functions_d.html | 37 + docs/html/search/functions_d.js | 34 + docs/html/search/functions_e.html | 37 + docs/html/search/functions_e.js | 6 + docs/html/search/mag_sel.svg | 74 + docs/html/search/namespaces_0.html | 37 + docs/html/search/namespaces_0.js | 24 + docs/html/search/namespaces_1.html | 37 + docs/html/search/namespaces_1.js | 4 + docs/html/search/namespaces_2.html | 37 + docs/html/search/namespaces_2.js | 9 + docs/html/search/nomatches.html | 13 + docs/html/search/pages_0.html | 37 + docs/html/search/pages_0.js | 9 + docs/html/search/search.css | 263 ++ docs/html/search/search.js | 802 +++++ docs/html/search/search_l.png | Bin 0 -> 567 bytes docs/html/search/search_m.png | Bin 0 -> 158 bytes docs/html/search/search_r.png | Bin 0 -> 553 bytes docs/html/search/searchdata.js | 33 + docs/html/search/variables_0.html | 37 + docs/html/search/variables_0.js | 4 + docs/html/search/variables_1.html | 37 + docs/html/search/variables_1.js | 10 + docs/html/search/variables_10.html | 37 + docs/html/search/variables_10.js | 4 + docs/html/search/variables_11.html | 37 + docs/html/search/variables_11.js | 4 + docs/html/search/variables_12.html | 37 + docs/html/search/variables_12.js | 5 + docs/html/search/variables_2.html | 37 + docs/html/search/variables_2.js | 4 + docs/html/search/variables_3.html | 37 + docs/html/search/variables_3.js | 4 + docs/html/search/variables_4.html | 37 + docs/html/search/variables_4.js | 8 + docs/html/search/variables_5.html | 37 + docs/html/search/variables_5.js | 6 + docs/html/search/variables_6.html | 37 + docs/html/search/variables_6.js | 5 + docs/html/search/variables_7.html | 37 + docs/html/search/variables_7.js | 6 + docs/html/search/variables_8.html | 37 + docs/html/search/variables_8.js | 5 + docs/html/search/variables_9.html | 37 + docs/html/search/variables_9.js | 8 + docs/html/search/variables_a.html | 37 + docs/html/search/variables_a.js | 7 + docs/html/search/variables_b.html | 37 + docs/html/search/variables_b.js | 4 + docs/html/search/variables_c.html | 37 + docs/html/search/variables_c.js | 5 + docs/html/search/variables_d.html | 37 + docs/html/search/variables_d.js | 7 + docs/html/search/variables_e.html | 37 + docs/html/search/variables_e.js | 7 + docs/html/search/variables_f.html | 37 + docs/html/search/variables_f.js | 6 + docs/html/setup_8py.html | 168 ++ docs/html/setup_8py.js | 16 + docs/html/splitbar.png | Bin 0 -> 314 bytes docs/html/svgpan.js | 323 ++ docs/html/sync_off.png | Bin 0 -> 853 bytes docs/html/sync_on.png | Bin 0 -> 845 bytes docs/html/tab_a.png | Bin 0 -> 142 bytes docs/html/tab_b.png | Bin 0 -> 169 bytes docs/html/tab_h.png | Bin 0 -> 177 bytes docs/html/tab_s.png | Bin 0 -> 184 bytes docs/html/tabs.css | 1 + docs/html/test__commit__commands_8py.html | 146 + docs/html/test__commit__commands_8py.js | 4 + docs/html/test__config__commands_8py.html | 146 + docs/html/test__config__commands_8py.js | 4 + docs/html/test__doc__commands_8py.html | 166 + docs/html/test__doc__commands_8py.js | 14 + docs/html/test__web__config_8py.html | 146 + docs/html/test__web__config_8py.js | 4 + docs/html/tests_2____init_____8py.html | 138 + docs/html/toggle-alternative-theme.js | 11 + docs/html/ui__utils_8py.html | 200 ++ docs/html/ui__utils_8py.js | 29 + docs/html/utils_8py.html | 162 + docs/html/utils_8py.js | 8 + docs/penify-cli-Penify-dev-g.tar.gz | Bin 0 -> 791831 bytes 973 files changed, 72973 insertions(+) create mode 100644 docs/html/README_8md.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/annotated_dup.js create mode 100644 docs/html/api__client_8py.html create mode 100644 docs/html/api__client_8py.js create mode 100644 docs/html/auth__commands_8py.html create mode 100644 docs/html/auth__commands_8py.js create mode 100644 docs/html/base__analyzer_8py.html create mode 100644 docs/html/base__analyzer_8py.js create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/bdwn.png create mode 100644 docs/html/classException.html create mode 100644 docs/html/classException__coll__graph.map create mode 100644 docs/html/classException__coll__graph.md5 create mode 100644 docs/html/classException__coll__graph.svg create mode 100644 docs/html/classException__inherit__graph.map create mode 100644 docs/html/classException__inherit__graph.md5 create mode 100644 docs/html/classException__inherit__graph.svg create mode 100644 docs/html/classes.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.js create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg create mode 100644 docs/html/closed.png create mode 100644 docs/html/commit-commands_8md.html create mode 100644 docs/html/commit__analyzer_8py.html create mode 100644 docs/html/commit__analyzer_8py.js create mode 100644 docs/html/commit__commands_8py.html create mode 100644 docs/html/commit__commands_8py.js create mode 100644 docs/html/config-commands_8md.html create mode 100644 docs/html/config__command_8py.html create mode 100644 docs/html/config__command_8py.js create mode 100644 docs/html/config__commands_8py.html create mode 100644 docs/html/config__commands_8py.js create mode 100644 docs/html/conftest_8py.html create mode 100644 docs/html/constants_8py.html create mode 100644 docs/html/constants_8py.js create mode 100644 docs/html/detailed-usage_8md.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623.html create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg create mode 100644 docs/html/doc.png create mode 100644 docs/html/doc__commands_8md.html create mode 100644 docs/html/doc__commands_8py.html create mode 100644 docs/html/doc__commands_8py.js create mode 100644 docs/html/doxygen-awesome-darkmode-toggle.js create mode 100644 docs/html/doxygen-awesome-fragment-copy-button.js create mode 100644 docs/html/doxygen-awesome-interactive-toc.js create mode 100644 docs/html/doxygen-awesome-paragraph-link.js create mode 100644 docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css create mode 100644 docs/html/doxygen-awesome-sidebar-only.css create mode 100644 docs/html/doxygen-awesome-tabs.js create mode 100644 docs/html/doxygen-awesome.css create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/example-workflows_8md.html create mode 100644 docs/html/file__analyzer_8py.html create mode 100644 docs/html/file__analyzer_8py.js create mode 100644 docs/html/files.html create mode 100644 docs/html/files_dup.js create mode 100644 docs/html/folder__analyzer_8py.html create mode 100644 docs/html/folder__analyzer_8py.js create mode 100644 docs/html/folderclosed.png create mode 100644 docs/html/folderopen.png create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_func.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/git__analyzer_8py.html create mode 100644 docs/html/git__analyzer_8py.js create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/graph_legend.md5 create mode 100644 docs/html/graph_legend.svg create mode 100644 docs/html/hierarchy.html create mode 100644 docs/html/hierarchy.js create mode 100644 docs/html/hook__commands_8py.html create mode 100644 docs/html/hook__commands_8py.js create mode 100644 docs/html/index.html create mode 100644 docs/html/inherit_graph_0.map create mode 100644 docs/html/inherit_graph_0.md5 create mode 100644 docs/html/inherit_graph_0.svg create mode 100644 docs/html/inherit_graph_1.map create mode 100644 docs/html/inherit_graph_1.md5 create mode 100644 docs/html/inherit_graph_1.svg create mode 100644 docs/html/inherit_graph_2.map create mode 100644 docs/html/inherit_graph_2.md5 create mode 100644 docs/html/inherit_graph_2.svg create mode 100644 docs/html/inherit_graph_3.map create mode 100644 docs/html/inherit_graph_3.md5 create mode 100644 docs/html/inherit_graph_3.svg create mode 100644 docs/html/inherit_graph_4.map create mode 100644 docs/html/inherit_graph_4.md5 create mode 100644 docs/html/inherit_graph_4.svg create mode 100644 docs/html/inherit_graph_5.map create mode 100644 docs/html/inherit_graph_5.md5 create mode 100644 docs/html/inherit_graph_5.svg create mode 100644 docs/html/inherit_graph_6.map create mode 100644 docs/html/inherit_graph_6.md5 create mode 100644 docs/html/inherit_graph_6.svg create mode 100644 docs/html/inherit_graph_7.map create mode 100644 docs/html/inherit_graph_7.md5 create mode 100644 docs/html/inherit_graph_7.svg create mode 100644 docs/html/inherits.html create mode 100644 docs/html/jira__client_8py.html create mode 100644 docs/html/jira__client_8py.js create mode 100644 docs/html/jquery.js create mode 100644 docs/html/llm__client_8py.html create mode 100644 docs/html/llm__client_8py.js create mode 100644 docs/html/login__command_8py.html create mode 100644 docs/html/login__command_8py.js create mode 100644 docs/html/main_8py.html create mode 100644 docs/html/main_8py.js create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/namespacemembers.html create mode 100644 docs/html/namespacemembers_func.html create mode 100644 docs/html/namespacemembers_vars.html create mode 100644 docs/html/namespacepenify__hook.html create mode 100644 docs/html/namespacepenify__hook.js create mode 100644 docs/html/namespacepenify__hook_1_1api__client.html create mode 100644 docs/html/namespacepenify__hook_1_1api__client.js create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands.js create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1config__command.html create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1constants.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.html create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.js create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.html create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.js create mode 100644 docs/html/namespacepenify__hook_1_1login__command.html create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main.html create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils.html create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils.html create mode 100644 docs/html/namespacepenify__hook_1_1utils.js create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg create mode 100644 docs/html/namespaces.html create mode 100644 docs/html/namespaces_dup.js create mode 100644 docs/html/namespacesetup.html create mode 100644 docs/html/namespacetests.html create mode 100644 docs/html/namespacetests.js create mode 100644 docs/html/namespacetests_1_1conftest.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.js create mode 100644 docs/html/namespacetests_1_1test__config__commands.html create mode 100644 docs/html/namespacetests_1_1test__config__commands.js create mode 100644 docs/html/namespacetests_1_1test__doc__commands.html create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__web__config.html create mode 100644 docs/html/namespacetests_1_1test__web__config.js create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_g.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/navtreedata.js create mode 100644 docs/html/navtreeindex0.js create mode 100644 docs/html/navtreeindex1.js create mode 100644 docs/html/navtreeindex2.js create mode 100644 docs/html/open.png create mode 100644 docs/html/pages.html create mode 100644 docs/html/penify-cli-documentation_8md.html create mode 100644 docs/html/penify__hook_2____init_____8py.html create mode 100644 docs/html/penify__hook_2commands_2____init_____8py.html create mode 100644 docs/html/resize.js create mode 100644 docs/html/search/all_0.html create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.html create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_10.html create mode 100644 docs/html/search/all_10.js create mode 100644 docs/html/search/all_11.html create mode 100644 docs/html/search/all_11.js create mode 100644 docs/html/search/all_12.html create mode 100644 docs/html/search/all_12.js create mode 100644 docs/html/search/all_13.html create mode 100644 docs/html/search/all_13.js create mode 100644 docs/html/search/all_14.html create mode 100644 docs/html/search/all_14.js create mode 100644 docs/html/search/all_2.html create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.html create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.html create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.html create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.html create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.html create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.html create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/all_9.html create mode 100644 docs/html/search/all_9.js create mode 100644 docs/html/search/all_a.html create mode 100644 docs/html/search/all_a.js create mode 100644 docs/html/search/all_b.html create mode 100644 docs/html/search/all_b.js create mode 100644 docs/html/search/all_c.html create mode 100644 docs/html/search/all_c.js create mode 100644 docs/html/search/all_d.html create mode 100644 docs/html/search/all_d.js create mode 100644 docs/html/search/all_e.html create mode 100644 docs/html/search/all_e.js create mode 100644 docs/html/search/all_f.html create mode 100644 docs/html/search/all_f.js create mode 100644 docs/html/search/classes_0.html create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/classes_1.html create mode 100644 docs/html/search/classes_1.js create mode 100644 docs/html/search/classes_2.html create mode 100644 docs/html/search/classes_2.js create mode 100644 docs/html/search/classes_3.html create mode 100644 docs/html/search/classes_3.js create mode 100644 docs/html/search/classes_4.html create mode 100644 docs/html/search/classes_4.js create mode 100644 docs/html/search/classes_5.html create mode 100644 docs/html/search/classes_5.js create mode 100644 docs/html/search/classes_6.html create mode 100644 docs/html/search/classes_6.js create mode 100644 docs/html/search/classes_7.html create mode 100644 docs/html/search/classes_7.js create mode 100644 docs/html/search/classes_8.html create mode 100644 docs/html/search/classes_8.js create mode 100644 docs/html/search/close.svg create mode 100644 docs/html/search/files_0.html create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.html create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/files_10.html create mode 100644 docs/html/search/files_10.js create mode 100644 docs/html/search/files_2.html create mode 100644 docs/html/search/files_2.js create mode 100644 docs/html/search/files_3.html create mode 100644 docs/html/search/files_3.js create mode 100644 docs/html/search/files_4.html create mode 100644 docs/html/search/files_4.js create mode 100644 docs/html/search/files_5.html create mode 100644 docs/html/search/files_5.js create mode 100644 docs/html/search/files_6.html create mode 100644 docs/html/search/files_6.js create mode 100644 docs/html/search/files_7.html create mode 100644 docs/html/search/files_7.js create mode 100644 docs/html/search/files_8.html create mode 100644 docs/html/search/files_8.js create mode 100644 docs/html/search/files_9.html create mode 100644 docs/html/search/files_9.js create mode 100644 docs/html/search/files_a.html create mode 100644 docs/html/search/files_a.js create mode 100644 docs/html/search/files_b.html create mode 100644 docs/html/search/files_b.js create mode 100644 docs/html/search/files_c.html create mode 100644 docs/html/search/files_c.js create mode 100644 docs/html/search/files_d.html create mode 100644 docs/html/search/files_d.js create mode 100644 docs/html/search/files_e.html create mode 100644 docs/html/search/files_e.js create mode 100644 docs/html/search/files_f.html create mode 100644 docs/html/search/files_f.js create mode 100644 docs/html/search/functions_0.html create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.html create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/functions_2.html create mode 100644 docs/html/search/functions_2.js create mode 100644 docs/html/search/functions_3.html create mode 100644 docs/html/search/functions_3.js create mode 100644 docs/html/search/functions_4.html create mode 100644 docs/html/search/functions_4.js create mode 100644 docs/html/search/functions_5.html create mode 100644 docs/html/search/functions_5.js create mode 100644 docs/html/search/functions_6.html create mode 100644 docs/html/search/functions_6.js create mode 100644 docs/html/search/functions_7.html create mode 100644 docs/html/search/functions_7.js create mode 100644 docs/html/search/functions_8.html create mode 100644 docs/html/search/functions_8.js create mode 100644 docs/html/search/functions_9.html create mode 100644 docs/html/search/functions_9.js create mode 100644 docs/html/search/functions_a.html create mode 100644 docs/html/search/functions_a.js create mode 100644 docs/html/search/functions_b.html create mode 100644 docs/html/search/functions_b.js create mode 100644 docs/html/search/functions_c.html create mode 100644 docs/html/search/functions_c.js create mode 100644 docs/html/search/functions_d.html create mode 100644 docs/html/search/functions_d.js create mode 100644 docs/html/search/functions_e.html create mode 100644 docs/html/search/functions_e.js create mode 100644 docs/html/search/mag_sel.svg create mode 100644 docs/html/search/namespaces_0.html create mode 100644 docs/html/search/namespaces_0.js create mode 100644 docs/html/search/namespaces_1.html create mode 100644 docs/html/search/namespaces_1.js create mode 100644 docs/html/search/namespaces_2.html create mode 100644 docs/html/search/namespaces_2.js create mode 100644 docs/html/search/nomatches.html create mode 100644 docs/html/search/pages_0.html create mode 100644 docs/html/search/pages_0.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/search_l.png create mode 100644 docs/html/search/search_m.png create mode 100644 docs/html/search/search_r.png create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/variables_0.html create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.html create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/search/variables_10.html create mode 100644 docs/html/search/variables_10.js create mode 100644 docs/html/search/variables_11.html create mode 100644 docs/html/search/variables_11.js create mode 100644 docs/html/search/variables_12.html create mode 100644 docs/html/search/variables_12.js create mode 100644 docs/html/search/variables_2.html create mode 100644 docs/html/search/variables_2.js create mode 100644 docs/html/search/variables_3.html create mode 100644 docs/html/search/variables_3.js create mode 100644 docs/html/search/variables_4.html create mode 100644 docs/html/search/variables_4.js create mode 100644 docs/html/search/variables_5.html create mode 100644 docs/html/search/variables_5.js create mode 100644 docs/html/search/variables_6.html create mode 100644 docs/html/search/variables_6.js create mode 100644 docs/html/search/variables_7.html create mode 100644 docs/html/search/variables_7.js create mode 100644 docs/html/search/variables_8.html create mode 100644 docs/html/search/variables_8.js create mode 100644 docs/html/search/variables_9.html create mode 100644 docs/html/search/variables_9.js create mode 100644 docs/html/search/variables_a.html create mode 100644 docs/html/search/variables_a.js create mode 100644 docs/html/search/variables_b.html create mode 100644 docs/html/search/variables_b.js create mode 100644 docs/html/search/variables_c.html create mode 100644 docs/html/search/variables_c.js create mode 100644 docs/html/search/variables_d.html create mode 100644 docs/html/search/variables_d.js create mode 100644 docs/html/search/variables_e.html create mode 100644 docs/html/search/variables_e.js create mode 100644 docs/html/search/variables_f.html create mode 100644 docs/html/search/variables_f.js create mode 100644 docs/html/setup_8py.html create mode 100644 docs/html/setup_8py.js create mode 100644 docs/html/splitbar.png create mode 100644 docs/html/svgpan.js create mode 100644 docs/html/sync_off.png create mode 100644 docs/html/sync_on.png create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tabs.css create mode 100644 docs/html/test__commit__commands_8py.html create mode 100644 docs/html/test__commit__commands_8py.js create mode 100644 docs/html/test__config__commands_8py.html create mode 100644 docs/html/test__config__commands_8py.js create mode 100644 docs/html/test__doc__commands_8py.html create mode 100644 docs/html/test__doc__commands_8py.js create mode 100644 docs/html/test__web__config_8py.html create mode 100644 docs/html/test__web__config_8py.js create mode 100644 docs/html/tests_2____init_____8py.html create mode 100644 docs/html/toggle-alternative-theme.js create mode 100644 docs/html/ui__utils_8py.html create mode 100644 docs/html/ui__utils_8py.js create mode 100644 docs/html/utils_8py.html create mode 100644 docs/html/utils_8py.js create mode 100644 docs/penify-cli-Penify-dev-g.tar.gz diff --git a/docs/html/README_8md.html b/docs/html/README_8md.html new file mode 100644 index 0000000..690fe50 --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..fd776e3 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+ + + + + diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js new file mode 100644 index 0000000..e374ec6 --- /dev/null +++ b/docs/html/annotated_dup.js @@ -0,0 +1,44 @@ +var annotated_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", [ + [ "api_client", "namespacepenify__hook_1_1api__client.html", [ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] + ] ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", [ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] + ] ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", [ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", [ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ] + ] ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", [ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] + ] ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", [ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ] + ] ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", [ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ] + ] ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", [ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", [ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ] + ] ], + [ "tests", "namespacetests.html", [ + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", [ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] + ] ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", [ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", [ + [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] + ] ] + ] ], + [ "Exception", "classException.html", null ] +]; \ No newline at end of file diff --git a/docs/html/api__client_8py.html b/docs/html/api__client_8py.html new file mode 100644 index 0000000..d357adb --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
api_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.api_client.APIClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.api_client
 
+
+
+ + + + + diff --git a/docs/html/api__client_8py.js b/docs/html/api__client_8py.js new file mode 100644 index 0000000..a3575a0 --- /dev/null +++ b/docs/html/api__client_8py.js @@ -0,0 +1,4 @@ +var api__client_8py = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/auth__commands_8py.html b/docs/html/auth__commands_8py.html new file mode 100644 index 0000000..cc204ae --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/auth_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
auth_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.auth_commands
 
+ + + + + +

+Functions

def penify_hook.commands.auth_commands.save_credentials (api_key)
 
def penify_hook.commands.auth_commands.login (api_url, dashboard_url)
 
+
+
+ + + + + diff --git a/docs/html/auth__commands_8py.js b/docs/html/auth__commands_8py.js new file mode 100644 index 0000000..3e747e3 --- /dev/null +++ b/docs/html/auth__commands_8py.js @@ -0,0 +1,5 @@ +var auth__commands_8py = +[ + [ "login", "auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] +]; \ No newline at end of file diff --git a/docs/html/base__analyzer_8py.html b/docs/html/base__analyzer_8py.html new file mode 100644 index 0000000..828acae --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
base_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.base_analyzer.BaseAnalyzer
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.base_analyzer
 
+
+
+ + + + + diff --git a/docs/html/base__analyzer_8py.js b/docs/html/base__analyzer_8py.js new file mode 100644 index 0000000..0d5c745 --- /dev/null +++ b/docs/html/base__analyzer_8py.js @@ -0,0 +1,4 @@ +var base__analyzer_8py = +[ + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] +]; \ No newline at end of file diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + + + + + + + + + + + + +penify-cli: Exception Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Exception Class Reference
+
+
+
+Inheritance diagram for Exception:
+
+
+
+
+
+Collaboration diagram for Exception:
+
+
+
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + diff --git a/docs/html/classException__coll__graph.map b/docs/html/classException__coll__graph.map new file mode 100644 index 0000000..9036a49 --- /dev/null +++ b/docs/html/classException__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classException__coll__graph.md5 b/docs/html/classException__coll__graph.md5 new file mode 100644 index 0000000..38ed226 --- /dev/null +++ b/docs/html/classException__coll__graph.md5 @@ -0,0 +1 @@ +8bfc7cbaf3c53c3b1288446104b2c7ee \ No newline at end of file diff --git a/docs/html/classException__coll__graph.svg b/docs/html/classException__coll__graph.svg new file mode 100644 index 0000000..d2d4076 --- /dev/null +++ b/docs/html/classException__coll__graph.svg @@ -0,0 +1,26 @@ + + + + + + +Exception + + + +Node1 + + +Exception + + + + + + + + + diff --git a/docs/html/classException__inherit__graph.map b/docs/html/classException__inherit__graph.map new file mode 100644 index 0000000..02cc09e --- /dev/null +++ b/docs/html/classException__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classException__inherit__graph.md5 b/docs/html/classException__inherit__graph.md5 new file mode 100644 index 0000000..f7c5b12 --- /dev/null +++ b/docs/html/classException__inherit__graph.md5 @@ -0,0 +1 @@ +02df0cdd064aa2dca59b7424cdd2be62 \ No newline at end of file diff --git a/docs/html/classException__inherit__graph.svg b/docs/html/classException__inherit__graph.svg new file mode 100644 index 0000000..33700b9 --- /dev/null +++ b/docs/html/classException__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +Exception + + + +Node1 + + +Exception + + + + + + + + + +Node2 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..659edca --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Index + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html new file mode 100644 index 0000000..d316452 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.api_client.APIClient Member List
+
+
+ +

This is the complete list of members for penify_hook.api_client.APIClient, including all inherited members.

+ + + + + + + + + + +
__init__(self, api_url, str api_token=None, str bearer_token=None)penify_hook.api_client.APIClient
api_urlpenify_hook.api_client.APIClient
AUTH_TOKENpenify_hook.api_client.APIClient
BEARER_TOKENpenify_hook.api_client.APIClient
generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)penify_hook.api_client.APIClient
generate_commit_summary_with_llm(self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)penify_hook.api_client.APIClient
get_api_key(self)penify_hook.api_client.APIClient
get_supported_file_types(self)penify_hook.api_client.APIClient
send_file_for_docstring_generation(self, file_name, content, line_numbers, repo_details=None)penify_hook.api_client.APIClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html new file mode 100644 index 0000000..597b65f --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client.APIClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.api_client.APIClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.api_client.APIClient:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, api_url, str api_token=None, str bearer_token=None)
 
def send_file_for_docstring_generation (self, file_name, content, line_numbers, repo_details=None)
 
def generate_commit_summary (self, git_diff, str instruction="", repo_details=None, dict jira_context=None)
 
list[str] get_supported_file_types (self)
 
def generate_commit_summary_with_llm (self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)
 
def get_api_key (self)
 
+ + + + + + + +

+Public Attributes

 api_url
 
 AUTH_TOKEN
 
 BEARER_TOKEN
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.__init__ ( self,
 api_url,
str  api_token = None,
str  bearer_token = None 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.generate_commit_summary ( self,
 git_diff,
str  instruction = "",
 repo_details = None,
dict  jira_context = None 
)
+
+
Generates a commit summary by sending a POST request to the API endpoint.
+
+This function constructs a payload containing the git diff and any additional
+instructions provided. It then sends this payload to a specified API endpoint
+to generate a summary of the commit. If the request is successful, it returns
+the response from the API; otherwise, it returns None. The function also
+handles optional repository details and JIRA context if they are provided.
+
+Args:
+    git_diff (str): The git diff of the commit.
+    instruction (str): Additional instruction for the commit. Defaults to "".
+    repo_details (dict): Details of the git repository. Defaults to None.
+    jira_context (dict): JIRA issue details to enhance the commit summary. Defaults to None.
+
+Returns:
+    dict: The response from the API if the request is successful, None otherwise.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ generate_commit_summary_with_llm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.generate_commit_summary_with_llm ( self,
 diff,
 message,
bool generate_description,
 repo_details,
LLMClient llm_client,
 jira_context = None 
)
+
+
Generates a commit summary using a local LLM client; falls back to API on
+error.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_api_key()

+ +
+
+ + + + + + + + +
def penify_hook.api_client.APIClient.get_api_key ( self)
+
+
Fetch an API key from a specified URL using a Bearer token.
+
+
+ +

◆ get_supported_file_types()

+ +
+
+ + + + + + + + +
list[str] penify_hook.api_client.APIClient.get_supported_file_types ( self)
+
+
Retrieve supported file types from the API or return a default list.
+
+
+ +

◆ send_file_for_docstring_generation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.send_file_for_docstring_generation ( self,
 file_name,
 content,
 line_numbers,
 repo_details = None 
)
+
+
Send file content and modified lines to the API and return modified content.
+
+
+

Member Data Documentation

+ +

◆ api_url

+ +
+
+ + + + +
penify_hook.api_client.APIClient.api_url
+
+ +
+
+ +

◆ AUTH_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.AUTH_TOKEN
+
+ +
+
+ +

◆ BEARER_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.BEARER_TOKEN
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js new file mode 100644 index 0000000..be81d43 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js @@ -0,0 +1,12 @@ +var classpenify__hook_1_1api__client_1_1APIClient = +[ + [ "__init__", "classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086", null ], + [ "generate_commit_summary", "classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce", null ], + [ "generate_commit_summary_with_llm", "classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3", null ], + [ "get_api_key", "classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99", null ], + [ "get_supported_file_types", "classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402", null ], + [ "send_file_for_docstring_generation", "classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3", null ], + [ "api_url", "classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872", null ], + [ "AUTH_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237", null ], + [ "BEARER_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map new file mode 100644 index 0000000..05e004c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 new file mode 100644 index 0000000..2c7b583 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 @@ -0,0 +1 @@ +92a3e9cee2cd5e4975e6a42b548f0d62 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg new file mode 100644 index 0000000..fe24d95 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +penify_hook.api_client.APIClient + + + +Node1 + + +penify_hook.api_client.APIClient + ++ api_url ++ AUTH_TOKEN ++ BEARER_TOKEN + ++ __init__() ++ send_file_for_docstring +_generation() ++ generate_commit_summary() ++ get_supported_file +_types() ++ generate_commit_summary +_with_llm() ++ get_api_key() + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map new file mode 100644 index 0000000..86604e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 new file mode 100644 index 0000000..b12cf91 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 @@ -0,0 +1 @@ +ea70dd7bbb840c4828c970ec1a8f5446 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg new file mode 100644 index 0000000..b3f0027 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map new file mode 100644 index 0000000..fa6ff5d --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 new file mode 100644 index 0000000..186981a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 @@ -0,0 +1 @@ +6b1ca4842de706fb2f00719bcb509a8b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg new file mode 100644 index 0000000..7970d85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg new file mode 100644 index 0000000..8567a2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html new file mode 100644 index 0000000..b1256ae --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html new file mode 100644 index 0000000..f71d097 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer.BaseAnalyzer Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.base_analyzer.BaseAnalyzer Class Reference
+
+
+
+Inheritance diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+
+Collaboration diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+ + + + +

+Public Member Functions

def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.base_analyzer.BaseAnalyzer.__init__ ( self,
str folder_path,
APIClient api_client 
)
+
+
+

Member Data Documentation

+ +

◆ api_client

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.api_client
+
+ +
+
+ +

◆ folder_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.folder_path
+
+ +
+
+ +

◆ relative_file_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.relative_file_path
+
+ +
+
+ +

◆ repo

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo
+
+ +
+
+ +

◆ repo_details

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_details
+
+ +
+
+ +

◆ repo_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_path
+
+ +
+
+ +

◆ supported_file_types

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.supported_file_types
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js new file mode 100644 index 0000000..026bd02 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js @@ -0,0 +1,11 @@ +var classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer = +[ + [ "__init__", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344", null ], + [ "api_client", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2", null ], + [ "folder_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25", null ], + [ "relative_file_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4", null ], + [ "repo", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369", null ], + [ "repo_details", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5", null ], + [ "repo_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499", null ], + [ "supported_file_types", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map new file mode 100644 index 0000000..da4b46d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 new file mode 100644 index 0000000..8f67765 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 @@ -0,0 +1 @@ +ba0c3a1d5b95dea65df70168e43976e0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg new file mode 100644 index 0000000..c7b4e4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg @@ -0,0 +1,33 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map new file mode 100644 index 0000000..a407121 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 new file mode 100644 index 0000000..cb38209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 @@ -0,0 +1 @@ +63e8393eea1557a855929943cd8aca92 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg new file mode 100644 index 0000000..7dc042a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg new file mode 100644 index 0000000..0ec411d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg @@ -0,0 +1,127 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html new file mode 100644 index 0000000..a9ff912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.commit_analyzer.CommitDocGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.commit_analyzer.CommitDocGenHook, including all inherited members.

+ + + + + + + +
__init__(self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)penify_hook.commit_analyzer.CommitDocGenHook
_amend_commit(self)penify_hook.commit_analyzer.CommitDocGenHookprivate
get_summary(self, str instruction, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
llm_clientpenify_hook.commit_analyzer.CommitDocGenHook
process_jira_integration(self, str title, str description, str msg)penify_hook.commit_analyzer.CommitDocGenHook
run(self, Optional[str] msg, bool edit_commit_message, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html new file mode 100644 index 0000000..a6450e7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer.CommitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.commit_analyzer.CommitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)
 
dict get_summary (self, str instruction, bool generate_description)
 
def run (self, Optional[str] msg, bool edit_commit_message, bool generate_description)
 
tuple process_jira_integration (self, str title, str description, str msg)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 llm_client
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+ + + +

+Private Member Functions

def _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client,
 llm_client = None,
 jira_client = None 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _amend_commit()

+ +
+
+ + + + + +
+ + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook._amend_commit ( self)
+
+private
+
+
Amends the last commit message in the repository.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
dict penify_hook.commit_analyzer.CommitDocGenHook.get_summary ( self,
str instruction,
bool generate_description 
)
+
+
Generate a summary for the commit based on the staged changes.
+
+This function retrieves the differences of the staged changes in the repository
+and generates a commit summary using the provided instruction. If there are no
+changes staged for commit, an exception is raised. If a JIRA client is
+connected, it will attempt to extract issue keys from the current branch and
+use them to fetch context. The summary can be generated either with a Language
+Model (LLM) client or through the API client.
+
+Args:
+    instruction (str): A string containing instructions for generating the commit summary.
+    generate_description (bool): Whether to include detailed descriptions in the summary.
+
+Raises:
+    ValueError: If there are no changes staged for commit.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_jira_integration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration ( self,
str title,
str description,
str msg 
)
+
+
Process JIRA integration by extracting issue keys from commit message
+components and branch name.
+
+This function looks for JIRA issue keys in the provided commit title,
+description, original user message, and the active branch name. It uses these
+keys to update the commit message with JIRA information and adds comments to
+the corresponding JIRA issues. If no keys are found, it logs a warning.
+
+Args:
+    title (str): The generated commit title.
+    description (str): The generated commit description.
+    msg (str): The original user message that might contain JIRA references.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with included JIRA
+        information.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook.run ( self,
Optional[str] msg,
bool edit_commit_message,
bool generate_description 
)
+
+
Run the post-commit hook.
+
+This method processes the modified files from the last commit, stages them, and
+creates an auto-commit with an optional message. It also handles JIRA
+integration if available. If there is an error generating the commit summary,
+an exception is raised.
+
+Args:
+    msg (Optional[str]): An optional message to include in the commit.
+    edit_commit_message (bool): A flag indicating whether to open the git commit
+        edit terminal after committing.
+    generate_description (bool): A flag indicating whether to include a description
+        in the commit message.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ llm_client

+ +
+
+ + + + +
penify_hook.commit_analyzer.CommitDocGenHook.llm_client
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js new file mode 100644 index 0000000..77da79e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js @@ -0,0 +1,9 @@ +var classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e", null ], + [ "_amend_commit", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca", null ], + [ "get_summary", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37", null ], + [ "process_jira_integration", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f", null ], + [ "run", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9", null ], + [ "llm_client", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map new file mode 100644 index 0000000..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map new file mode 100644 index 0000000..c4c0415 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 new file mode 100644 index 0000000..d530502 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 @@ -0,0 +1 @@ +503804b19fd6263bc4d634da365fcb38 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg new file mode 100644 index 0000000..876ec67 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg new file mode 100644 index 0000000..4cb8182 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg @@ -0,0 +1,180 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map new file mode 100644 index 0000000..45b7af5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 new file mode 100644 index 0000000..96b4195 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 @@ -0,0 +1 @@ +ad1182651b0cfe9906faf8af31cf667d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg new file mode 100644 index 0000000..72f52e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg new file mode 100644 index 0000000..2e46cc5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map new file mode 100644 index 0000000..bced407 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 new file mode 100644 index 0000000..fffc366 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 @@ -0,0 +1 @@ +086b563bbc1068f3e0325d4a68d5bd17 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg new file mode 100644 index 0000000..1a0196d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map new file mode 100644 index 0000000..d518791 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 new file mode 100644 index 0000000..0536af9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 @@ -0,0 +1 @@ +fb0bae9cf2f7e07ac778eed1297c327b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg new file mode 100644 index 0000000..eb672c4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook._amend_commit + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map new file mode 100644 index 0000000..5f79a9a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 new file mode 100644 index 0000000..76d8830 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 @@ -0,0 +1 @@ +4cfab920326b3a6b29c805803ac72558 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg new file mode 100644 index 0000000..fbb1bd6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg new file mode 100644 index 0000000..28c33ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg @@ -0,0 +1,86 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map new file mode 100644 index 0000000..81bb08e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 new file mode 100644 index 0000000..cf1b6d3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 @@ -0,0 +1 @@ +3cd15e6828a60d49cece5c87177581df \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg new file mode 100644 index 0000000..f2f541f --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 new file mode 100644 index 0000000..5f2103d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 @@ -0,0 +1 @@ +95c682625e7209c65fce50a4bb060a81 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg new file mode 100644 index 0000000..d985a2a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 new file mode 100644 index 0000000..39adea9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 @@ -0,0 +1 @@ +534bd5898147e11eac4c0e46a39c7860 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg new file mode 100644 index 0000000..8cebb40 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html new file mode 100644 index 0000000..ba8e9a1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.file_analyzer.FileAnalyzerGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html new file mode 100644 index 0000000..d7f5c79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+
+ + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str file_path, APIClient api_client)
 
def process_file (self, file_path, pbar, str new_param="")
 
def print_processing (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 file_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.__init__ ( self,
str file_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing ( self,
 file_path 
)
+
+
Prints a message indicating that a file is being processed.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.process_file ( self,
 file_path,
 pbar,
str  new_param = "" 
)
+
+
Processes a file by validating its extension, reading content,
+generating documentation, and writing changes back to the file.  The function
+performs several stages of processing: 1. Validates the file's extension to
+ensure it is supported. 2. Reads the content of the file. 3. Sends the file
+content for documentation generation. 4. Writes the generated documentation
+back to the file if there are changes.
+
+Args:
+    file_path (str): The path of the file to be processed.
+    pbar (tqdm.tqdm): A progress bar object to update the status of processing stages.
+    new_param (str?): An additional parameter for future use. Defaults to an empty string.
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.run ( self)
+
+
Runs the documentation process with a progress bar.
+
+This method orchestrates the documentation process by creating a progress bar,
+processing the file, and handling exceptions to ensure the progress bar
+completes properly. It updates the progress bar through various stages and
+provides feedback based on the result of the file processing.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ file_path

+ +
+
+ + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.file_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js new file mode 100644 index 0000000..56b1d3a --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b", null ], + [ "print_processing", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073", null ], + [ "process_file", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e", null ], + [ "run", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1", null ], + [ "file_path", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map new file mode 100644 index 0000000..c05e761 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 new file mode 100644 index 0000000..416cd78 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 @@ -0,0 +1 @@ +dd6dbfdde640f0bc6f1c0cc995a9b4fb \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg new file mode 100644 index 0000000..ebc39ac --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg new file mode 100644 index 0000000..e169853 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map new file mode 100644 index 0000000..b1658b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 new file mode 100644 index 0000000..8da8816 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 @@ -0,0 +1 @@ +dce29e772ed93d06e90894791ddc50ca \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg new file mode 100644 index 0000000..5462f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map new file mode 100644 index 0000000..d166069 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 new file mode 100644 index 0000000..f40daaf --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 @@ -0,0 +1 @@ +5c58a576c4056ea132d5a9cca6880cb6 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg new file mode 100644 index 0000000..d480dca --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg new file mode 100644 index 0000000..68f9912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg @@ -0,0 +1,204 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map new file mode 100644 index 0000000..9da4fb2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 new file mode 100644 index 0000000..a24f9ee --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 @@ -0,0 +1 @@ +e106885ca4b06113170f86da8447c21c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg new file mode 100644 index 0000000..af5e14f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html new file mode 100644 index 0000000..91b425f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.folder_analyzer.FolderAnalyzerGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html new file mode 100644 index 0000000..69ee205 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+ + + + + + + + + + +

+Public Member Functions

def __init__ (self, str dir_path, APIClient api_client)
 
def list_all_files_in_dir (self, str dir_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 dir_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__ ( self,
str dir_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir ( self,
str dir_path 
)
+
+
List all non-hidden files in a directory and its subdirectories.
+
+This function recursively traverses the specified directory and its
+subdirectories, collecting paths of all non-hidden files. It filters out hidden
+directories and files (those starting with a dot) to ensure only visible files
+are returned.
+
+Args:
+    dir_path (str): The path to the directory whose files and subdirectory files need to be listed.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.run ( self)
+
+
Run the post-commit hook and process files with a progress bar.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ dir_path

+ +
+
+ + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.dir_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js new file mode 100644 index 0000000..5b2a45e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js @@ -0,0 +1,7 @@ +var classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821", null ], + [ "list_all_files_in_dir", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec", null ], + [ "run", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc", null ], + [ "dir_path", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map new file mode 100644 index 0000000..b96ef6a --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 new file mode 100644 index 0000000..4aed41f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 @@ -0,0 +1 @@ +e2a0ef57ef0713a63ba1c8ee5591e9f5 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg new file mode 100644 index 0000000..dd93702 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map new file mode 100644 index 0000000..fb5d687 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 new file mode 100644 index 0000000..88516d8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 @@ -0,0 +1 @@ +a3c6817cbc08f61a1a5f2b81334ae3dc \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg new file mode 100644 index 0000000..3e978da --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.run + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html new file mode 100644 index 0000000..47bcddc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.git_analyzer.GitDocGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html new file mode 100644 index 0000000..2922e41 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer.GitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.git_analyzer.GitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str repo_path, APIClient api_client)
 
def get_modified_files_in_last_commit (self)
 
def get_modified_lines (self, diff_text)
 
def process_file (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ get_modified_files_in_last_commit()

+ +
+
+ + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit ( self)
+
+
Get the list of files modified in the last commit.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_modified_lines()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.get_modified_lines ( self,
 diff_text 
)
+
+
Extract modified line numbers from a diff text.
+
+This function processes a diff text to identify and extract the line numbers
+that have been modified. It distinguishes between added and deleted lines and
+keeps track of the current line number as it parses through the diff. The
+function handles hunk headers and ensures that any deletions at the end of the
+file are also captured.
+
+Args:
+    diff_text (str): A string containing the diff text to be processed.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.process_file ( self,
 file_path 
)
+
+
Processes a file by checking its type, reading its content, and sending it to
+an API.
+
+This method constructs the absolute path of the specified file and verifies if
+the file has a valid extension. If the file type is supported, it reads the
+content of the file and retrieves the differences from the last commit in the
+repository. If changes are detected, it sends the file content along with the
+modified lines to an API for further processing. If the API response indicates
+no changes, the original file will not be overwritten.
+
+Args:
+    file_path (str): The relative path to the file to be processed.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.run ( self)
+
+
Run the post-commit hook.
+
+This method retrieves the list of modified files from the last commit and
+processes each file. It stages any files that have been modified during
+processing and creates an auto-commit if changes were made. A progress bar is
+displayed to indicate the processing status of each file. The method handles
+any exceptions that occur during file processing, printing an error message for
+each file that fails to process. If any modifications are made to the files, an
+auto-commit is created to save those changes.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js new file mode 100644 index 0000000..553f118 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1git__analyzer_1_1GitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c", null ], + [ "get_modified_files_in_last_commit", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481", null ], + [ "get_modified_lines", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd", null ], + [ "process_file", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85", null ], + [ "run", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map new file mode 100644 index 0000000..f66377c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 new file mode 100644 index 0000000..bfda978 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 @@ -0,0 +1 @@ +d30b2fe6c8ef2ddf32a8fa6ab13a25f2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg new file mode 100644 index 0000000..78f9802 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map new file mode 100644 index 0000000..7d6cbb4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 new file mode 100644 index 0000000..519d9fc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 @@ -0,0 +1 @@ +4e6accfb0097a03bb56e2f390d46b980 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg new file mode 100644 index 0000000..41b0db0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map new file mode 100644 index 0000000..7d6a6aa --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 new file mode 100644 index 0000000..e94ad2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 @@ -0,0 +1 @@ +c545389fcb803268668d7fa34c6d8fd9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg new file mode 100644 index 0000000..0c109b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map new file mode 100644 index 0000000..2bd16a0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 new file mode 100644 index 0000000..cda212c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 @@ -0,0 +1 @@ +4498c89a026edc471fa55e435c85053e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg new file mode 100644 index 0000000..684d392 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg new file mode 100644 index 0000000..91ef970 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 new file mode 100644 index 0000000..4c4eb97 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 @@ -0,0 +1 @@ +eb87828bf186415180fe0c4a9a69bffa \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg new file mode 100644 index 0000000..cec3173 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 new file mode 100644 index 0000000..756ea69 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 @@ -0,0 +1 @@ +3a80069fcc09aa58b795925a04c3a1a9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg new file mode 100644 index 0000000..caf1235 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map new file mode 100644 index 0000000..10ddcfb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 new file mode 100644 index 0000000..5dc8e1b --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 @@ -0,0 +1 @@ +1071229abc0a24fe1359fe7763b4c8d0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg new file mode 100644 index 0000000..c278664 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg new file mode 100644 index 0000000..b1e00b5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html new file mode 100644 index 0000000..83deb35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.jira_client.JiraClient Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html new file mode 100644 index 0000000..8fabaf4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,774 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client.JiraClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.jira_client.JiraClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.jira_client.JiraClient:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str jira_url=None, str jira_user=None, str jira_api_token=None)
 
bool is_connected (self)
 
List[str] extract_issue_keys_from_branch (self, str branch_name)
 
List[str] extract_issue_keys (self, str text)
 
Optional[Dict[str, Any]] get_issue_details (self, str issue_key)
 
bool add_comment (self, str issue_key, str comment)
 
bool update_issue_status (self, str issue_key, str transition_name)
 
tuple format_commit_message_with_jira_info (self, str commit_title, str commit_description, List[str] issue_keys=None)
 
Dict[str, Any] get_detailed_issue_context (self, str issue_key)
 
Dict[str, Any] get_commit_context_from_issues (self, List[str] issue_keys)
 
tuple enhance_commit_message (self, str title, str description, List[str] issue_keys)
 
+ + + + + + + + + +

+Public Attributes

 jira_url
 
 jira_user
 
 jira_api_token
 
 jira_client
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.jira_client.JiraClient.__init__ ( self,
str  jira_url = None,
str  jira_user = None,
str  jira_api_token = None 
)
+
+
Initialize the JIRA client.
+
+Args:
+    jira_url: Base URL for JIRA instance (e.g., "https://your-domain.atlassian.net")
+    jira_user: JIRA username or email
+    jira_api_token: JIRA API token
+
+
+
+

Member Function Documentation

+ +

◆ add_comment()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.add_comment ( self,
str issue_key,
str comment 
)
+
+
Adds a comment to a JIRA issue.
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ enhance_commit_message()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.enhance_commit_message ( self,
str title,
str description,
List[str] issue_keys 
)
+
+
Enhance a commit message with business and technical context from JIRA issues.
+
+This function first checks if the list of issue keys is empty or if there is no
+connection. If so, it returns the original title and description without
+modification. It then retrieves context information from the specified JIRA
+issues. If the primary issue is missing, it formats the commit message with
+basic JIRA info.  The function enhances the commit title by prefixing it with
+the primary issue key if not already included. It appends a business context
+section to the description, including details like issue type, status,
+priority, sprint, acceptance criteria, and a condensed issue description. If
+comments are available, they are added as technical notes. Finally, related
+issues are listed.
+
+Args:
+    title (str): Original commit title.
+    description (str): Original commit description.
+    issue_keys (List[str]): List of JIRA issue keys to include in the enhanced commit message.
+
+Returns:
+    tuple: A tuple containing the enhanced commit title and description with added
+        context from JIRA issues.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ extract_issue_keys()

+ +
+
+ + + + + + + + + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys ( self,
str text 
)
+
+
Extract unique JIRA issue keys from the given text.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ extract_issue_keys_from_branch()

+ +
+
+ + + + + + + + + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch ( self,
str branch_name 
)
+
+
Extracts unique JIRA issue keys from a branch name.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ format_commit_message_with_jira_info()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info ( self,
str commit_title,
str commit_description,
List[str]  issue_keys = None 
)
+
+
Format commit message with JIRA issue information.
+
+This function updates the provided commit title and description by
+incorporating JIRA issue keys. If no issue keys are supplied, it extracts them
+from the commit title and description. It then formats the commit title to
+include the first issue key if not already present and appends detailed
+information about each issue to the commit description.
+
+Args:
+    commit_title (str): The original commit title.
+    commit_description (str): The original commit description.
+    issue_keys (List[str]?): A list of JIRA issue keys to include in the commit message. If not
+        provided, issue keys will be extracted from both the title and the description.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with JIRA
+        information included.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_commit_context_from_issues()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_commit_context_from_issues ( self,
List[str] issue_keys 
)
+
+
Gather contextual information from JIRA issues to improve commit messages.
+
+This function processes a list of JIRA issue keys, retrieves detailed context
+for each issue, and aggregates it into a dictionary that can be used to enhance
+commit messages. It first retrieves the primary issue (the first key in the
+list) and then gathers basic details for any related issues. The resulting
+context includes information from both the primary and related issues, along
+with all issue keys.
+
+Args:
+    issue_keys: List of JIRA issue keys to gather information from
+
+Returns:
+    Dict containing business and technical context from the issues
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_detailed_issue_context()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_detailed_issue_context ( self,
str issue_key 
)
+
+
Retrieve comprehensive details about a JIRA issue including context for better
+commit messages.
+
+This function fetches detailed information from a specified JIRA issue and
+constructs a dictionary containing various context fields such as the issue
+summary, description, type, status, priority, comments, URL, and additional
+custom fields like acceptance criteria and sprint information. It handles
+errors by logging appropriate warnings or errors.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Returns:
+    Dict[str, Any]: A dictionary containing business and technical context from the issue.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_issue_details()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Optional[Dict[str, Any]] penify_hook.jira_client.JiraClient.get_issue_details ( self,
str issue_key 
)
+
+
Retrieve details of a JIRA issue based on its key.
+
+This function fetches detailed information about a specified JIRA issue using
+the provided issue key. It first checks if the JIRA client is connected; if
+not, it logs a warning and returns `None`. If connected, it attempts to
+retrieve the issue from the JIRA server. On success, it constructs and returns
+a dictionary containing various details such as the issue's key, summary,
+status, description, assignee, reporter, type, priority, and URL. Errors during
+this process are logged, and `None` is returned.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ is_connected()

+ +
+
+ + + + + + + + +
bool penify_hook.jira_client.JiraClient.is_connected ( self)
+
+
Check if the JIRA client is connected.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ update_issue_status()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.update_issue_status ( self,
str issue_key,
str transition_name 
)
+
+
Update the status of a JIRA issue.
+
+This method checks if the JIRA client is connected, retrieves available
+transitions for the given issue, finds the transition ID by name, and updates
+the issue's status accordingly. If any step fails or the specified transition
+is not found, appropriate logs are generated, and False is returned.
+
+Args:
+    issue_key (str): The key of the JIRA issue to be updated.
+    transition_name (str): The name of the desired transition.
+
+Returns:
+    bool: True if the status was successfully updated, False otherwise.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ jira_api_token

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_api_token
+
+ +
+
+ +

◆ jira_client

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_client
+
+ +
+
+ +

◆ jira_url

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_url
+
+ +
+
+ +

◆ jira_user

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_user
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js new file mode 100644 index 0000000..f68eed5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js @@ -0,0 +1,18 @@ +var classpenify__hook_1_1jira__client_1_1JiraClient = +[ + [ "__init__", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5", null ], + [ "add_comment", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1", null ], + [ "enhance_commit_message", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760", null ], + [ "extract_issue_keys", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7", null ], + [ "extract_issue_keys_from_branch", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c", null ], + [ "format_commit_message_with_jira_info", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23", null ], + [ "get_commit_context_from_issues", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd", null ], + [ "get_detailed_issue_context", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746", null ], + [ "get_issue_details", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a", null ], + [ "is_connected", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8", null ], + [ "update_issue_status", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826", null ], + [ "jira_api_token", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9", null ], + [ "jira_client", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6", null ], + [ "jira_url", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197", null ], + [ "jira_user", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map new file mode 100644 index 0000000..2bc82ba --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 new file mode 100644 index 0000000..fd79a8c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 @@ -0,0 +1 @@ +6c94c8bb54063a87c9a021e499d2535a \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg new file mode 100644 index 0000000..9d17916 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.jira_client.JiraClient + + + +Node1 + + +penify_hook.jira_client. +JiraClient + ++ jira_url ++ jira_user ++ jira_api_token ++ jira_client + ++ __init__() ++ is_connected() ++ extract_issue_keys +_from_branch() ++ extract_issue_keys() ++ get_issue_details() ++ add_comment() ++ update_issue_status() ++ format_commit_message +_with_jira_info() ++ get_detailed_issue +_context() ++ get_commit_context +_from_issues() ++ enhance_commit_message() + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map new file mode 100644 index 0000000..0aabfe7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 new file mode 100644 index 0000000..15413c7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 @@ -0,0 +1 @@ +e49f7a18c7f7394bc3ba168c4b7dfcbf \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg new file mode 100644 index 0000000..8976bbb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg new file mode 100644 index 0000000..3d42518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg @@ -0,0 +1,176 @@ + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map new file mode 100644 index 0000000..d9cf631 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 new file mode 100644 index 0000000..bf358a8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 @@ -0,0 +1 @@ +c2b8f7eecd95ef8d0186d7f206ad610c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg new file mode 100644 index 0000000..8f34c4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg new file mode 100644 index 0000000..b16e395 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map new file mode 100644 index 0000000..18d2610 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 new file mode 100644 index 0000000..c70fc7f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 @@ -0,0 +1 @@ +3fdd0ff288b79c613c0ccbdde81f6b44 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg new file mode 100644 index 0000000..da43481 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg new file mode 100644 index 0000000..d90f209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg @@ -0,0 +1,78 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map new file mode 100644 index 0000000..9762fa4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 new file mode 100644 index 0000000..58d4f7d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 @@ -0,0 +1 @@ +e64b34f639342bc29f69697ff85b6115 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg new file mode 100644 index 0000000..bff31d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map new file mode 100644 index 0000000..3b9c39b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 new file mode 100644 index 0000000..e84f7d7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 @@ -0,0 +1 @@ +ce0d7d39675e66eb580380759195be0e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg new file mode 100644 index 0000000..4ad6e4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map new file mode 100644 index 0000000..7074523 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 new file mode 100644 index 0000000..584c012 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 @@ -0,0 +1 @@ +b4d0f6392752d140ca4858cea5527f74 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg new file mode 100644 index 0000000..0945c22 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg new file mode 100644 index 0000000..6d9824e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg @@ -0,0 +1,80 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map new file mode 100644 index 0000000..9fb10de --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 new file mode 100644 index 0000000..d953518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 @@ -0,0 +1 @@ +9194291c6b536fb2aa39473066ce3d57 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg new file mode 100644 index 0000000..036f520 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg new file mode 100644 index 0000000..9f7cbe1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg @@ -0,0 +1,153 @@ + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map new file mode 100644 index 0000000..f7e25fe --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 new file mode 100644 index 0000000..ea4f60f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 @@ -0,0 +1 @@ +01a09828002214953a0e4ce5a004f82b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg new file mode 100644 index 0000000..6bfdd52 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map new file mode 100644 index 0000000..a54aa35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 new file mode 100644 index 0000000..8cce519 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 @@ -0,0 +1 @@ +be0799c63ed63825acfa4aefd053a607 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg new file mode 100644 index 0000000..dcc9f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map new file mode 100644 index 0000000..2e5bc9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 new file mode 100644 index 0000000..562794f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 @@ -0,0 +1 @@ +de5b0ac337604f2c79dc74aaee0a1763 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg new file mode 100644 index 0000000..d83a7d1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map new file mode 100644 index 0000000..7028556 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 new file mode 100644 index 0000000..cc19180 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 @@ -0,0 +1 @@ +8ed68fcd41631bf9876f85ae6b4b3de2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg new file mode 100644 index 0000000..06c5c4d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map new file mode 100644 index 0000000..75c520f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 new file mode 100644 index 0000000..b855a20 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 @@ -0,0 +1 @@ +2e42fe22a9070fc3f543991e99faf205 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg new file mode 100644 index 0000000..e1b859e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.update_issue_status + + + +Node1 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map new file mode 100644 index 0000000..3722ccb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 new file mode 100644 index 0000000..f452c00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 @@ -0,0 +1 @@ +f5fed9d6bb8f646e32b31343d031871d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg new file mode 100644 index 0000000..b80a9d9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg new file mode 100644 index 0000000..1e3bc11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map new file mode 100644 index 0000000..b89125f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 new file mode 100644 index 0000000..990f237 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 @@ -0,0 +1 @@ +e8676c5f3006c0807c1fe30ed75a7701 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg new file mode 100644 index 0000000..0587bf7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg @@ -0,0 +1,85 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node4 + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map new file mode 100644 index 0000000..5f09a4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 new file mode 100644 index 0000000..3221326 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 @@ -0,0 +1 @@ +8e9085e7e96a72eae434ab3b9bb34f71 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg new file mode 100644 index 0000000..bd95f00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html new file mode 100644 index 0000000..ddf5a68 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.llm_client.LLMClient Member List
+
+
+ +

This is the complete list of members for penify_hook.llm_client.LLMClient, including all inherited members.

+ + + + + + +
__init__(self, str model=None, str api_base=None, str api_key=None)penify_hook.llm_client.LLMClient
_litellmpenify_hook.llm_client.LLMClientprivate
generate_commit_summary(self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)penify_hook.llm_client.LLMClient
litellm(self)penify_hook.llm_client.LLMClient
modelpenify_hook.llm_client.LLMClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html new file mode 100644 index 0000000..9602aee --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client.LLMClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.llm_client.LLMClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.llm_client.LLMClient:
+
+
+
+
+ + + + + + + + +

+Public Member Functions

def __init__ (self, str model=None, str api_base=None, str api_key=None)
 
def litellm (self)
 
Dict generate_commit_summary (self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)
 
+ + + +

+Public Attributes

 model
 
+ + + +

+Private Attributes

 _litellm
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.llm_client.LLMClient.__init__ ( self,
str  model = None,
str  api_base = None,
str  api_key = None 
)
+
+
Initialize the LLM client.
+
+Args:
+    model: LLM model to use (e.g., "gpt-4", "ollama/llama2", etc.)
+    api_base: Base URL for API requests (e.g., "http://localhost:11434" for Ollama)
+    api_key: API key for the LLM service
+
+
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dict penify_hook.llm_client.LLMClient.generate_commit_summary ( self,
str diff,
str message,
bool generate_description,
Dict repo_details,
Dict  jira_context = None 
)
+
+
Generate a concise and descriptive commit summary based on Git diff, user
+instructions, repository details, and optional JIRA context.
+
+This function constructs a prompt for an LLM to produce a commit title and, if
+requested, a detailed description. The summary adheres to Semantic Commit
+Messages guidelines. If JIRA context is provided, it enriches the prompt with
+relevant issue information.
+
+Args:
+    diff (str): Git diff of changes.
+    message (str): User-provided commit message or instructions.
+    generate_description (bool): Flag indicating whether to include a detailed description in the summary.
+    repo_details (Dict): Details about the repository.
+    jira_context (Dict?): Optional JIRA issue context to enhance the summary.
+
+Returns:
+    Dict: A dictionary containing the title and description for the commit. If
+        `generate_description` is False, the 'description' key may be absent.
+
+Raises:
+    ValueError: If the LLM model is not configured.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ litellm()

+ +
+
+ + + + + + + + +
def penify_hook.llm_client.LLMClient.litellm ( self)
+
+
Returns the litellm module, loading it if necessary.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ _litellm

+ +
+
+ + + + + +
+ + + + +
penify_hook.llm_client.LLMClient._litellm
+
+private
+
+ +
+
+ +

◆ model

+ +
+
+ + + + +
penify_hook.llm_client.LLMClient.model
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js new file mode 100644 index 0000000..719b127 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1llm__client_1_1LLMClient = +[ + [ "__init__", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764", null ], + [ "generate_commit_summary", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000", null ], + [ "litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e", null ], + [ "_litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362", null ], + [ "model", "classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map new file mode 100644 index 0000000..dcac6b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 new file mode 100644 index 0000000..6db17d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 @@ -0,0 +1 @@ +98e4897c5b45a162671e50e760d299ce \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg new file mode 100644 index 0000000..40f016c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.llm_client.LLMClient + + + +Node1 + + +penify_hook.llm_client.LLMClient + ++ model +- _litellm + ++ __init__() ++ litellm() ++ generate_commit_summary() + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map new file mode 100644 index 0000000..5d480bd --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 new file mode 100644 index 0000000..5ae4b79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 @@ -0,0 +1 @@ +3a38b34ed8236aa424f3ba243fba3cf0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg new file mode 100644 index 0000000..047611c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map new file mode 100644 index 0000000..4094a12 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 new file mode 100644 index 0000000..6c5244f --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 @@ -0,0 +1 @@ +2232db7a39aade439b305a1e3373c005 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg new file mode 100644 index 0000000..212c293 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map new file mode 100644 index 0000000..12bd8c0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 new file mode 100644 index 0000000..22a2946 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 @@ -0,0 +1 @@ +3dd9f4364bc4c50da31157ac03a3e97f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg new file mode 100644 index 0000000..1a42767 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg new file mode 100644 index 0000000..13d364a --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html new file mode 100644 index 0000000..5738acd --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils.GitRepoNotFoundError Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.utils.GitRepoNotFoundError Class Reference
+
+
+
+Inheritance diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
+
+Collaboration diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map new file mode 100644 index 0000000..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 new file mode 100644 index 0000000..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg new file mode 100644 index 0000000..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg @@ -0,0 +1,46 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node2 + + +Exception + + + + + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map new file mode 100644 index 0000000..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 new file mode 100644 index 0000000..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg new file mode 100644 index 0000000..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node2 + + +Exception + + + + + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html new file mode 100644 index 0000000..59b41b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_commit_commands.TestCommitCommands Member List
+
+
+ +

This is the complete list of members for tests.test_commit_commands.TestCommitCommands, including all inherited members.

+ + + + + + + + + + + + + +
mock_api_client(self)tests.test_commit_commands.TestCommitCommands
mock_commit_doc_gen(self)tests.test_commit_commands.TestCommitCommands
mock_git_folder_search(self)tests.test_commit_commands.TestCommitCommands
mock_jira_client(self)tests.test_commit_commands.TestCommitCommands
mock_llm_client(self)tests.test_commit_commands.TestCommitCommands
mock_print_functions(self)tests.test_commit_commands.TestCommitCommands
test_commit_code_error_handling(self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_connection_failure(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_llm_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_handle_commit(self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)tests.test_commit_commands.TestCommitCommands
test_setup_commit_parser(self)tests.test_commit_commands.TestCommitCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html new file mode 100644 index 0000000..5bd6f4b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,791 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands.TestCommitCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_commit_commands.TestCommitCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_commit_commands.TestCommitCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def mock_api_client (self)
 
def mock_llm_client (self)
 
def mock_jira_client (self)
 
def mock_commit_doc_gen (self)
 
def mock_git_folder_search (self)
 
def mock_print_functions (self)
 
def test_commit_code_with_llm_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)
 
def test_commit_code_with_jira_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)
 
def test_commit_code_with_jira_connection_failure (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)
 
def test_commit_code_error_handling (self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)
 
def test_setup_commit_parser (self)
 
def test_handle_commit (self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)
 
+

Member Function Documentation

+ +

◆ mock_api_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_api_client ( self)
+
+
Mocks an instance of APIClient using unittest.mock.
+
+This function creates a mock object for APIClient and yields it along
+with the mocked instance. It is useful for testing purposes where real
+API calls should be avoided.
+
+Yields:
+    tuple: A tuple containing the mock of APIClient and the mocked instance of
+        APIClient.
+
+
+
+ +

◆ mock_commit_doc_gen()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_commit_doc_gen ( self)
+
+
Mocks the CommitDocGenHook class and returns a MagicMock instance.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to create a mock of the `CommitDocGenHook` class. It then sets up this
+mock to return a new `MagicMock` instance when invoked. The function
+yields both the mock object and the mocked instance, allowing for easy
+testing of functions that rely on `CommitDocGenHook`.
+
+Returns:
+    tuple: A tuple containing two elements:
+        - mock (patch): The patch object used to mock the `CommitDocGenHook`
+        class.
+        - doc_gen_instance (MagicMock): The mocked instance of
+        `CommitDocGenHook`.
+
+
+
+ +

◆ mock_git_folder_search()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_git_folder_search ( self)
+
+
Mock the `recursive_search_git_folder` function to return a predefined
+git folder path.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to intercept calls to `penify_hook.utils.recursive_search_git_folder`.
+When called, it will return '/mock/git/folder' instead of performing an
+actual search. This is useful for testing purposes where you need a
+consistent response without interacting with the file system.
+
+Yields:
+    MagicMock: A mock object that simulates the `recursive_search_git_folder` function.
+
+
+
+ +

◆ mock_jira_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_jira_client ( self)
+
+
Create a mock JIRA client for testing purposes.
+
+This function yields a tuple containing a mock JIRA client instance and
+its `is_connected` method. The mock client is configured to simulate an
+active connection. This is useful for unit tests that require
+interaction with a JIRA client without making actual network calls.
+
+Yields:
+    tuple: A tuple containing the mocked JIRA client instance and its
+        `is_connected` method.
+
+
+
+ +

◆ mock_llm_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_llm_client ( self)
+
+
Mock an instance of LLMClient for testing purposes.
+
+This function yields a mock object representing an instance of
+LLMClient, which can be used to simulate interactions with a language
+model during testing. The mock is patched to replace the actual
+LLMClient class from the penify_hook module.
+
+Yields:
+    tuple: A tuple containing two elements:
+        - mock (MagicMock): The mock object for LLMClient.
+        - llm_client_instance (MagicMock): An instance of the mocked LLMClient.
+
+
+
+ +

◆ mock_print_functions()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_print_functions ( self)
+
+
Mocks the print functions from `penify_hook.ui_utils` for testing
+purposes.
+
+This function uses Python's `unittest.mock.patch` to replace the actual
+print functions (`print`, `print_warning`, and `print_error`) with mock
+objects. These mock objects can be used in tests to capture calls made
+to these print functions without actually printing anything.
+
+Yields:
+    tuple: A tuple containing three mock objects corresponding to `print_info`,
+        `print_warning`,
+        and `print_error`.
+
+
+
+ +

◆ test_commit_code_error_handling()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling ( self,
 mock_print,
 mock_exit,
 mock_git_folder_search,
 mock_doc_gen,
 mock_api_client 
)
+
+
Test the error handling in the test_commit_code function.
+
+This function sets up mocks to simulate exceptions and test the error
+handling of the commit_code function. It verifies that the function
+correctly prints an error message and exits with a status code of 1 when
+an exception occurs during documentation generation.
+
+Args:
+    mock_print (MagicMock): Mock for the print function, used to verify error message output.
+    mock_exit (MagicMock): Mock for the sys.exit function, used to verify exit behavior.
+    mock_git_folder_search (MagicMock): Mock for the git_folder_search function, returning a mock Git folder
+        path.
+    mock_doc_gen (MagicMock): Mock for the doc_gen function, simulating an exception during
+        documentation generation.
+    mock_api_client (MagicMock): Mock for the API client class, not directly used but referenced in the
+        function signature.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_jira_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_jira_client,
 mock_llm_client,
 mock_api_client 
)
+
+
Test committing code using a JIRA client.
+
+This function tests the commit_code function with various parameters,
+including API and JIRA credentials. It sets up mock objects for
+dependencies such as the JIRA client, LLM client, and doc generator to
+simulate the behavior of the real classes. The function then calls
+commit_code and verifies that the JIRA client and doc generator are
+called with the correct parameters.
+
+Args:
+    mock_error (MagicMock): A MagicMock object for simulating error logging.
+    mock_warning (MagicMock): A MagicMock object for simulating warning logging.
+    mock_info (MagicMock): A MagicMock object for simulating info logging.
+    mock_git_folder_search (MagicMock): A MagicMock object for simulating the git folder search function.
+    mock_doc_gen (MagicMock): A MagicMock object for simulating the doc generator function.
+    mock_jira_client (MagicMock): A MagicMock object for simulating the JIRA client class.
+    mock_llm_client (MagicMock): A MagicMock object for simulating the LLM client class.
+    mock_api_client (MagicMock): A MagicMock object for simulating the API client class.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_jira_connection_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_jira_client,
 mock_api_client 
)
+
+
Test the commit_code function when JIRA connection fails.
+
+This function tests the scenario where the JIRA connection fails during
+a code commit. It sets up various mocks to simulate different components
+of the system and then calls the `commit_code` function with specific
+parameters. The function is expected to handle the JIRA connection
+failure gracefully by logging an appropriate warning.
+
+Args:
+    mock_error (MagicMock): Mock for error logging.
+    mock_warning (MagicMock): Mock for warning logging.
+    mock_info (MagicMock): Mock for info logging.
+    mock_git_folder_search (MagicMock): Mock for searching the Git folder.
+    mock_doc_gen (MagicMock): Mock for generating documentation.
+    mock_jira_client (MagicMock): Mock for creating a JIRA client.
+    mock_api_client (MagicMock): Mock for creating an API client.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_llm_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_llm_client,
 mock_api_client 
)
+
+
Test committing code using an LLM client.
+
+This function sets up mock objects for various components and then calls
+the `commit_code` function with specified parameters. It verifies that
+the correct mocks are created and called with the appropriate arguments.
+
+Args:
+    mock_error (MagicMock): Mock object for error handling.
+    mock_warning (MagicMock): Mock object for warning logging.
+    mock_info (MagicMock): Mock object for info logging.
+    mock_git_folder_search (MagicMock): Mock object to simulate git folder search.
+    mock_doc_gen (MagicMock): Mock object for document generation.
+    mock_llm_client (MagicMock): Mock object for LLM client interaction.
+    mock_api_client (MagicMock): Mock object for API client interaction.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_handle_commit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_handle_commit ( self,
 mock_print_info,
 mock_commit_code,
 mock_get_token,
 mock_get_llm_config,
 mock_get_jira_config 
)
+
+
Test the handle_commit function with various mock objects.
+
+This function sets up mocks for retrieving LLM configuration, JIRA
+configuration, and commit code. It then creates an argument object and
+calls the handle_commit function. Finally, it verifies that the mock
+functions were called with the expected arguments.
+
+Args:
+    mock_print_info (MagicMock): Mock object for printing information.
+    mock_commit_code (MagicMock): Mock object for committing code.
+    mock_get_token (MagicMock): Mock object for retrieving API token.
+    mock_get_llm_config (MagicMock): Mock object for retrieving LLM configuration.
+    mock_get_jira_config (MagicMock): Mock object for retrieving JIRA configuration.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_setup_commit_parser()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser ( self)
+
+
Set up the argument parser for the commit command.
+
+This function configures an argument parser to handle various options
+for committing changes. It adds three arguments: - '-m' or '--message':
+An optional argument to specify a contextual commit message with a
+default value of "N/A". - '-e' or '--terminal': A boolean flag to open
+an edit terminal before committing. - '-d' or '--description': A boolean
+flag that, when set to False, indicates the generation of a commit
+message with title and description.
+
+Args:
+    parser (MagicMock): The argument parser to be configured.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js new file mode 100644 index 0000000..46b59e3 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__commit__commands_1_1TestCommitCommands = +[ + [ "mock_api_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2", null ], + [ "mock_commit_doc_gen", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6", null ], + [ "mock_git_folder_search", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e", null ], + [ "mock_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be", null ], + [ "mock_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4", null ], + [ "mock_print_functions", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be", null ], + [ "test_commit_code_error_handling", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691", null ], + [ "test_commit_code_with_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b", null ], + [ "test_commit_code_with_jira_connection_failure", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e", null ], + [ "test_commit_code_with_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0", null ], + [ "test_handle_commit", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597", null ], + [ "test_setup_commit_parser", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map new file mode 100644 index 0000000..c06dd4a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 new file mode 100644 index 0000000..9d383d8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 @@ -0,0 +1 @@ +01c384c51b9b9d20ecd5af3519740055 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg new file mode 100644 index 0000000..71f1b91 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg @@ -0,0 +1,42 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands + + + ++ mock_api_client() ++ mock_llm_client() ++ mock_jira_client() ++ mock_commit_doc_gen() ++ mock_git_folder_search() ++ mock_print_functions() ++ test_commit_code_with +_llm_client() ++ test_commit_code_with +_jira_client() ++ test_commit_code_with +_jira_connection_failure() ++ test_commit_code_error +_handling() ++ test_setup_commit_parser() ++ test_handle_commit() + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map new file mode 100644 index 0000000..cb1751e --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 new file mode 100644 index 0000000..f317412 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 @@ -0,0 +1 @@ +fac6736890d3e6569a3e562221e2e80c \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg new file mode 100644 index 0000000..9da54b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg new file mode 100644 index 0000000..add0cc8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map new file mode 100644 index 0000000..889f430 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 new file mode 100644 index 0000000..6ec9086 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 @@ -0,0 +1 @@ +cae6ed50d17895098d586359b58517cc \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg new file mode 100644 index 0000000..390efd9 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node2 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map new file mode 100644 index 0000000..ae0be27 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 new file mode 100644 index 0000000..332ac4f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 @@ -0,0 +1 @@ +ef8182faf1bcd63d3487614530947b10 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg new file mode 100644 index 0000000..cd07d25 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg new file mode 100644 index 0000000..90c6c04 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg @@ -0,0 +1,317 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map new file mode 100644 index 0000000..24ac63a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 new file mode 100644 index 0000000..9c174cc --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 @@ -0,0 +1 @@ +acd28568eb3edcfc33ca2521297fd075 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg new file mode 100644 index 0000000..59cb486 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg new file mode 100644 index 0000000..853b56c --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map new file mode 100644 index 0000000..9780c3f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 new file mode 100644 index 0000000..080d356 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 @@ -0,0 +1 @@ +8bc1cc2849f225faaeab1719b6c0a3d6 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg new file mode 100644 index 0000000..786afd0 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg new file mode 100644 index 0000000..4b43aba --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg @@ -0,0 +1,157 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map new file mode 100644 index 0000000..2c56c22 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 new file mode 100644 index 0000000..a77222b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 @@ -0,0 +1 @@ +2b4709da9a40be7a45efe895e73cc31f \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg new file mode 100644 index 0000000..1ed6c1b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg new file mode 100644 index 0000000..b3aa423 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html new file mode 100644 index 0000000..8675a40 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_config_commands.TestConfigCommands Member List
+
+
+ +

This is the complete list of members for tests.test_config_commands.TestConfigCommands, including all inherited members.

+ + + + + + + + + + + + + +
test_get_jira_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_empty(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_invalid_json(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_penify_config_existing_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_penify_config_new_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_token_from_config(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_from_env(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_not_found(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_save_jira_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_path)tests.test_config_commands.TestConfigCommands
test_save_llm_config_failure(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_save_llm_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html new file mode 100644 index 0000000..789b9bc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,886 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands.TestConfigCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_config_commands.TestConfigCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_config_commands.TestConfigCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def test_get_penify_config_existing_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
def test_get_penify_config_new_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
def test_get_llm_config_exists (self, mock_file_open, mock_get_config)
 
def test_get_llm_config_empty (self, mock_file_open, mock_get_config)
 
def test_get_llm_config_invalid_json (self, mock_print, mock_file_open, mock_get_config)
 
def test_get_jira_config_exists (self, mock_file_open, mock_get_config)
 
def test_save_llm_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_get_config)
 
def test_save_llm_config_failure (self, mock_print, mock_file_open, mock_get_config)
 
def test_save_jira_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_path)
 
def test_get_token_from_env (self, mock_file_open, mock_path, mock_getenv)
 
def test_get_token_from_config (self, mock_file_open, mock_path, mock_getenv)
 
def test_get_token_not_found (self, mock_file_open, mock_path, mock_getenv)
 
+

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test that get_jira_config returns the correct JIRA configuration when
+the configuration file exists.
+
+It sets up a mock for the configuration file to simulate its existence
+and verifies that the function reads from the correct file and returns
+the expected JIRA configuration dictionary. Additionally, it checks that
+the mock file open is called with the appropriate arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_get_config (MagicMock): A mock for the `get_config` function, which is expected to return a mock
+        configuration file object.
+
+Returns:
+    None: This test function does not explicitly return anything. Its assertions
+        serve as the verification of its correctness.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_empty()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test the behavior of get_llm_config when called with an empty
+configuration file.
+
+This function sets up a mock configuration file that exists but returns
+no content. It then calls the `get_llm_config` function and asserts that
+it returns an empty dictionary and that the file open method was called
+exactly once with the correct arguments.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the built-in open function.
+    mock_get_config (MagicMock): A MagicMock object simulating the get_config function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test the get_llm_config function when the configuration file exists.
+
+This function sets up a mock configuration file that exists and returns
+it when called. It then calls the get_llm_config function and asserts
+that it returns the correct configuration dictionary. Additionally, it
+checks that the mock_file_open function was called with the correct
+arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the open() function.
+    mock_get_config (MagicMock): A mock for the get_config() function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_invalid_json()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json ( self,
 mock_print,
 mock_file_open,
 mock_get_config 
)
+
+
Test function to verify the behavior of get_llm_config when reading an
+invalid JSON file.
+
+It sets up a mock configuration file that exists but contains invalid
+JSON. The function is expected to handle this gracefully by printing an
+error message and returning an empty dictionary.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_get_config (MagicMock): Mock for the get_config function, which returns the mock configuration
+        file.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_penify_config_existing_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir ( self,
 mock_file_open,
 mock_makedirs,
 mock_path,
 mock_git_folder 
)
+
+
Test the get_penify_config function when the .penify config directory
+exists.
+
+It should not create a new directory and assert that all mocked
+functions were called correctly.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the open() function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the os.makedirs() function.
+    mock_path (MagicMock): A MagicMock object simulating the Path class from pathlib module.
+    mock_git_folder (MagicMock): A MagicMock object simulating the git_folder_search() function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_penify_config_new_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir ( self,
 mock_file_open,
 mock_makedirs,
 mock_path,
 mock_git_folder 
)
+
+
Test the behavior of get_penify_config when the .penify directory does
+not exist.
+
+This function mocks various system calls to simulate a scenario where
+the .penify directory is not present. It then asserts that the
+appropriate actions are taken to create the directory and write an empty
+JSON file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the `open` function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the `os.makedirs` function.
+    mock_path (MagicMock): A MagicMock object simulating the `Path` class from `pathlib`.
+    mock_git_folder (MagicMock): A MagicMock object simulating a git folder search function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_from_config()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_from_config ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test retrieving a token from the configuration.
+
+This function sets up mocks for environment variables and configuration
+files, calls the `get_token` function, and asserts its behavior. It
+verifies that when the environment variable is not found, the function
+reads a token from a configuration file located in the user's home
+directory.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_path (MagicMock): A mock for the `pathlib.Path` class.
+    mock_getenv (MagicMock): A mock for the `os.getenv` function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_from_env()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_from_env ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test retrieving a token from the environment variable.
+
+This function tests the behavior of `get_token` when an environment
+variable is set. It verifies that if the 'PENIFY_API_TOKEN' environment
+variable exists, the function returns its value without attempting to
+read a file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object for simulating file operations.
+    mock_path (MagicMock): A MagicMock object for simulating path operations.
+    mock_getenv (MagicMock): A MagicMock object for simulating environment variable retrieval.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_not_found()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_not_found ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test the get_token function when the API token environment variable is
+not found.
+
+This function tests the scenario where the `PENIFY_API_TOKEN`
+environment variable is not set. It mocks the environment variable to
+return `None`, and verifies that the function returns `None`. The test
+also checks that the environment variable is accessed once and that a
+file open operation is attempted on a configuration file located in the
+user's home directory.
+
+Args:
+    mock_file_open (MagicMock): Mock for the built-in `open` function.
+    mock_path (MagicMock): Mock for the `pathlib.Path` module.
+    mock_getenv (MagicMock): Mock for the `os.getenv` function.
+
+Returns:
+    None: The function does not return anything; it asserts conditions to verify
+        correctness.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_jira_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_jira_config_success ( self,
 mock_print,
 mock_json_dump,
 mock_file_open,
 mock_path 
)
+
+
Test the save_jira_config function to ensure it saves JIRA configuration
+successfully.
+
+This function sets up mocks for various dependencies and tests the
+functionality of saving a JIRA configuration. It asserts that the
+function returns `True`, the JSON dump is called with the correct
+configuration, and the print statement contains the expected message.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_json_dump (MagicMock): Mock for the json.dump function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_path (MagicMock): Mock for the path module.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_llm_config_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure ( self,
 mock_print,
 mock_file_open,
 mock_get_config 
)
+
+
Test function to verify that the save_llm_config function returns False
+and prints an error message when it fails to save the LLM configuration
+due to a permission error.
+
+It sets up a mock configuration file that exists and calls the
+save_llm_config function with valid parameters. The function is expected
+to return False and print "Error saving LLM configuration: Permission
+denied" in case of a failure.
+
+Args:
+    self (TestLLMConfig): An instance of the test class.
+    mock_print (MagicMock): A MagicMock object representing the print function, which will be used
+        to assert that it was called with the expected error message.
+    mock_file_open (MagicMock): A MagicMock object representing the open function, which is not used in
+        this test but is included as a parameter for completeness.
+    mock_get_config (MagicMock): A MagicMock object representing the get_config function, which will be
+        used to return the mock configuration file.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_llm_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_llm_config_success ( self,
 mock_print,
 mock_json_dump,
 mock_file_open,
 mock_get_config 
)
+
+
Test the save_llm_config function successfully.
+
+This function tests that the save_llm_config function correctly saves an
+LLM configuration and handles various mock objects and side effects. It
+ensures that the function returns True upon successful execution, writes
+the expected configuration to a file, and prints a confirmation message.
+
+Args:
+    mock_print (MagicMock): A mock object for the print function.
+    mock_json_dump (MagicMock): A mock object for json.dump.
+    mock_file_open (MagicMock): A mock object for file opening.
+    mock_get_config (MagicMock): A mock object to return a configuration file mock.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js new file mode 100644 index 0000000..88e855a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__config__commands_1_1TestConfigCommands = +[ + [ "test_get_jira_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf", null ], + [ "test_get_llm_config_empty", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd", null ], + [ "test_get_llm_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167", null ], + [ "test_get_llm_config_invalid_json", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd", null ], + [ "test_get_penify_config_existing_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a", null ], + [ "test_get_penify_config_new_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948", null ], + [ "test_get_token_from_config", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c", null ], + [ "test_get_token_from_env", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232", null ], + [ "test_get_token_not_found", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436", null ], + [ "test_save_jira_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375", null ], + [ "test_save_llm_config_failure", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac", null ], + [ "test_save_llm_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map new file mode 100644 index 0000000..b44b108 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 new file mode 100644 index 0000000..eb46690 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 @@ -0,0 +1 @@ +2db6cf58d997b43a776fb21752d4aa29 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg new file mode 100644 index 0000000..9daa237 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg @@ -0,0 +1,50 @@ + + + + + + +tests.test_config_commands.TestConfigCommands + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands + + + ++ test_get_penify_config +_existing_dir() ++ test_get_penify_config +_new_dir() ++ test_get_llm_config +_exists() ++ test_get_llm_config +_empty() ++ test_get_llm_config +_invalid_json() ++ test_get_jira_config +_exists() ++ test_save_llm_config +_success() ++ test_save_llm_config +_failure() ++ test_save_jira_config +_success() ++ test_get_token_from +_env() ++ test_get_token_from +_config() ++ test_get_token_not +_found() + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map new file mode 100644 index 0000000..078fe57 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 new file mode 100644 index 0000000..9e0bad2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 @@ -0,0 +1 @@ +fe055e22847261fb4e8e965247fa63e4 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg new file mode 100644 index 0000000..f4a0db4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg new file mode 100644 index 0000000..223d6fc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map new file mode 100644 index 0000000..eda7789 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 new file mode 100644 index 0000000..9cef76a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 @@ -0,0 +1 @@ +28bc7f826bf5c37f1e543c6a2217c011 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg new file mode 100644 index 0000000..b978430 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg new file mode 100644 index 0000000..c5e3f5e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map new file mode 100644 index 0000000..b8a69cd --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 new file mode 100644 index 0000000..179211c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 @@ -0,0 +1 @@ +66249d926cb6fd81bdf9ba46dc56d466 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg new file mode 100644 index 0000000..3c9de34 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg new file mode 100644 index 0000000..3b4f6d8 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map new file mode 100644 index 0000000..9ca3973 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 new file mode 100644 index 0000000..494b2db --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 @@ -0,0 +1 @@ +fe3072609a9a0bf3d14e3143add0e6da \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg new file mode 100644 index 0000000..dd9b3ef --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg new file mode 100644 index 0000000..65b3e03 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map new file mode 100644 index 0000000..bdcc413 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 new file mode 100644 index 0000000..bdddb02 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 @@ -0,0 +1 @@ +6604e171883373f917ba1e50c7dcf2a8 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg new file mode 100644 index 0000000..803f331 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg new file mode 100644 index 0000000..4b1b7ba --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map new file mode 100644 index 0000000..8da2d5a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 new file mode 100644 index 0000000..49db9b2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 @@ -0,0 +1 @@ +18a45266c6274df8d06c6771aea4d3ce \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg new file mode 100644 index 0000000..d4ab491 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg new file mode 100644 index 0000000..9a84079 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map new file mode 100644 index 0000000..27f9795 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 new file mode 100644 index 0000000..d5a551d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 @@ -0,0 +1 @@ +2efae0628f3580e167ff4e2e9744ff76 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg new file mode 100644 index 0000000..48f17d2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg new file mode 100644 index 0000000..f52311f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map new file mode 100644 index 0000000..9e0e801 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 new file mode 100644 index 0000000..b6d0832 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 @@ -0,0 +1 @@ +ccb36b28b36810b7debb14198aa8c840 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg new file mode 100644 index 0000000..8e3f6ab --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg new file mode 100644 index 0000000..325a4d7 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map new file mode 100644 index 0000000..cb3426e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 new file mode 100644 index 0000000..616400e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 @@ -0,0 +1 @@ +2dda560e911927ca62424d428f826e98 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg new file mode 100644 index 0000000..657b852 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg new file mode 100644 index 0000000..cf3f2f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map new file mode 100644 index 0000000..98b03e3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 new file mode 100644 index 0000000..5292fed --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 @@ -0,0 +1 @@ +8a521fb6ddaca64c6678d226bec595a0 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg new file mode 100644 index 0000000..6c791c9 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg new file mode 100644 index 0000000..9c3f7c4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map new file mode 100644 index 0000000..d0930f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 new file mode 100644 index 0000000..904ab8d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 @@ -0,0 +1 @@ +6fbf377ddd24e2b0afa956a95f55e6c5 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg new file mode 100644 index 0000000..e31aeb0 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg new file mode 100644 index 0000000..19057f1 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map new file mode 100644 index 0000000..7a6d255 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 new file mode 100644 index 0000000..68d6c1c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 @@ -0,0 +1 @@ +2e054bb79c0b6f45c4788678aac6e514 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg new file mode 100644 index 0000000..e18fa25 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg new file mode 100644 index 0000000..eaa2159 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html new file mode 100644 index 0000000..7930b8a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_web_config.TestWebConfig Member List
+
+
+ +

This is the complete list of members for tests.test_web_config.TestWebConfig, including all inherited members.

+ + + +
test_config_jira_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
test_config_llm_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html new file mode 100644 index 0000000..be8b92a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config.TestWebConfig Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_web_config.TestWebConfig Class Reference
+
+
+
+Collaboration diagram for tests.test_web_config.TestWebConfig:
+
+
+
+
+ + + + + + +

+Public Member Functions

def test_config_llm_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
def test_config_jira_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
+

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup ( self,
 mock_resource_filename,
 mock_server,
 mock_webbrowser 
)
+
+
Test the configuration and setup of a JIRA web server.
+
+This function tests the entire process of setting up a JIRA web server,
+including mocking necessary resources, configuring the server to shut
+down after handling one request, and verifying that the web browser is
+opened with the correct URL. The function uses several mocks to simulate
+external dependencies such as resource files, servers, and web browsers.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object for simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object for simulating the server setup.
+    mock_webbrowser (MagicMock): A MagicMock object for simulating the web browser opening.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_config_llm_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup ( self,
 mock_resource_filename,
 mock_server,
 mock_webbrowser 
)
+
+
Set up and test the web server configuration for an LLM (Large Language
+Model) web interface.
+
+This function configures a mock web server for testing purposes,
+including setting up resource filenames, mocking server behavior, and
+verifying that the web browser is opened and the server starts
+correctly. The function uses various mocks to simulate external
+dependencies such as `resource_filename` and `server`.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object simulating the context manager for the web server.
+    mock_webbrowser (MagicMock): A MagicMock object simulating the `webbrowser` module.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js new file mode 100644 index 0000000..64ea648 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js @@ -0,0 +1,5 @@ +var classtests_1_1test__web__config_1_1TestWebConfig = +[ + [ "test_config_jira_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a", null ], + [ "test_config_llm_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map new file mode 100644 index 0000000..77d4a58 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 new file mode 100644 index 0000000..f0a528b --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 @@ -0,0 +1 @@ +ab8cbd57a4ebb302c58c19a4efbc1c6e \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg new file mode 100644 index 0000000..acbac22 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg @@ -0,0 +1,30 @@ + + + + + + +tests.test_web_config.TestWebConfig + + + +Node1 + + +tests.test_web_config.Test +WebConfig + + + ++ test_config_llm_web +_server_setup() ++ test_config_jira_web +_server_setup() + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map new file mode 100644 index 0000000..249e111 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 new file mode 100644 index 0000000..064b512 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 @@ -0,0 +1 @@ +40be6a2b68a00531af40fd3546a6f158 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg new file mode 100644 index 0000000..ba12fb0 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg new file mode 100644 index 0000000..6325fbe --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map new file mode 100644 index 0000000..0befd5a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 new file mode 100644 index 0000000..2632d9a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 @@ -0,0 +1 @@ +5ca25c9e4be6eb96370b0328e2a5e679 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg new file mode 100644 index 0000000..a5b8af9 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/commit-commands_8md.html b/docs/html/commit-commands_8md.html new file mode 100644 index 0000000..9c234f0 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.html b/docs/html/commit__analyzer_8py.html new file mode 100644 index 0000000..666cbba --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.commit_analyzer.CommitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commit_analyzer
 
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.js b/docs/html/commit__analyzer_8py.js new file mode 100644 index 0000000..d7c51ca --- /dev/null +++ b/docs/html/commit__analyzer_8py.js @@ -0,0 +1,4 @@ +var commit__analyzer_8py = +[ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/commit__commands_8py.html b/docs/html/commit__commands_8py.html new file mode 100644 index 0000000..4071210 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.commit_commands
 
+ + + + + + + +

+Functions

def penify_hook.commands.commit_commands.commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
 
def penify_hook.commands.commit_commands.setup_commit_parser (parser)
 
def penify_hook.commands.commit_commands.handle_commit (args)
 
+
+
+ + + + + diff --git a/docs/html/commit__commands_8py.js b/docs/html/commit__commands_8py.js new file mode 100644 index 0000000..823f902 --- /dev/null +++ b/docs/html/commit__commands_8py.js @@ -0,0 +1,6 @@ +var commit__commands_8py = +[ + [ "commit_code", "commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] +]; \ No newline at end of file diff --git a/docs/html/config-commands_8md.html b/docs/html/config-commands_8md.html new file mode 100644 index 0000000..2f95767 --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/config__command_8py.html b/docs/html/config__command_8py.html new file mode 100644 index 0000000..c59215e --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/config_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
config_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.config_command
 
+ + + + + +

+Functions

def penify_hook.config_command.setup_config_parser (parent_parser)
 
def penify_hook.config_command.handle_config (args)
 
+
+
+ + + + + diff --git a/docs/html/config__command_8py.js b/docs/html/config__command_8py.js new file mode 100644 index 0000000..7d1ed0a --- /dev/null +++ b/docs/html/config__command_8py.js @@ -0,0 +1,5 @@ +var config__command_8py = +[ + [ "handle_config", "config__command_8py.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e", null ] +]; \ No newline at end of file diff --git a/docs/html/config__commands_8py.html b/docs/html/config__commands_8py.html new file mode 100644 index 0000000..ca1a944 --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/config__commands_8py.js b/docs/html/config__commands_8py.js new file mode 100644 index 0000000..395f3fb --- /dev/null +++ b/docs/html/config__commands_8py.js @@ -0,0 +1,15 @@ +var config__commands_8py = +[ + [ "config_jira_web", "config__commands_8py.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "config__commands_8py.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880", null ] +]; \ No newline at end of file diff --git a/docs/html/conftest_8py.html b/docs/html/conftest_8py.html new file mode 100644 index 0000000..764fdc0 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/conftest.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
conftest.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  tests
 
namespace  tests.conftest
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.html b/docs/html/constants_8py.html new file mode 100644 index 0000000..c3c300c --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/constants.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
constants.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.constants
 
+ + + + + +

+Variables

string penify_hook.constants.API_URL = 'http://localhost:8000/api'
 
string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.js b/docs/html/constants_8py.js new file mode 100644 index 0000000..adbd23d --- /dev/null +++ b/docs/html/constants_8py.js @@ -0,0 +1,5 @@ +var constants_8py = +[ + [ "API_URL", "constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0", null ] +]; \ No newline at end of file diff --git a/docs/html/detailed-usage_8md.html b/docs/html/detailed-usage_8md.html new file mode 100644 index 0000000..160bec0 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html new file mode 100644 index 0000000..e372555 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests Directory Reference
+
+
+
+Directory dependency graph for tests:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  conftest.py
 
file  test_commit_commands.py
 
file  test_config_commands.py
 
file  test_doc_commands.py
 
file  test_web_config.py
 
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js new file mode 100644 index 0000000..176f804 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js @@ -0,0 +1,9 @@ +var dir_063e2d5fe58a131099a7fe4200cca78c = +[ + [ "__init__.py", "tests_2____init_____8py.html", null ], + [ "conftest.py", "conftest_8py.html", null ], + [ "test_commit_commands.py", "test__commit__commands_8py.html", "test__commit__commands_8py" ], + [ "test_config_commands.py", "test__config__commands_8py.html", "test__config__commands_8py" ], + [ "test_doc_commands.py", "test__doc__commands_8py.html", "test__doc__commands_8py" ], + [ "test_web_config.py", "test__web__config_8py.html", "test__web__config_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map new file mode 100644 index 0000000..599c63c --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 new file mode 100644 index 0000000..afb9081 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 @@ -0,0 +1 @@ +fdbdbdbe253c547a3b41063e5036418d \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg new file mode 100644 index 0000000..08fb018 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_063e2d5fe58a131099a7fe4200cca78c + + +tests + + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623.html b/docs/html/dir_1648a057408aae8db85b8e3797335623.html new file mode 100644 index 0000000..9f615bf --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
docs Directory Reference
+
+
+
+Directory dependency graph for docs:
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map new file mode 100644 index 0000000..0f23bcc --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 new file mode 100644 index 0000000..2214ec5 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 @@ -0,0 +1 @@ +103c12b563793db32ed50b111f45bada \ No newline at end of file diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg new file mode 100644 index 0000000..10a902d --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_1648a057408aae8db85b8e3797335623 + + +docs + + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html new file mode 100644 index 0000000..62f667c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
commands Directory Reference
+
+
+
+Directory dependency graph for commands:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  auth_commands.py
 
file  commit_commands.py
 
file  config_commands.py
 
file  doc_commands.py
 
file  hook_commands.py
 
+
+
+ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js new file mode 100644 index 0000000..94925e7 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js @@ -0,0 +1,9 @@ +var dir_624fa2a8bce97f0444ac5cca335d4e23 = +[ + [ "__init__.py", "penify__hook_2commands_2____init_____8py.html", null ], + [ "auth_commands.py", "auth__commands_8py.html", "auth__commands_8py" ], + [ "commit_commands.py", "commit__commands_8py.html", "commit__commands_8py" ], + [ "config_commands.py", "config__commands_8py.html", "config__commands_8py" ], + [ "doc_commands.py", "doc__commands_8py.html", "doc__commands_8py" ], + [ "hook_commands.py", "hook__commands_8py.html", "hook__commands_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map new file mode 100644 index 0000000..34cf9f2 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 new file mode 100644 index 0000000..597f466 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 @@ -0,0 +1 @@ +1c8b9302d49050442030c2a1fe004137 \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg new file mode 100644 index 0000000..866d63c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + +penify_hook + + + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html new file mode 100644 index 0000000..35c46b1 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  docs
 
directory  penify_hook
 
directory  tests
 
+ + + +

+Files

file  setup.py
 
+
+
+ + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js new file mode 100644 index 0000000..f7aa196 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js @@ -0,0 +1,7 @@ +var dir_b3b22d2ab7966b65f6b237e3231b41be = +[ + [ "docs", "dir_1648a057408aae8db85b8e3797335623.html", null ], + [ "penify_hook", "dir_f88c3381c1861b3f7ca1f3d63cf244b5.html", "dir_f88c3381c1861b3f7ca1f3d63cf244b5" ], + [ "tests", "dir_063e2d5fe58a131099a7fe4200cca78c.html", "dir_063e2d5fe58a131099a7fe4200cca78c" ], + [ "setup.py", "setup_8py.html", "setup_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html new file mode 100644 index 0000000..42d478b --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook Directory Reference
+
+
+
+Directory dependency graph for penify_hook:
+
+
+
+
+ + + + +

+Directories

directory  commands
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  api_client.py
 
file  base_analyzer.py
 
file  commit_analyzer.py
 
file  config_command.py
 
file  constants.py
 
file  file_analyzer.py
 
file  folder_analyzer.py
 
file  git_analyzer.py
 
file  jira_client.py
 
file  llm_client.py
 
file  login_command.py
 
file  main.py
 
file  ui_utils.py
 
file  utils.py
 
+
+
+ + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js new file mode 100644 index 0000000..1be563a --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js @@ -0,0 +1,19 @@ +var dir_f88c3381c1861b3f7ca1f3d63cf244b5 = +[ + [ "commands", "dir_624fa2a8bce97f0444ac5cca335d4e23.html", "dir_624fa2a8bce97f0444ac5cca335d4e23" ], + [ "__init__.py", "penify__hook_2____init_____8py.html", null ], + [ "api_client.py", "api__client_8py.html", "api__client_8py" ], + [ "base_analyzer.py", "base__analyzer_8py.html", "base__analyzer_8py" ], + [ "commit_analyzer.py", "commit__analyzer_8py.html", "commit__analyzer_8py" ], + [ "config_command.py", "config__command_8py.html", "config__command_8py" ], + [ "constants.py", "constants_8py.html", "constants_8py" ], + [ "file_analyzer.py", "file__analyzer_8py.html", "file__analyzer_8py" ], + [ "folder_analyzer.py", "folder__analyzer_8py.html", "folder__analyzer_8py" ], + [ "git_analyzer.py", "git__analyzer_8py.html", "git__analyzer_8py" ], + [ "jira_client.py", "jira__client_8py.html", "jira__client_8py" ], + [ "llm_client.py", "llm__client_8py.html", "llm__client_8py" ], + [ "login_command.py", "login__command_8py.html", "login__command_8py" ], + [ "main.py", "main_8py.html", "main_8py" ], + [ "ui_utils.py", "ui__utils_8py.html", "ui__utils_8py" ], + [ "utils.py", "utils_8py.html", "utils_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map new file mode 100644 index 0000000..769a769 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 new file mode 100644 index 0000000..577134d --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 @@ -0,0 +1 @@ +81055f3442546e3f091686cb9eef1bc5 \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg new file mode 100644 index 0000000..9c6c5d0 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg @@ -0,0 +1,42 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + + + + + + +dir_f88c3381c1861b3f7ca1f3d63cf244b5 +penify_hook + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/doc.png b/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/html/doc__commands_8md.html b/docs/html/doc__commands_8md.html new file mode 100644 index 0000000..c5448a3 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/doc_commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/doc_commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.html b/docs/html/doc__commands_8py.html new file mode 100644 index 0000000..58121e8 --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
doc_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.doc_commands
 
+ + + + + + + +

+Functions

def penify_hook.commands.doc_commands.generate_doc (api_url, token, location=None)
 
def penify_hook.commands.doc_commands.setup_docgen_parser (parser)
 
def penify_hook.commands.doc_commands.handle_docgen (args)
 
+ + + +

+Variables

string penify_hook.commands.doc_commands.docgen_description
 
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.js b/docs/html/doc__commands_8py.js new file mode 100644 index 0000000..4bb5a06 --- /dev/null +++ b/docs/html/doc__commands_8py.js @@ -0,0 +1,7 @@ +var doc__commands_8py = +[ + [ "generate_doc", "doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "doc__commands_8py.html#a3e42540047da37565afffeaf106cb948", null ] +]; \ No newline at end of file diff --git a/docs/html/doxygen-awesome-darkmode-toggle.js b/docs/html/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 0000000..40fe2d3 --- /dev/null +++ b/docs/html/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/docs/html/doxygen-awesome-fragment-copy-button.js b/docs/html/doxygen-awesome-fragment-copy-button.js new file mode 100644 index 0000000..86c16fd --- /dev/null +++ b/docs/html/doxygen-awesome-fragment-copy-button.js @@ -0,0 +1,85 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeFragmentCopyButton extends HTMLElement { + constructor() { + super(); + this.onclick=this.copyContent + } + static title = "Copy to clipboard" + static copyIcon = `` + static successIcon = `` + static successDuration = 980 + static init() { + $(function() { + $(document).ready(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const fragmentWrapper = document.createElement("div") + fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" + const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") + fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title + + fragment.parentNode.replaceChild(fragmentWrapper, fragment) + fragmentWrapper.appendChild(fragment) + fragmentWrapper.appendChild(fragmentCopyButton) + + } + } + }) + }) + } + + + copyContent() { + const content = this.previousSibling.cloneNode(true) + // filter out line number from file listings + content.querySelectorAll(".lineno, .ttc").forEach((node) => { + node.remove() + }) + let textContent = content.textContent + // remove trailing newlines that appear in file listings + let numberOfTrailingNewlines = 0 + while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { + numberOfTrailingNewlines++; + } + textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) + navigator.clipboard.writeText(textContent); + this.classList.add("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon + window.setTimeout(() => { + this.classList.remove("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + }, DoxygenAwesomeFragmentCopyButton.successDuration); + } +} + +customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) diff --git a/docs/html/doxygen-awesome-interactive-toc.js b/docs/html/doxygen-awesome-interactive-toc.js new file mode 100644 index 0000000..20a9669 --- /dev/null +++ b/docs/html/doxygen-awesome-interactive-toc.js @@ -0,0 +1,81 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeInteractiveToc { + static topOffset = 38 + static hideMobileMenu = true + static headers = [] + + static init() { + window.addEventListener("load", () => { + let toc = document.querySelector(".contents > .toc") + if(toc) { + toc.classList.add("interactive") + if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) { + toc.classList.add("open") + } + document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => { + if(toc.classList.contains("open")) { + toc.classList.remove("open") + } else { + toc.classList.add("open") + } + }) + + document.querySelectorAll(".contents > .toc > ul a").forEach((node) => { + let id = node.getAttribute("href").substring(1) + DoxygenAwesomeInteractiveToc.headers.push({ + node: node, + headerNode: document.getElementById(id) + }) + + document.getElementById("doc-content")?.addEventListener("scroll", () => { + DoxygenAwesomeInteractiveToc.update() + }) + }) + DoxygenAwesomeInteractiveToc.update() + } + }) + } + + static update() { + let active = DoxygenAwesomeInteractiveToc.headers[0]?.node + DoxygenAwesomeInteractiveToc.headers.forEach((header) => { + let position = header.headerNode.getBoundingClientRect().top + header.node.classList.remove("active") + header.node.classList.remove("aboveActive") + if(position < DoxygenAwesomeInteractiveToc.topOffset) { + active = header.node + active?.classList.add("aboveActive") + } + }) + active?.classList.add("active") + active?.classList.remove("aboveActive") + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome-paragraph-link.js b/docs/html/doxygen-awesome-paragraph-link.js new file mode 100644 index 0000000..e53d132 --- /dev/null +++ b/docs/html/doxygen-awesome-paragraph-link.js @@ -0,0 +1,51 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeParagraphLink { + // Icon from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static icon = `` + static title = "Permanent Link" + static init() { + $(function() { + $(document).ready(function() { + document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => { + let anchorlink = document.createElement("a") + anchorlink.setAttribute("href", `#${node.getAttribute("id")}`) + anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title) + anchorlink.classList.add("anchorlink") + node.classList.add("anchor") + anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon + node.parentElement.appendChild(anchorlink) + }) + }) + }) + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 0000000..d207446 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only.css b/docs/html/doxygen-awesome-sidebar-only.css new file mode 100644 index 0000000..853f6d6 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/docs/html/doxygen-awesome-tabs.js b/docs/html/doxygen-awesome-tabs.js new file mode 100644 index 0000000..06dfd3d --- /dev/null +++ b/docs/html/doxygen-awesome-tabs.js @@ -0,0 +1,90 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeTabs { + + static init() { + window.addEventListener("load", () => { + document.querySelectorAll(".tabbed:not(:empty)").forEach((tabbed, tabbedIndex) => { + let tabLinkList = [] + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + tab.id = "tab_" + tabbedIndex + "_" + tabIndex + let header = tab.querySelector(".tab-title") + let tabLink = document.createElement("button") + tabLink.classList.add("tab-button") + tabLink.appendChild(header) + header.title = header.textContent + tabLink.addEventListener("click", () => { + tabbed.querySelectorAll(":scope > ul > li").forEach((tab) => { + tab.classList.remove("selected") + }) + tabLinkList.forEach((tabLink) => { + tabLink.classList.remove("active") + }) + tab.classList.add("selected") + tabLink.classList.add("active") + }) + tabLinkList.push(tabLink) + if(tabIndex == 0) { + tab.classList.add("selected") + tabLink.classList.add("active") + } + }) + let tabsOverview = document.createElement("div") + tabsOverview.classList.add("tabs-overview") + let tabsOverviewContainer = document.createElement("div") + tabsOverviewContainer.classList.add("tabs-overview-container") + tabLinkList.forEach((tabLink) => { + tabsOverview.appendChild(tabLink) + }) + tabsOverviewContainer.appendChild(tabsOverview) + tabbed.before(tabsOverviewContainer) + + function resize() { + let maxTabHeight = 0 + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + let visibility = tab.style.display + tab.style.display = "block" + maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight) + tab.style.display = visibility + }) + tabbed.style.height = `${maxTabHeight + 10}px` + } + + resize() + new ResizeObserver(resize).observe(tabbed) + }) + }) + + } + + static resize(tabbed) { + + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome.css b/docs/html/doxygen-awesome.css new file mode 100644 index 0000000..a44945b --- /dev/null +++ b/docs/html/doxygen-awesome.css @@ -0,0 +1,2675 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..2010785 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode { + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/example-workflows.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/example-workflows.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.html b/docs/html/file__analyzer_8py.html new file mode 100644 index 0000000..1f0b93f --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
file_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.file_analyzer.FileAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.file_analyzer
 
+ + + +

+Variables

 penify_hook.file_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.js b/docs/html/file__analyzer_8py.js new file mode 100644 index 0000000..a650b8a --- /dev/null +++ b/docs/html/file__analyzer_8py.js @@ -0,0 +1,5 @@ +var file__analyzer_8py = +[ + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..2992ef3 --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js new file mode 100644 index 0000000..dd5a1a9 --- /dev/null +++ b/docs/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "penify-cli", "dir_b3b22d2ab7966b65f6b237e3231b41be.html", "dir_b3b22d2ab7966b65f6b237e3231b41be" ] +]; \ No newline at end of file diff --git a/docs/html/folder__analyzer_8py.html b/docs/html/folder__analyzer_8py.html new file mode 100644 index 0000000..cf69cdc --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
folder_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.folder_analyzer.FolderAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.folder_analyzer
 
+
+
+ + + + + diff --git a/docs/html/folder__analyzer_8py.js b/docs/html/folder__analyzer_8py.js new file mode 100644 index 0000000..f51e8e5 --- /dev/null +++ b/docs/html/folder__analyzer_8py.js @@ -0,0 +1,4 @@ +var folder__analyzer_8py = +[ + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..571b56b --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..236890d --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- a -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..936617e --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..ffa378f --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
git_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.git_analyzer.GitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.git_analyzer
 
+ + + +

+Variables

 penify_hook.git_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/git__analyzer_8py.js b/docs/html/git__analyzer_8py.js new file mode 100644 index 0000000..f8197a4 --- /dev/null +++ b/docs/html/git__analyzer_8py.js @@ -0,0 +1,5 @@ +var git__analyzer_8py = +[ + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "logger", "git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..ecf36da --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Graph Legend + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..5543aee --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +2949d8d683b49299ad5e82dbf5d1be6c \ No newline at end of file diff --git a/docs/html/graph_legend.svg b/docs/html/graph_legend.svg new file mode 100644 index 0000000..5c7a71a --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,117 @@ + + + + + + +Graph Legend + + + +Node9 + +Inherited + + + +Node10 + +PublicBase + + + +Node10->Node9 + + + + + +Node11 + +Truncated + + + +Node11->Node10 + + + + + +Node13 + +ProtectedBase + + + +Node13->Node9 + + + + + +Node14 + +PrivateBase + + + +Node14->Node9 + + + + + +Node15 + +Undocumented + + + +Node15->Node9 + + + + + +Node16 + +Templ< int > + + + +Node16->Node9 + + + + + +Node17 + +Templ< T > + + + +Node17->Node16 + + +< int > + + + +Node18 + +Used + + + +Node18->Node9 + + +m_usedClass + + + diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html new file mode 100644 index 0000000..8c1fe33 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js new file mode 100644 index 0000000..6af7a4f --- /dev/null +++ b/docs/html/hierarchy.js @@ -0,0 +1,18 @@ +var hierarchy = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", null ], + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", [ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", null ], + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", null ], + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", null ], + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", null ] + ] ], + [ "Exception", "classException.html", [ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ], + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", null ], + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", null ], + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", null ], + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", null ], + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", null ] +]; \ No newline at end of file diff --git a/docs/html/hook__commands_8py.html b/docs/html/hook__commands_8py.html new file mode 100644 index 0000000..796a364 --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/hook_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
hook_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.hook_commands
 
+ + + + + +

+Functions

def penify_hook.commands.hook_commands.install_git_hook (location, token)
 
def penify_hook.commands.hook_commands.uninstall_git_hook (location)
 
+ + + + + +

+Variables

string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
 
string penify_hook.commands.hook_commands.HOOK_TEMPLATE
 
+
+
+ + + + + diff --git a/docs/html/hook__commands_8py.js b/docs/html/hook__commands_8py.js new file mode 100644 index 0000000..7868841 --- /dev/null +++ b/docs/html/hook__commands_8py.js @@ -0,0 +1,7 @@ +var hook__commands_8py = +[ + [ "install_git_hook", "hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] +]; \ No newline at end of file diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..4343d3d --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Documentation
+
+
+
+
+ + + + + diff --git a/docs/html/inherit_graph_0.map b/docs/html/inherit_graph_0.map new file mode 100644 index 0000000..4d4472c --- /dev/null +++ b/docs/html/inherit_graph_0.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/inherit_graph_0.md5 b/docs/html/inherit_graph_0.md5 new file mode 100644 index 0000000..927ae02 --- /dev/null +++ b/docs/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +fbdbe5195fd7acea201510f0e9bb231e \ No newline at end of file diff --git a/docs/html/inherit_graph_0.svg b/docs/html/inherit_graph_0.svg new file mode 100644 index 0000000..af8bbff --- /dev/null +++ b/docs/html/inherit_graph_0.svg @@ -0,0 +1,38 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +Exception + + + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + +Node0->Node1 + + + + + diff --git a/docs/html/inherit_graph_1.map b/docs/html/inherit_graph_1.map new file mode 100644 index 0000000..e29f764 --- /dev/null +++ b/docs/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_1.md5 b/docs/html/inherit_graph_1.md5 new file mode 100644 index 0000000..ea3634a --- /dev/null +++ b/docs/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +61b97d863a0d1fddd4dbd69906ebc213 \ No newline at end of file diff --git a/docs/html/inherit_graph_1.svg b/docs/html/inherit_graph_1.svg new file mode 100644 index 0000000..31bd0a8 --- /dev/null +++ b/docs/html/inherit_graph_1.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.api_client.APIClient + + + + + diff --git a/docs/html/inherit_graph_2.map b/docs/html/inherit_graph_2.map new file mode 100644 index 0000000..799bfbb --- /dev/null +++ b/docs/html/inherit_graph_2.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/inherit_graph_2.md5 b/docs/html/inherit_graph_2.md5 new file mode 100644 index 0000000..4b44272 --- /dev/null +++ b/docs/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +75e192bb568d3adda84eea21391817f9 \ No newline at end of file diff --git a/docs/html/inherit_graph_2.svg b/docs/html/inherit_graph_2.svg new file mode 100644 index 0000000..2677d68 --- /dev/null +++ b/docs/html/inherit_graph_2.svg @@ -0,0 +1,87 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.base_analyzer. +BaseAnalyzer + + + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + + + + + +Node0->Node1 + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + + + + + +Node0->Node2 + + + + + +Node3 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + + + + + +Node0->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook + + + + + +Node0->Node4 + + + + + diff --git a/docs/html/inherit_graph_3.map b/docs/html/inherit_graph_3.map new file mode 100644 index 0000000..697011d --- /dev/null +++ b/docs/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_3.md5 b/docs/html/inherit_graph_3.md5 new file mode 100644 index 0000000..dc81dee --- /dev/null +++ b/docs/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +fceca40b7ed3dc42e967f284c6fcc468 \ No newline at end of file diff --git a/docs/html/inherit_graph_3.svg b/docs/html/inherit_graph_3.svg new file mode 100644 index 0000000..8d32efa --- /dev/null +++ b/docs/html/inherit_graph_3.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.jira_client. +JiraClient + + + + + diff --git a/docs/html/inherit_graph_4.map b/docs/html/inherit_graph_4.map new file mode 100644 index 0000000..8833eec --- /dev/null +++ b/docs/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_4.md5 b/docs/html/inherit_graph_4.md5 new file mode 100644 index 0000000..7b024dc --- /dev/null +++ b/docs/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +78a208cc7ff8d5e3d76f7fe246474324 \ No newline at end of file diff --git a/docs/html/inherit_graph_4.svg b/docs/html/inherit_graph_4.svg new file mode 100644 index 0000000..f51c5c8 --- /dev/null +++ b/docs/html/inherit_graph_4.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.llm_client.LLMClient + + + + + diff --git a/docs/html/inherit_graph_5.map b/docs/html/inherit_graph_5.map new file mode 100644 index 0000000..340884d --- /dev/null +++ b/docs/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_5.md5 b/docs/html/inherit_graph_5.md5 new file mode 100644 index 0000000..a572e33 --- /dev/null +++ b/docs/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +07fe5f1877ad04afe232476f3697a187 \ No newline at end of file diff --git a/docs/html/inherit_graph_5.svg b/docs/html/inherit_graph_5.svg new file mode 100644 index 0000000..d1eb1ca --- /dev/null +++ b/docs/html/inherit_graph_5.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_commit_commands. +TestCommitCommands + + + + + diff --git a/docs/html/inherit_graph_6.map b/docs/html/inherit_graph_6.map new file mode 100644 index 0000000..093c227 --- /dev/null +++ b/docs/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_6.md5 b/docs/html/inherit_graph_6.md5 new file mode 100644 index 0000000..37adffc --- /dev/null +++ b/docs/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +df59af5d6cbe4d3df1d1ec09b3fe3a88 \ No newline at end of file diff --git a/docs/html/inherit_graph_6.svg b/docs/html/inherit_graph_6.svg new file mode 100644 index 0000000..6156f4f --- /dev/null +++ b/docs/html/inherit_graph_6.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_config_commands. +TestConfigCommands + + + + + diff --git a/docs/html/inherit_graph_7.map b/docs/html/inherit_graph_7.map new file mode 100644 index 0000000..f1fc41d --- /dev/null +++ b/docs/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_7.md5 b/docs/html/inherit_graph_7.md5 new file mode 100644 index 0000000..474c162 --- /dev/null +++ b/docs/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +0da5838f91ae0c3b8f7bfe23d4aad90f \ No newline at end of file diff --git a/docs/html/inherit_graph_7.svg b/docs/html/inherit_graph_7.svg new file mode 100644 index 0000000..a9bcadf --- /dev/null +++ b/docs/html/inherit_graph_7.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_web_config.Test +WebConfig + + + + + diff --git a/docs/html/inherits.html b/docs/html/inherits.html new file mode 100644 index 0000000..89f3ba1 --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.html b/docs/html/jira__client_8py.html new file mode 100644 index 0000000..f7e182c --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
jira_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.jira_client.JiraClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.jira_client
 
+ + + +

+Variables

bool penify_hook.jira_client.JIRA_AVAILABLE = True
 
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.js b/docs/html/jira__client_8py.js new file mode 100644 index 0000000..887fb38 --- /dev/null +++ b/docs/html/jira__client_8py.js @@ -0,0 +1,5 @@ +var jira__client_8py = +[ + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..c9ed3d9 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html new file mode 100644 index 0000000..463acd7 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
llm_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.llm_client.LLMClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.llm_client
 
+
+
+ + + + + diff --git a/docs/html/llm__client_8py.js b/docs/html/llm__client_8py.js new file mode 100644 index 0000000..afd0616 --- /dev/null +++ b/docs/html/llm__client_8py.js @@ -0,0 +1,4 @@ +var llm__client_8py = +[ + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/login__command_8py.html b/docs/html/login__command_8py.html new file mode 100644 index 0000000..4e3f8e9 --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
login_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.login_command
 
+ + + + + +

+Functions

def penify_hook.login_command.setup_login_parser (parser)
 
def penify_hook.login_command.handle_login (args)
 
+
+
+ + + + + diff --git a/docs/html/login__command_8py.js b/docs/html/login__command_8py.js new file mode 100644 index 0000000..7ce13bc --- /dev/null +++ b/docs/html/login__command_8py.js @@ -0,0 +1,5 @@ +var login__command_8py = +[ + [ "handle_login", "login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "login__command_8py.html#aae63db4c484797bead34b7d874020c6a", null ] +]; \ No newline at end of file diff --git a/docs/html/main_8py.html b/docs/html/main_8py.html new file mode 100644 index 0000000..e4c1c69 --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/main.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
main.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

def penify_hook.main.main ()
 
+
+
+ + + + + diff --git a/docs/html/main_8py.js b/docs/html/main_8py.js new file mode 100644 index 0000000..6150b32 --- /dev/null +++ b/docs/html/main_8py.js @@ -0,0 +1,4 @@ +var main_8py = +[ + [ "main", "main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] +]; \ No newline at end of file diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html new file mode 100644 index 0000000..9c12aa8 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Tool
+
+
+

Tests Coverage

+

A CLI tool to generate smart commit messages, code documentation, and more.

+

+Features

+
    +
  • Automatically generate documentation for your code
  • +
  • Support for multiple programming languages
  • +
  • Git hook integration for automatic documentation on commits
  • +
  • Folder and file analysis
  • +
+

+Installation

+

Install from PyPI:

+
pip install penify
+

+Usage

+

Penify CLI provides several subcommands for different functionalities, organized into basic commands (no login required) and advanced commands (login required).

+

+Basic Commands (No login required)

+

+Commit

+

Generate smart commit messages using local LLM:

+
penify commit [-m "Optional message"] [-e] [-d]
+

Options:

    +
  • -m, --message: Optional custom commit message
  • +
  • -e, --terminal: Open editor to modify commit message before committing
  • +
  • -d, --description: Generate commit message with both title and description (without this flag, only title is generated)
  • +
+

+Config

+

Configure local LLM and JIRA settings:

+
# Configure LLM settings
+
penify config llm --model MODEL_NAME [--api-base API_URL] [--api-key API_KEY]
+
+
# Configure LLM settings through web interface
+
penify config llm-web
+
+
# Configure JIRA settings
+
penify config jira --url JIRA_URL --username USERNAME --api-token TOKEN [--verify]
+
+
# Configure JIRA settings through web interface
+
penify config jira-web
+

+Advanced Commands (Login required)

+

+Login

+

To log in and obtain an API token:

+
penify login
+

This command will open a browser window for authentication. After successful login, the API key will be saved locally for future use.

+

+Documentation Generation

+

Generate documentation for Git diff, files or folders:

+
# Generate documentation for latest Git commit diff
+
penify docgen
+
+
# Generate documentation for specific file or folder
+
penify docgen -l /path/to/file/or/folder
+

Options:

    +
  • -l, --location: Path to specific file or folder for documentation generation (defaults to current directory)
  • +
+

+Git Hook Management

+

Install or uninstall Git post-commit hooks:

+
# Install Git hook
+
penify docgen install-hook [-l /path/to/repo]
+
+
# Uninstall Git hook
+
penify docgen uninstall-hook [-l /path/to/repo]
+

Options:

    +
  • -l, --location: Path to the Git repository (defaults to current directory)
  • +
+

+Authentication

+

Penify CLI uses an API token for authentication with advanced features.

+

If no token is available and you try to access an advanced feature, you'll be prompted to log in.

+

+Local LLM Configuration

+

For commit message generation, Penify can use a local LLM. Configure it using:

+
penify config llm --model MODEL_NAME --api-base API_URL --api-key API_KEY
+

Common configurations:

+

+JIRA Integration

+

Configure JIRA integration to enhance commit messages with issue details:

+
penify config jira --url https://your-domain.atlassian.net --username your-email@example.com --api-token YOUR_API_TOKEN
+

+Development

+

To set up the development environment:

+
    +
  1. Clone the repository:
    git clone https://github.com/SingularityX-ai/penify-cli.git
    +
  2. +
  3. Install the package in editable mode:
    pip install -e .
    +
  4. +
+

+Running Tests

+
pytest
+

+License

+

This project is licensed under the MIT License.

+

+Author

+

Suman Saurabh (ss.su.nosp@m.mans.nosp@m.aurab.nosp@m.h92@.nosp@m.gmail.nosp@m..com)

+

+Contributing

+

Contributions are welcome! Please feel free to submit a Pull Request.

+

+Issues

+

If you encounter any problems or have suggestions, please file an issue on the GitHub repository.

+

+Support

+

For automated API Documentation, Architecture Documentation, Code Documentation, Pull Request Documentation, or if you need a demo, please join our Discord support channel.

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html new file mode 100644 index 0000000..2a429ba --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Commit Commands
+
+
+

The commit command allows you to generate smart, AI-powered commit messages for your Git changes. This document explains all available options and combinations.

+

+Basic Usage

+
penify commit
+

By default, this command:

    +
  • Analyzes your staged Git changes
  • +
  • Generates a concise commit title only
  • +
  • Uses local LLM if configured, or falls back to Penify API
  • +
+

+Command Options

+

+<tt>-m, --message</tt>

+

Provide context for the commit message generation:

+
penify commit -m "Fix login flow"
+

This hint helps the AI understand your intention and improves the quality of the generated message.

+

+<tt>-e, --terminal</tt>

+

Open an editor to review and edit the generated commit message before committing:

+
penify commit -e
+

This opens your default Git editor with the generated message for review.

+

+<tt>-d, --description</tt>

+

Generate a detailed commit message with both title and description:

+
penify commit -d
+

Without this flag, only the commit title is generated.

+

+Option Combinations

+

You can combine these options for different workflows:

+

+Generate Title Only with Context

+
penify commit -m "Update login UI"
+

+Generate Title and Description with Context

+
penify commit -m "Update login UI" -d
+

+Generate and Edit Full Commit Message

+
penify commit -d -e
+

+Generate, Edit, and Provide Context

+
penify commit -m "Refactor authentication" -d -e
+

+LLM and JIRA Integration

+

+Using Local LLM

+

If you've configured a local LLM using penify config llm, the commit command will automatically use it for message generation.

+

Benefits:

    +
  • Privacy: your code changes don't leave your machine
  • +
  • Speed: no network latency
  • +
  • Works offline
  • +
+

+JIRA Enhancement

+

If you've configured JIRA integration using penify config jira, the commit command will:

+
    +
  1. Detect JIRA issue references in your changes
  2. +
  3. Fetch issue details from your JIRA instance
  4. +
  5. Include issue information in the commit message
  6. +
  7. Format the commit message according to JIRA's smart commit format
  8. +
+

Example output:

PROJ-123: Fix authentication bug in login flow
+
+
- Updated OAuth token validation
+
- Fixed session timeout handling
+
- Added unit tests for edge cases
+
+
[PROJ-123]
+

+Configuration Requirements

+

For the commit command to work:

+
    +
  1. You must have configured either:
      +
    • Local LLM via penify config llm, OR
    • +
    • Logged in via penify login
    • +
    +
  2. +
  3. For JIRA enhancement (optional):
      +
    • Configure JIRA via penify config jira
    • +
    +
  4. +
+

+Examples

+

+Basic Commit with Default Settings

+
# Stage your changes
+
git add .
+
+
# Generate commit message
+
penify commit
+
+
# Commit with the generated message
+
git commit -m "Generated message here"
+

+Full Workflow with All Features

+
# Stage your changes
+
git add .
+
+
# Generate detailed commit message with JIRA integration,
+
# provide context, and open editor for review
+
penify commit -m "Fix login issue" -d -e
+
+
# The commit is automatically completed after you save and exit the editor
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"No LLM model or API token provided"**
      +
    • Run penify config llm to configure a local LLM, or
    • +
    • Run penify login to authenticate with Penify
    • +
    +
  2. +
  3. **"Failed to connect to JIRA"**
      +
    • Check your JIRA configuration with cat ~/.penify
    • +
    • Verify your network connection
    • +
    • Ensure your JIRA credentials are valid
    • +
    +
  4. +
  5. **"Error initializing LLM client"**
      +
    • Verify your LLM configuration settings
    • +
    • Ensure the LLM API is accessible
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html new file mode 100644 index 0000000..4d6079c --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Configuration Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Configuration Commands
+
+
+

The config command allows you to set up and manage configuration settings for Penify CLI. This document explains all available configuration options and how to use them.

+

+Configuration Overview

+

Penify CLI stores configuration in a JSON file at ~/.penify/config.json. The configuration includes:

+
    +
  • LLM (Large Language Model) settings for local commit message generation
  • +
  • JIRA integration settings for enhanced commit messages
  • +
  • API tokens and other credentials
  • +
+

+Basic Usage

+
# Configure LLM settings
+
penify config llm
+
+
# Configure JIRA integration
+
penify config jira
+

+LLM Configuration

+

+Web Interface

+

Running penify config llm opens a web interface in your browser where you can configure:

+
    +
  1. Model: The LLM model to use (e.g., gpt-3.5-turbo)
  2. +
  3. API Base URL: The endpoint URL for your LLM API (e.g., https://api.openai.com/v1)
  4. +
  5. API Key: Your authentication key for the LLM API
  6. +
+

+Supported LLMs

+

Penify CLI supports various LLM providers:

+

+OpenAI

+ +

+Anthropic

+ +

+Ollama (Local)

+ +

+Azure OpenAI

+
    +
  • Model: Your deployed model name
  • +
  • API Base: Your Azure endpoint
  • +
  • API Key: Your Azure API key
  • +
+

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"llm": {
+
"model": "gpt-3.5-turbo",
+
"api_base": "https://api.openai.com/v1",
+
"api_key": "sk-..."
+
}
+
}
+

+JIRA Configuration

+

+Web Interface

+

Running penify config jira opens a web interface where you can configure:

+
    +
  1. JIRA URL: Your JIRA instance URL (e.g., https://yourcompany.atlassian.net)
  2. +
  3. Username: Your JIRA username (typically your email)
  4. +
  5. API Token: Your JIRA API token
  6. +
+

+Creating a JIRA API Token

+
    +
  1. Log in to https://id.atlassian.com/manage-profile/security/api-tokens
  2. +
  3. Click "Create API token"
  4. +
  5. Give it a name (e.g., "Penify CLI")
  6. +
  7. Copy the generated token and paste it into the configuration
  8. +
+

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"jira": {
+
"url": "https://yourcompany.atlassian.net",
+
"username": "your.email@example.com",
+
"api_token": "your-jira-api-token"
+
}
+
}
+

+Configuration Locations

+

Penify CLI looks for configuration in multiple locations:

+
    +
  1. Project-specific: .penify/config.json in the Git repository root
  2. +
  3. User-specific: ~/.penify/config.json in your home directory
  4. +
+

The project-specific configuration takes precedence if both exist.

+

+Environment Variables

+

You can override configuration settings using environment variables:

+
    +
  • PENIFY_API_TOKEN: Override the stored API token
  • +
  • PENIFY_LLM_MODEL: Override the configured LLM model
  • +
  • PENIFY_LLM_API_BASE: Override the configured LLM API base URL
  • +
  • PENIFY_LLM_API_KEY: Override the configured LLM API key
  • +
  • PENIFY_JIRA_URL: Override the configured JIRA URL
  • +
  • PENIFY_JIRA_USER: Override the configured JIRA username
  • +
  • PENIFY_JIRA_TOKEN: Override the configured JIRA API token
  • +
+

Example:

export PENIFY_LLM_MODEL="gpt-4"
+
penify commit
+

+Command-Line Configuration

+

For advanced users or scripting, you can directly edit the configuration file:

+
# View current configuration
+
cat ~/.penify/config.json
+
+
# Edit configuration with your preferred editor
+
nano ~/.penify/config.json
+

+Sharing Configuration

+

You can share configuration between machines by copying the .penify/config.json file. However, be cautious with API keys and credentials.

+

For team settings, consider:

    +
  1. Using a project-specific .penify/config.json with shared settings
  2. +
  3. Excluding API keys from shared configuration
  4. +
  5. Using environment variables for sensitive credentials
  6. +
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Error reading configuration file"**
      +
    • Check if the file exists: ls -la ~/.penify
    • +
    • Ensure it contains valid JSON: cat ~/.penify/config.json
    • +
    +
  2. +
  3. **"Failed to connect to LLM API"**
      +
    • Verify API base URL and API key
    • +
    • Check network connectivity to the API endpoint
    • +
    • Ensure your account has access to the specified model
    • +
    +
  4. +
  5. **"Failed to connect to JIRA"**
      +
    • Check JIRA URL format (should include https://)
    • +
    • Verify username and API token
    • +
    • Ensure your JIRA account has API access permissions
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html new file mode 100644 index 0000000..6b9ea1f --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Detailed Usage Guide
+
+
+

This document provides in-depth information about all features and capabilities of the Penify CLI tool.

+

+Table of Contents

+
    +
  • Penify CLI - Detailed Usage Guide
      +
    • Table of Contents
    • +
    • Authentication
        +
      • Login Process
      • +
      • API Token Storage
      • +
      • Token Precedence
      • +
      +
    • +
    • Command Overview
    • +
    • Commit Message Generation
    • +
    • Code Documentation Generation
        +
      • Use Cases
      • +
      • Authentication Requirement
      • +
      +
    • +
    • Configuration Settings
    • +
    • Git Hooks
        +
      • Post-Commit Hook
      • +
      • Custom Hook Location
      • +
      +
    • +
    • Advanced Use Cases
        +
      • CI/CD Integration
      • +
      • Remote Repository Documentation
      • +
      +
    • +
    • Troubleshooting
        +
      • Common Issues
      • +
      • Logs
      • +
      • Support
      • +
      +
    • +
    +
  • +
+

+Authentication

+

+Login Process

+

When you run penify login, the tool:

+
    +
  1. Opens your default web browser
  2. +
  3. Redirects you to Penify's login page
  4. +
  5. Captures the authentication token after successful login
  6. +
  7. Saves the token in ~/.penify file
  8. +
+

+API Token Storage

+

API tokens are stored in your home directory in the .penify file. This JSON file contains:

+
{
+
"api_keys": "your-api-token",
+
"llm": { "model": "...", "api_base": "...", "api_key": "..." },
+
"jira": { "url": "...", "username": "...", "api_token": "..." }
+
}
+

+Token Precedence

+
    +
  1. Environment variable PENIFY_API_TOKEN (highest priority)
  2. +
  3. Token in ~/.penify file
  4. +
+

+Command Overview

+
penify
+
├── commit Generate smart commit messages
+
├── config Configure local LLM and JIRA
+
│ ├── llm Configure local LLM settings
+
│ └── jira Configure JIRA integration
+
├── login Log in to Penify account
+
└── docgen Generate code documentation
+
├── install-hook Install Git post-commit hook
+
└── uninstall-hook Remove Git post-commit hook
+

+Commit Message Generation

+

The commit command analyzes your staged changes and generates meaningful commit messages. It can:

+
    +
  • Use a local LLM if configured
  • +
  • Enhance messages with JIRA issue details
  • +
  • Provide both title and description
  • +
+

For specific options and examples, see docs/commit-commands.md.

+

+Code Documentation Generation

+

The docgen command generates documentation for your code:

+

+Use Cases

+
    +
  1. Current Git Diff: Default behavior, documents only changed files
  2. +
  3. Specific File: Pass a file path with -l path/to/file.py
  4. +
  5. Entire Folder: Pass a folder path with -l path/to/folder
  6. +
+

+Authentication Requirement

+

This feature requires authentication with a Penify account. Run penify login before using documentation features.

+

+Configuration Settings

+

Configure local settings using the config command:

+
    +
  • LLM Settings: Configure a local LLM for commit message generation
  • +
  • JIRA Settings: Set up JIRA integration for enhanced commit messages
  • +
+

For detailed configuration options, see docs/config-commands.md.

+

+Git Hooks

+

Penify can install Git hooks to automate documentation generation:

+

+Post-Commit Hook

+
    +
  • Install: penify docgen install-hook
  • +
  • What it does: Automatically generates documentation for changed files after each commit
  • +
  • Uninstall: penify docgen uninstall-hook
  • +
+

+Custom Hook Location

+

You can specify a custom location for Git hooks:

+
penify docgen install-hook -l /path/to/git/repo
+

+Advanced Use Cases

+

+CI/CD Integration

+

For CI/CD pipelines:

+
    +
  1. Set PENIFY_API_TOKEN as an environment variable
  2. +
  3. Run commands without requiring interactive login
  4. +
+

+Remote Repository Documentation

+

Generate documentation for an entire repository:

+
git clone https://github.com/user/repo
+
cd repo
+
penify docgen -l .
+

+Troubleshooting

+

+Common Issues

+
    +
  1. API Key Errors: Ensure you've run penify login or set PENIFY_API_TOKEN
  2. +
  3. LLM Configuration: Check your LLM settings with cat ~/.penify
  4. +
  5. JIRA Integration: Verify JIRA credentials in your configuration
  6. +
+

+Logs

+

For more detailed logs, you can set the environment variable:

+
export PENIFY_DEBUG=1
+

+Support

+

For additional help, visit https://docs.penify.dev/ or contact suppo.nosp@m.rt@p.nosp@m.enify.nosp@m..dev

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html new file mode 100644 index 0000000..6d8b21a --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Documentation Generation Commands
+
+
+

This document provides a detailed guide to all permutations and combinations of the docgen command, including extensive information about Git hook commands for automating documentation generation.

+

+Table of Contents

+
    +
  • Basic Usage
  • +
  • Command Options
  • +
  • Option Combinations
  • +
  • Git Hook Commands
      +
    • Hook Installation
    • +
    • Hook Customization
    • +
    • Hook Uninstallation
    • +
    +
  • +
  • Advanced Use Cases
  • +
  • Troubleshooting
  • +
+

+Basic Usage

+
penify docgen
+

By default, this command:

    +
  • Analyzes the current Git diff (changes since last commit)
  • +
  • Generates documentation for changed files only
  • +
  • Requires authentication via penify login
  • +
+

+Command Options

+

+<tt>-l, --location</tt>

+

Specify a target for documentation generation:

+
# Generate documentation for a specific file
+
penify docgen -l path/to/file.py
+
+
# Generate documentation for a specific folder
+
penify docgen -l path/to/folder
+

Without this flag, Penify analyzes only Git-tracked modified files.

+

+Subcommands

+

+<tt>install-hook</tt>

+

Install a Git post-commit hook to automatically generate documentation:

+
penify docgen install-hook
+

+<tt>uninstall-hook</tt>

+

Remove the Git post-commit hook:

+
penify docgen uninstall-hook
+

+Option Combinations

+

+Generate Documentation for Current Git Diff

+
# Basic usage - current Git diff
+
penify docgen
+

+Generate Documentation for a Specific File

+
# Single file documentation
+
penify docgen -l src/main.py
+

+Generate Documentation for a Folder

+
# Folder documentation
+
penify docgen -l src/models/
+

+Install Hook in Current Repository

+
# Install hook in current Git repository
+
penify docgen install-hook
+

+Install Hook in Specific Repository

+
# Install hook in a specific Git repository
+
penify docgen install-hook -l /path/to/repo
+

+Uninstall Hook from Current Repository

+
# Uninstall hook from current Git repository
+
penify docgen uninstall-hook
+

+Uninstall Hook from Specific Repository

+
# Uninstall hook from a specific Git repository
+
penify docgen uninstall-hook -l /path/to/repo
+

+Git Hook Commands

+

Penify provides Git hook commands to automate documentation generation as part of your Git workflow.

+

+Hook Installation

+

+How Hooks Work

+

When you install a Git hook with penify docgen install-hook, Penify:

+
    +
  1. Creates a post-commit hook script in the .git/hooks directory
  2. +
  3. Makes the script executable
  4. +
  5. Configures the hook to run penify docgen after each commit
  6. +
+

+Hook Script Content

+

The generated post-commit hook contains:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
penify docgen -gf /path/to/git/repository -t your_api_token
+

+Installation Location

+

By default, hooks are installed in the current Git repository. You can specify a different location:

+
penify docgen install-hook -l /path/to/repo
+

+Installation Requirements

+

To install hooks, you need:

    +
  • A valid Penify API token (login first with penify login)
  • +
  • Write permissions to the .git/hooks directory
  • +
+

+Verifying Installation

+

After installation, you can verify that the hook is installed:

+
cat .git/hooks/post-commit
+

+Hook Customization

+

You can customize the post-commit hook after installation:

+

+Modifying Hook Behavior

+
    +
  1. Edit the .git/hooks/post-commit file
  2. +
  3. Add additional options to the penify docgen command
  4. +
  5. Add other commands to run after commit
  6. +
+

Example of a customized hook:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
# Generate documentation
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
+
# Additional custom commands
+
echo "Documentation generation complete!"
+

+Advanced Hook Scenarios

+

Conditional Documentation Generation:

+
#!/bin/sh
+
# Only generate documentation for commits to the main branch
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
+
if [ "$BRANCH" = "main" ]; then
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
fi
+

Documenting Specific Files/Folders:

+
#!/bin/sh
+
# Only document Python files in the src directory
+
penify docgen -l src/ -gf /path/to/git/repository -t your_api_token
+

+Hook Uninstallation

+

+Standard Uninstallation

+

To remove a hook from the current repository:

+
penify docgen uninstall-hook
+

+Specific Repository Uninstallation

+

To remove a hook from a specific repository:

+
penify docgen uninstall-hook -l /path/to/repo
+

+Manual Hook Removal

+

If needed, you can manually remove the hook:

+
rm .git/hooks/post-commit
+

+Verifying Uninstallation

+

Check that the hook was successfully removed:

+
ls -la .git/hooks/post-commit # Should return "No such file or directory"
+

+Advanced Use Cases

+

+Continuous Integration

+

Run documentation generation in CI pipelines:

+
# In your CI script
+
export PENIFY_API_TOKEN=your_api_token
+
penify docgen -l src/
+

+Batch Documentation

+

Generate documentation for multiple repositories:

+
# Bash script for batch documentation
+
for repo in repo1 repo2 repo3; do
+
cd /path/to/$repo
+
penify docgen -l .
+
done
+

+Custom Git Hook Integration

+

Integrate with other Git hooks:

+
# In .git/hooks/pre-push
+
penify docgen -l src/
+

+Documenting Release Tags

+

Generate documentation when creating a release tag:

+
# Document everything when creating a tag
+
git tag -a v1.0.0
+
penify docgen -l . # Document entire codebase
+
git commit --amend -m "Release v1.0.0 with updated documentation"
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Authentication required"**
      +
    • Run penify login before using documentation features
    • +
    • Check your API token with cat ~/.penify
    • +
    +
  2. +
  3. **"Permission denied when installing hook"**
      +
    • Check Git repository permissions
    • +
    • Try running with sudo (if appropriate for your environment)
    • +
    • Ensure the .git/hooks directory exists
    • +
    +
  4. +
  5. **"Hook installed but not running"**
      +
    • Check if the hook is executable: ls -la .git/hooks/post-commit
    • +
    • Make it executable if needed: chmod +x .git/hooks/post-commit
    • +
    • Check for syntax errors in the hook script
    • +
    +
  6. +
  7. **"File or directory not found"**
      +
    • Verify the path provided to the -l option
    • +
    • Ensure you're running the command from the correct directory
    • +
    +
  8. +
  9. **"Hook uninstallation failed"**
      +
    • Check permissions on the .git/hooks directory
    • +
    • Try manual removal: rm .git/hooks/post-commit
    • +
    +
  10. +
+

+Debugging

+

For detailed output when running documentation commands:

+
export PENIFY_DEBUG=1
+
penify docgen -l src/
+

+Getting Help

+

For command-specific help:

+
penify docgen --help
+
penify docgen install-hook --help
+
penify docgen uninstall-hook --help
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html new file mode 100644 index 0000000..b7cf0dd --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Example Workflows
+
+
+

This document demonstrates how to use Penify CLI in real-world development workflows to improve your productivity.

+

+Workflow 1: Efficient Git Commits with AI

+

+Setup

+

First, configure your local LLM for offline operation:

+
penify config llm
+

Configure your JIRA integration for enhanced commit messages:

+
penify config jira
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. When ready to commit, use Penify to generate a smart commit message:
  4. +
+
penify commit
+
    +
  1. Review and confirm the generated commit message
  2. +
  3. Git commit and push as usual
  4. +
+

+Benefits

+
    +
  • Consistent and descriptive commit messages
  • +
  • Automatic inclusion of relevant JIRA ticket information
  • +
  • Time saved from writing detailed commit messages
  • +
+

+Workflow 2: Documentation Generation Pipeline

+

+Setup

+

Login to Penify to access advanced documentation features:

+
penify login
+

Install the Git hook for automatic documentation generation:

+
penify docgen install-hook
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. Commit your changes
  4. +
  5. Documentation is automatically generated for changed files
  6. +
  7. Review the generated documentation
  8. +
+

+Manual Documentation

+

For specific files or folders:

+
penify docgen -l src/components/authentication
+

+Benefits

+
    +
  • Always up-to-date documentation
  • +
  • Consistent documentation style
  • +
  • Time saved from writing detailed documentation
  • +
+

+Workflow 3: Code Review Enhancement

+

+Setup

+

Ensure you're logged into Penify:

+
penify login
+

+Workflow

+
    +
  1. Before submitting a PR, generate documentation for changed files:
  2. +
+
penify docgen
+
    +
  1. Include the generated documentation in your PR
  2. +
  3. Reviewers can better understand your changes with the AI-generated explanations
  4. +
+

+Benefits

+
    +
  • Improved PR quality
  • +
  • Faster code reviews
  • +
  • Better team understanding of code changes
  • +
+

+Workflow 4: Onboarding New Team Members

+

+For Team Leads

+

Generate comprehensive documentation for the entire codebase:

+
penify docgen -l .
+

+For New Team Members

+

Generate focused documentation for components you're working on:

+
penify docgen -l src/components/my-feature
+

+Benefits

+
    +
  • Faster onboarding
  • +
  • Better understanding of code structure
  • +
  • Reduced questions to senior team members
  • +
+

+Workflow 5: Legacy Code Understanding

+

When working with unfamiliar legacy code:

+
# Document a specific complex file
+
penify docgen -l src/legacy/complex_module.py
+
+
# Document an entire legacy component
+
penify docgen -l src/legacy/old_component
+

+Benefits

+
    +
  • Quickly understand complex legacy systems
  • +
  • Reduce time spent deciphering undocumented code
  • +
  • Make safer changes to legacy systems
  • +
+
+
+
+ + + + + diff --git a/docs/html/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..818b859 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,135 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js new file mode 100644 index 0000000..314c51a --- /dev/null +++ b/docs/html/menudata.js @@ -0,0 +1,117 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"u",url:"namespacemembers.html#index_u"}, +{text:"v",url:"namespacemembers.html#index_v"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"f",url:"namespacemembers_func.html#index_f"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"h",url:"namespacemembers_func.html#index_h"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"s",url:"namespacemembers_func.html#index_s"}, +{text:"t",url:"namespacemembers_func.html#index_t"}, +{text:"u",url:"namespacemembers_func.html#index_u"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"p",url:"namespacemembers_vars.html#index_p"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"u",url:"namespacemembers_vars.html#index_u"}, +{text:"v",url:"namespacemembers_vars.html#index_v"}, +{text:"w",url:"namespacemembers_vars.html#index_w"}]}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__5F"}, +{text:"a",url:"functions_func.html#index_a"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 0000000..c9cb63f --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html new file mode 100644 index 0000000..e56ccb6 --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html new file mode 100644 index 0000000..fb094ec --- /dev/null +++ b/docs/html/namespacemembers_vars.html @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

      +
    • classifiers : setup
    • +
    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - n -

    + + +

    - p -

    + + +

    - s -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.html b/docs/html/namespacepenify__hook.html new file mode 100644 index 0000000..48ab393 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  api_client
     
    namespace  base_analyzer
     
    namespace  commands
     
    namespace  commit_analyzer
     
    namespace  config_command
     
    namespace  constants
     
    namespace  file_analyzer
     
    namespace  folder_analyzer
     
    namespace  git_analyzer
     
    namespace  jira_client
     
    namespace  llm_client
     
    namespace  login_command
     
    namespace  main
     
    namespace  ui_utils
     
    namespace  utils
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.js b/docs/html/namespacepenify__hook.js new file mode 100644 index 0000000..3344578 --- /dev/null +++ b/docs/html/namespacepenify__hook.js @@ -0,0 +1,56 @@ +var namespacepenify__hook = +[ + [ "api_client", "namespacepenify__hook_1_1api__client.html", "namespacepenify__hook_1_1api__client" ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", "namespacepenify__hook_1_1base__analyzer" ], + [ "commands", "namespacepenify__hook_1_1commands.html", "namespacepenify__hook_1_1commands" ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", "namespacepenify__hook_1_1commit__analyzer" ], + [ "config_command", "namespacepenify__hook_1_1config__command.html", [ + [ "handle_config", "namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e", null ] + ] ], + [ "constants", "namespacepenify__hook_1_1constants.html", [ + [ "API_URL", "namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0", null ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", "namespacepenify__hook_1_1file__analyzer" ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", "namespacepenify__hook_1_1folder__analyzer" ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", "namespacepenify__hook_1_1git__analyzer" ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", "namespacepenify__hook_1_1jira__client" ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", "namespacepenify__hook_1_1llm__client" ], + [ "login_command", "namespacepenify__hook_1_1login__command.html", [ + [ "handle_login", "namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a", null ] + ] ], + [ "main", "namespacepenify__hook_1_1main.html", [ + [ "main", "namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] + ] ], + [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [ + [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", "namespacepenify__hook_1_1utils" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1api__client.html b/docs/html/namespacepenify__hook_1_1api__client.html new file mode 100644 index 0000000..e7cd2a2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.api_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  APIClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1api__client.js b/docs/html/namespacepenify__hook_1_1api__client.js new file mode 100644 index 0000000..fb9b017 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1api__client = +[ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.html b/docs/html/namespacepenify__hook_1_1base__analyzer.html new file mode 100644 index 0000000..e5c44b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.base_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  BaseAnalyzer
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.js b/docs/html/namespacepenify__hook_1_1base__analyzer.js new file mode 100644 index 0000000..6701f69 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1base__analyzer = +[ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands.html b/docs/html/namespacepenify__hook_1_1commands.html new file mode 100644 index 0000000..91f6ae6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  auth_commands
     
    namespace  commit_commands
     
    namespace  config_commands
     
    namespace  doc_commands
     
    namespace  hook_commands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands.js b/docs/html/namespacepenify__hook_1_1commands.js new file mode 100644 index 0000000..28e70f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.js @@ -0,0 +1,38 @@ +var namespacepenify__hook_1_1commands = +[ + [ "auth_commands", "namespacepenify__hook_1_1commands_1_1auth__commands.html", [ + [ "login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] + ] ], + [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [ + [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] + ] ], + [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [ + [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880", null ] + ] ], + [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [ + [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948", null ] + ] ], + [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [ + [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html new file mode 100644 index 0000000..42aaf63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.auth_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def save_credentials (api_key)
     
    def login (api_url, dashboard_url)
     
    +

    Function Documentation

    + +

    ◆ login()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.auth_commands.login ( api_url,
     dashboard_url 
    )
    +
    +
    Open the login page in a web browser and capture the token via redirect.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_credentials()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.auth_commands.save_credentials ( api_key)
    +
    +
    Save the API key in a priority-based manner.
    +
    +This function attempts to save the API key in two locations, based on priority:
    +1. In a `.env` file located in the root of the Git repository if one is found.
    +2. In a global `.penify` file located in the user's home directory as a
    +fallback.  The function first tries to locate the Git repository using
    +`recursive_search_git_folder`. If a Git repository is found, it reads the
    +existing `.env` file (if present), updates or adds the API key under the key
    +`PENIFY_API_TOKEN`, and writes the updated content back. If any error occurs
    +during this process, it falls back to saving the credentials in the global
    +`.penify` file. The function handles exceptions and prints appropriate error
    +messages.
    +
    +Args:
    +    api_key (str): The API key to save.
    +
    +Returns:
    +    bool: True if the API key is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map new file mode 100644 index 0000000..966bdbb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 new file mode 100644 index 0000000..3843ca4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 @@ -0,0 +1 @@ +8ad325585e8efe43cb16f6c7070d7d0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg new file mode 100644 index 0000000..50d45ea --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg new file mode 100644 index 0000000..964fd40 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map new file mode 100644 index 0000000..88a6ff8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 new file mode 100644 index 0000000..a7db012 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 @@ -0,0 +1 @@ +65e495614449516908c997067ca3d2d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg new file mode 100644 index 0000000..028514f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg new file mode 100644 index 0000000..a07bb01 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map new file mode 100644 index 0000000..5c0b505 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 new file mode 100644 index 0000000..17fadc1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 @@ -0,0 +1 @@ +31a51591f0a8f9ef897c4a08daac5829 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg new file mode 100644 index 0000000..e40984b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map new file mode 100644 index 0000000..c6d1bd8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 new file mode 100644 index 0000000..051c10c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 @@ -0,0 +1 @@ +ec7d7c899a70e1c68057353448e9a6d9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg new file mode 100644 index 0000000..7d1c3a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg new file mode 100644 index 0000000..8ab520a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg @@ -0,0 +1,76 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html new file mode 100644 index 0000000..2693b3e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.commit_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    def commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
     
    def setup_commit_parser (parser)
     
    def handle_commit (args)
     
    +

    Function Documentation

    + +

    ◆ commit_code()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.commit_commands.commit_code ( api_url,
     token,
     message,
     open_terminal,
     generate_description,
     llm_model = None,
     llm_api_base = None,
     llm_api_key = None,
     jira_url = None,
     jira_user = None,
     jira_api_token = None 
    )
    +
    +
    Enhance Git commits with AI-powered commit messages.
    +
    +This function allows for the generation of enhanced commit messages using
    +natural language processing models and optionally integrates with JIRA for
    +additional context. It processes the current Git folder to find relevant files
    +and generates a detailed commit message based on the provided parameters.
    +
    +Args:
    +    api_url (str): URL of the API endpoint.
    +    token (str): Authentication token for the API.
    +    message (str): Initial commit message provided by the user.
    +    open_terminal (bool): Whether to open the terminal after committing.
    +    generate_description (bool): Whether to generate a detailed description in the commit message.
    +    llm_model (str?): The language model to use for generating the commit message. Defaults to None.
    +    llm_api_base (str?): Base URL of the LLM API. Defaults to None.
    +    llm_api_key (str?): API key for accessing the LLM service. Defaults to None.
    +    jira_url (str?): URL of the JIRA instance. Defaults to None.
    +    jira_user (str?): Username for authenticating with JIRA. Defaults to None.
    +    jira_api_token (str?): API token for accessing JIRA. Defaults to None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_commit()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.commit_commands.handle_commit ( args)
    +
    +
    Handle commit functionality by processing arguments and invoking the
    +appropriate commands.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_commit_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.commit_commands.setup_commit_parser ( parser)
    +
    +
    Sets up an argument parser for generating smart commit messages.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map new file mode 100644 index 0000000..9d410b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 new file mode 100644 index 0000000..f0df322 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 @@ -0,0 +1 @@ +ebbb356587ab923660dadd713f529935 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg new file mode 100644 index 0000000..1a0e3d8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg new file mode 100644 index 0000000..602876a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map new file mode 100644 index 0000000..45d80f3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 new file mode 100644 index 0000000..30b2f36 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 @@ -0,0 +1 @@ +b42af33551c96c0ccabd26bf5dac7901 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg new file mode 100644 index 0000000..ec9d033 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg new file mode 100644 index 0000000..c3b9bf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg @@ -0,0 +1,146 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map new file mode 100644 index 0000000..f16a071 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 new file mode 100644 index 0000000..c49ca59 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 @@ -0,0 +1 @@ +9d31c6bce57180d0019639c06f0a64c6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg new file mode 100644 index 0000000..e254716 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.setup_commit_parser + + + +Node1 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map new file mode 100644 index 0000000..2910728 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 new file mode 100644 index 0000000..9c1af92 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 @@ -0,0 +1 @@ +76b990698c4e374b742a1a611bfd524b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg new file mode 100644 index 0000000..7ad44ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg new file mode 100644 index 0000000..bd1b9a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg @@ -0,0 +1,300 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map new file mode 100644 index 0000000..d25f3e9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 new file mode 100644 index 0000000..47a6cde --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 @@ -0,0 +1 @@ +a8800179f1f560b476cc721ea33d08f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg new file mode 100644 index 0000000..c57863f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html new file mode 100644 index 0000000..7792cfd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.config_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    None load_env_files ()
     
    Path get_penify_config ()
     
    Any get_env_var_or_default (str env_var, Any default=None)
     
    def save_llm_config (model, api_base, api_key)
     
    def save_jira_config (url, username, api_token)
     
    Dict[str, str] get_llm_config ()
     
    Dict[str, str] get_jira_config ()
     
    def config_llm_web ()
     
    def config_jira_web ()
     
    Optional[str] get_token ()
     
    + + + + + +

    +Variables

    bool DOTENV_AVAILABLE = True
     
     path
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

    + +
    +
    + + + + + + + +
    def penify_hook.commands.config_commands.config_jira_web ()
    +
    +
    Starts a web server for configuring JIRA settings.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ config_llm_web()

    + +
    +
    + + + + + + + +
    def penify_hook.commands.config_commands.config_llm_web ()
    +
    +
    Starts an HTTP server for configuring LLM settings via a web interface.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_env_var_or_default()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Any penify_hook.commands.config_commands.get_env_var_or_default (str env_var,
    Any  default = None 
    )
    +
    +
    Get environment variable or return default value.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_jira_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_jira_config ()
    +
    +
    Retrieve JIRA configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_llm_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_llm_config ()
    +
    +
    Retrieve LLM configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_penify_config()

    + +
    +
    + + + + + + + +
    Path penify_hook.commands.config_commands.get_penify_config ()
    +
    +
    Returns the path to the `config.json` file within the `.penify` directory,
    +creating it if necessary.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_token()

    + +
    +
    + + + + + + + +
    Optional[str] penify_hook.commands.config_commands.get_token ()
    +
    +
    Retrieves an API token using a prioritized method.
    +
    +This function first attempts to load environment variables from all `.env`
    +files and checks if the `PENIFY_API_TOKEN` environment variable is set. If
    +found, it returns the token. If not, it looks for the API key in a
    +configuration file named 'api_keys'. If both methods fail, it returns None.
    +
    +Returns:
    +    str or None: The API token if found, otherwise None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ load_env_files()

    + +
    +
    + + + + + + + +
    None penify_hook.commands.config_commands.load_env_files ()
    +
    +
    Load environment variables from .env files in various locations with proper
    +priority.
    +
    +This function loads environment variables from .env files located in different
    +directories, prioritizing the current directory over the Git repo root and the
    +user home directory. The loading process ensures that later files override
    +earlier ones.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_jira_config()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_jira_config ( url,
     username,
     api_token 
    )
    +
    +
    Save JIRA configuration settings to a .env file.
    +
    +This function saves JIRA configuration following these steps: 1. Determine the
    +target .env file location based on whether the current directory is inside a
    +Git repository. 2. If inside a Git repo, use the Git repo root's .env file;
    +otherwise, use the user home directory's .env file. 3. Read the existing
    +content of the .env file (if it exists) to preserve other settings. 4. Update
    +the .env content with the new JIRA configuration. 5. Write the updated content
    +back to the .env file. 6. Optionally, reload environment variables to make
    +changes immediately available.
    +
    +Args:
    +    url (str): The JIRA URL to be saved in the .env file.
    +    username (str): The JIRA username to be saved in the .env file.
    +    api_token (str): The JIRA API token to be saved in the .env file.
    +
    +Returns:
    +    bool: True if the configuration was successfully saved, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_llm_config()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_llm_config ( model,
     api_base,
     api_key 
    )
    +
    +
    Save LLM configuration settings to an .env file.
    +
    +This function saves the LLM configuration following a specific priority: 1. Git
    +repo root .env (if inside a git repo) 2. User home directory .env  It handles
    +the detection of the Git repo root, reads the existing .env content, updates it
    +with the new LLM configuration, and writes it back to the file. It also reloads
    +the environment variables to make changes immediately available.
    +
    +Args:
    +    model (str): The name of the language model.
    +    api_base (str): The base URL for the API.
    +    api_key (str): The API key for authentication.
    +
    +Returns:
    +    bool: True if the configuration is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.commands.config_commands.DOTENV_AVAILABLE = True
    +
    + +
    +
    + +

    ◆ path

    + +
    +
    + + + + +
    penify_hook.commands.config_commands.path
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map new file mode 100644 index 0000000..3d04ded --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 new file mode 100644 index 0000000..8a855e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 @@ -0,0 +1 @@ +168858f3e9d4759f99db4c52c229e797 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg new file mode 100644 index 0000000..fb362e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg new file mode 100644 index 0000000..3cc35c6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map new file mode 100644 index 0000000..31799e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 new file mode 100644 index 0000000..3595ee0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 @@ -0,0 +1 @@ +543187d5c63c1c460ff6dd5d57c6a646 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg new file mode 100644 index 0000000..b03c3d5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg new file mode 100644 index 0000000..9f5c40f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg @@ -0,0 +1,149 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map new file mode 100644 index 0000000..6bb067d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 new file mode 100644 index 0000000..fd6eb21 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 @@ -0,0 +1 @@ +91a6c2c6a25f3c8c1d38cd6f5f5c3f25 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg new file mode 100644 index 0000000..ece71b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg new file mode 100644 index 0000000..3ab7894 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map new file mode 100644 index 0000000..988f965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 new file mode 100644 index 0000000..f9c067a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 @@ -0,0 +1 @@ +78a315f2a9f5ef12496dc5b4a1f2f578 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg new file mode 100644 index 0000000..af8bba2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg new file mode 100644 index 0000000..5dd38f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg @@ -0,0 +1,398 @@ + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map new file mode 100644 index 0000000..523e618 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 new file mode 100644 index 0000000..1d6bd9c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 @@ -0,0 +1 @@ +1312bc7ffa0a3c4b3d914591e46647ea \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg new file mode 100644 index 0000000..6772dc2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map new file mode 100644 index 0000000..0a1bd6e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 new file mode 100644 index 0000000..4427799 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 @@ -0,0 +1 @@ +64e3e5d1614b987e9beaa7b1002e49e6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg new file mode 100644 index 0000000..7653ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg new file mode 100644 index 0000000..4779598 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg @@ -0,0 +1,94 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map new file mode 100644 index 0000000..8a89956 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 new file mode 100644 index 0000000..47f24a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 @@ -0,0 +1 @@ +e227b3587529f3c7fa14501fb496ccc8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg new file mode 100644 index 0000000..af6abf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg new file mode 100644 index 0000000..0cd794d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg @@ -0,0 +1,106 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map new file mode 100644 index 0000000..27e33e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 new file mode 100644 index 0000000..5a5a866 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 @@ -0,0 +1 @@ +9c6b048bd5412b617ea890b1f88c2104 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg new file mode 100644 index 0000000..6b05345 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg new file mode 100644 index 0000000..8a0f76b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg @@ -0,0 +1,214 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map new file mode 100644 index 0000000..55fc422 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 new file mode 100644 index 0000000..c4b9ce2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 @@ -0,0 +1 @@ +67c138c843a1f5d8ab7592c326643328 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg new file mode 100644 index 0000000..aa2fbc9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg new file mode 100644 index 0000000..4b9759c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map new file mode 100644 index 0000000..11e9843 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 new file mode 100644 index 0000000..280df61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 @@ -0,0 +1 @@ +32e055c0ae757bbecf2b86db164d29df \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg new file mode 100644 index 0000000..2e5a94a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg new file mode 100644 index 0000000..7c7fba4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg @@ -0,0 +1,128 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map new file mode 100644 index 0000000..a9f72bb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 new file mode 100644 index 0000000..6643612 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 @@ -0,0 +1 @@ +69777adad7caeabd935b90d3f0ca21e8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg new file mode 100644 index 0000000..26a2c27 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map new file mode 100644 index 0000000..9de687d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 new file mode 100644 index 0000000..3e643ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 @@ -0,0 +1 @@ +4f8f2c5d878438fd8fa2e1f0ca1dbc52 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg new file mode 100644 index 0000000..9a839f1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg new file mode 100644 index 0000000..a6f9814 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg @@ -0,0 +1,264 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map new file mode 100644 index 0000000..85cba52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 new file mode 100644 index 0000000..26009b0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 @@ -0,0 +1 @@ +91b1c0b60f8171163e43b782cfdc5e4b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg new file mode 100644 index 0000000..5ed2818 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg @@ -0,0 +1,51 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map new file mode 100644 index 0000000..d99de6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 new file mode 100644 index 0000000..a2245b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 @@ -0,0 +1 @@ +e208c1be2bea05a2824626f2971c2bf3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg new file mode 100644 index 0000000..e4f35a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg new file mode 100644 index 0000000..a264e4b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg @@ -0,0 +1,403 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map new file mode 100644 index 0000000..66dc072 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 new file mode 100644 index 0000000..9c2e575 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 @@ -0,0 +1 @@ +68e4fb55d25659f523e8547c8cb01464 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg new file mode 100644 index 0000000..d2e2758 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map new file mode 100644 index 0000000..c80d943 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 new file mode 100644 index 0000000..1f53baa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 @@ -0,0 +1 @@ +d1ffd3debe0bd71ea914f1dd47c727ad \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg new file mode 100644 index 0000000..359799d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg new file mode 100644 index 0000000..d5eb5c0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg @@ -0,0 +1,116 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map new file mode 100644 index 0000000..f9b2f55 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 new file mode 100644 index 0000000..7795142 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 @@ -0,0 +1 @@ +e83a80d18918d47faae41628fcd92c7a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg new file mode 100644 index 0000000..5211cae --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg new file mode 100644 index 0000000..d7f7ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg @@ -0,0 +1,122 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map new file mode 100644 index 0000000..fc35b2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 new file mode 100644 index 0000000..166f9b7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 @@ -0,0 +1 @@ +e627346d77982130e6685bfc2c553220 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg new file mode 100644 index 0000000..b4cc55b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg new file mode 100644 index 0000000..72fd941 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html new file mode 100644 index 0000000..88b9805 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.doc_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    def generate_doc (api_url, token, location=None)
     
    def setup_docgen_parser (parser)
     
    def handle_docgen (args)
     
    + + + +

    +Variables

    string docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.doc_commands.generate_doc ( api_url,
     token,
     location = None 
    )
    +
    +
    Generates documentation based on the given parameters.
    +
    +This function initializes an API client using the provided API URL and token.
    +It then generates documentation by analyzing the specified location, which can
    +be a folder, a file, or the current working directory if no location is
    +provided. The function handles different types of analysis based on the input
    +location and reports any errors encountered during the process.
    +
    +Args:
    +    api_url (str): The URL of the API to connect to for documentation generation.
    +    token (str): The authentication token for accessing the API.
    +    location (str?): The path to a specific file or folder to analyze. If not provided,
    +        the current working directory is used.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_docgen()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.doc_commands.handle_docgen ( args)
    +
    +
    Handle document generation and hook management based on subcommands.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_docgen_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.doc_commands.setup_docgen_parser ( parser)
    +
    +
    Configure a parser for generating documentation using Git commands.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ docgen_description

    + +
    +
    + + + + +
    string penify_hook.commands.doc_commands.docgen_description
    +
    +Initial value:
    1= """Generate code documentation using Penify.
    +
    2
    +
    3This command requires you to be logged in to your Penify account.
    +
    4You can generate documentation for:
    +
    5- Current Git diff (default)
    +
    6- Specific file
    +
    7- Specific folder
    +
    8"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map new file mode 100644 index 0000000..2c0a565 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 new file mode 100644 index 0000000..472a430 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 @@ -0,0 +1 @@ +d7ee1e07127beb9f489b974a61acce5d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg new file mode 100644 index 0000000..9ea3b5d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg new file mode 100644 index 0000000..838bb12 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg @@ -0,0 +1,170 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map new file mode 100644 index 0000000..37a65e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 new file mode 100644 index 0000000..9d429ee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 @@ -0,0 +1 @@ +ed70390d069e80c493faf1a14a7c6fff \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg new file mode 100644 index 0000000..6790fe4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg @@ -0,0 +1,108 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node1->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node1->Node6 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map new file mode 100644 index 0000000..3084ab9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 new file mode 100644 index 0000000..171b82e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 @@ -0,0 +1 @@ +5e9faa5a79a60188abcf0c90efae69aa \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg new file mode 100644 index 0000000..c5131ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg new file mode 100644 index 0000000..4cf4b48 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg @@ -0,0 +1,221 @@ + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map new file mode 100644 index 0000000..0ee99eb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 new file mode 100644 index 0000000..0dc7e32 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 @@ -0,0 +1 @@ +0fa78969e5f8672d0da52972dd124680 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg new file mode 100644 index 0000000..998d629 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.doc_commands.setup_docgen_parser + + + +Node1 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html new file mode 100644 index 0000000..f88093c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.hook_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def install_git_hook (location, token)
     
    def uninstall_git_hook (location)
     
    + + + + + +

    +Variables

    string HOOK_FILENAME = "post-commit"
     
    string HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.hook_commands.install_git_hook ( location,
     token 
    )
    +
    +
    Install a post-commit Git hook that generates documentation for changed files.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ uninstall_git_hook()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.hook_commands.uninstall_git_hook ( location)
    +
    +
    Uninstalls the post-commit hook from the specified location.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

    + +
    +
    + + + + +
    string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
    +
    + +
    +
    + +

    ◆ HOOK_TEMPLATE

    + +
    +
    + + + + +
    string penify_hook.commands.hook_commands.HOOK_TEMPLATE
    +
    +Initial value:
    1= """#!/bin/sh
    +
    2# This is a post-commit hook generated by penify.
    +
    3# Automatically generates documentation for changed files after each commit.
    +
    4
    +
    5penify docgen -gf {git_folder_path} -t {token}
    +
    6"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map new file mode 100644 index 0000000..ea3d3f4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 new file mode 100644 index 0000000..197f108 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 @@ -0,0 +1 @@ +25f36344702d0e8ec428aac2f670078e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg new file mode 100644 index 0000000..a399555 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg new file mode 100644 index 0000000..6068928 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map new file mode 100644 index 0000000..16920b6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 new file mode 100644 index 0000000..333d2ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 @@ -0,0 +1 @@ +3ec2e3ff4462cc865b4cb6fd3a62753d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg new file mode 100644 index 0000000..ebcff0a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg new file mode 100644 index 0000000..8141220 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.html b/docs/html/namespacepenify__hook_1_1commit__analyzer.html new file mode 100644 index 0000000..401a742 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commit_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  CommitDocGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.js b/docs/html/namespacepenify__hook_1_1commit__analyzer.js new file mode 100644 index 0000000..da2cbba --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1commit__analyzer = +[ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command.html b/docs/html/namespacepenify__hook_1_1config__command.html new file mode 100644 index 0000000..fddefcd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.config_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_config_parser (parent_parser)
     
    def handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.handle_config ( args)
    +
    +
    Handle configuration settings based on the specified config type.
    +
    +This function processes different types of configurations such as LLM (Language
    +Model) and JIRA. It saves configurations, sets up web-based configurations, and
    +verifies JIRA connections. Depending on the `args.config_type`, it imports
    +necessary modules, handles configuration saving or setup, and optionally
    +verifies JIRA connectivity.
    +
    +Args:
    +    args (argparse.Namespace): Command-line arguments containing the type of configuration to handle.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_config_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.setup_config_parser ( parent_parser)
    +
    +
    Set up configuration parsers with subcommands for LLM and JIRA settings.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map new file mode 100644 index 0000000..5262513 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 new file mode 100644 index 0000000..1e009e6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 @@ -0,0 +1 @@ +4f75720d323fed0e1cf98ec14ae8f6e9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg new file mode 100644 index 0000000..7daaddc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg new file mode 100644 index 0000000..2707803 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg @@ -0,0 +1,182 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map new file mode 100644 index 0000000..b702a42 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 new file mode 100644 index 0000000..a09bdd4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 @@ -0,0 +1 @@ +f35e472a3767aa0a0b09219e96174cf9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg new file mode 100644 index 0000000..cafcc47 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map new file mode 100644 index 0000000..f0c2ef3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 new file mode 100644 index 0000000..48311b5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 @@ -0,0 +1 @@ +a17b5eb406ca6a74de12d7201d9bcee7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg new file mode 100644 index 0000000..edae0c9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.config_command.setup_config_parser + + + +Node1 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1constants.html b/docs/html/namespacepenify__hook_1_1constants.html new file mode 100644 index 0000000..712cd59 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.constants Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.constants Namespace Reference
    +
    +
    + + + + + + +

    +Variables

    string API_URL = 'http://localhost:8000/api'
     
    string DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
     
    +

    Variable Documentation

    + +

    ◆ API_URL

    + +
    +
    + + + + +
    string penify_hook.constants.API_URL = 'http://localhost:8000/api'
    +
    + +
    +
    + +

    ◆ DASHBOARD_URL

    + +
    +
    + + + + +
    string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.html b/docs/html/namespacepenify__hook_1_1file__analyzer.html new file mode 100644 index 0000000..91f1f2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.file_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FileAnalyzerGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.file_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.js b/docs/html/namespacepenify__hook_1_1file__analyzer.js new file mode 100644 index 0000000..2fd7c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1file__analyzer = +[ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.html b/docs/html/namespacepenify__hook_1_1folder__analyzer.html new file mode 100644 index 0000000..b8341cd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.folder_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FolderAnalyzerGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.js b/docs/html/namespacepenify__hook_1_1folder__analyzer.js new file mode 100644 index 0000000..01d86ca --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1folder__analyzer = +[ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.html b/docs/html/namespacepenify__hook_1_1git__analyzer.html new file mode 100644 index 0000000..3ec05ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.git_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitDocGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.git_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.js b/docs/html/namespacepenify__hook_1_1git__analyzer.js new file mode 100644 index 0000000..d89c507 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1git__analyzer = +[ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "logger", "namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1jira__client.html b/docs/html/namespacepenify__hook_1_1jira__client.html new file mode 100644 index 0000000..8751ac6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.jira_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  JiraClient
     
    + + + +

    +Variables

    bool JIRA_AVAILABLE = True
     
    +

    Variable Documentation

    + +

    ◆ JIRA_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.jira_client.JIRA_AVAILABLE = True
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1jira__client.js b/docs/html/namespacepenify__hook_1_1jira__client.js new file mode 100644 index 0000000..824018c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1jira__client = +[ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1llm__client.html b/docs/html/namespacepenify__hook_1_1llm__client.html new file mode 100644 index 0000000..4cef1c3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.llm_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  LLMClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1llm__client.js b/docs/html/namespacepenify__hook_1_1llm__client.js new file mode 100644 index 0000000..9f99a1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1llm__client = +[ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command.html b/docs/html/namespacepenify__hook_1_1login__command.html new file mode 100644 index 0000000..77ba67b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.login_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_login_parser (parser)
     
    def handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.handle_login ( args)
    +
    +
    Initiates a user login process using predefined constants and the `login`
    +function.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_login_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.setup_login_parser ( parser)
    +
    +
    Set up command-line arguments for login.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map new file mode 100644 index 0000000..e39c064 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 new file mode 100644 index 0000000..2daae41 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 @@ -0,0 +1 @@ +34cbd1a77d726e3937d67455d405b0ba \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg new file mode 100644 index 0000000..84d1c1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.setup_login_parser + + + +Node1 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map new file mode 100644 index 0000000..dd44b98 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 new file mode 100644 index 0000000..ad91965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 @@ -0,0 +1 @@ +6a1ceeef99a0101ba5882e9e71fa9bce \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg new file mode 100644 index 0000000..23caccd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg new file mode 100644 index 0000000..97e0e2a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map new file mode 100644 index 0000000..74fa8c7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 new file mode 100644 index 0000000..7a114f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 @@ -0,0 +1 @@ +1f6ec32e02e9919f90ba1a6a23743cb6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg new file mode 100644 index 0000000..88bfdb9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main.html b/docs/html/namespacepenify__hook_1_1main.html new file mode 100644 index 0000000..f09c8f7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.main Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.main Namespace Reference
    +
    +
    + + + + +

    +Functions

    def main ()
     
    +

    Function Documentation

    + +

    ◆ main()

    + +
    +
    + + + + + + + +
    def penify_hook.main.main ()
    +
    +
    Main function to handle command-line interface (CLI) interactions with Penify
    +services.
    +
    +This tool provides a command-line interface for generating smart commit
    +messages, configuring local-LLM and JIRA, and generating code documentation. It
    +supports basic commands that do not require login and advanced commands that
    +require user authentication. The `--version` flag can be used to display the
    +version information.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map new file mode 100644 index 0000000..5c35b70 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 new file mode 100644 index 0000000..304cb74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 @@ -0,0 +1 @@ +73631f13dbb5d5f90aafdead88d96c1c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg new file mode 100644 index 0000000..eed8f52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg @@ -0,0 +1,708 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg new file mode 100644 index 0000000..4199d83 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg @@ -0,0 +1,620 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map new file mode 100644 index 0000000..3aaa58c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 new file mode 100644 index 0000000..4bf17ac --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 @@ -0,0 +1 @@ +3a9435159e82b3293bbcf47f41f2b41c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg new file mode 100644 index 0000000..5001f6b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg @@ -0,0 +1,28 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils.html b/docs/html/namespacepenify__hook_1_1ui__utils.html new file mode 100644 index 0000000..c4ca8db --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.ui_utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.ui_utils Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def format_info (message)
     
    def format_success (message)
     
    def format_warning (message)
     
    def format_error (message)
     
    def format_highlight (message)
     
    def format_file_path (file_path)
     
    def print_info (message)
     
    def print_success (message)
     
    def print_warning (message)
     
    def print_error (message)
     
    def print_processing (file_path)
     
    def print_status (status, message)
     
    def create_progress_bar (total, desc="Processing", unit="item")
     
    def create_stage_progress_bar (stages, desc="Processing")
     
    def update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     autoreset
     
     INFO_COLOR = Fore.CYAN
     
     SUCCESS_COLOR = Fore.GREEN
     
     WARNING_COLOR = Fore.YELLOW
     
     ERROR_COLOR = Fore.RED
     
     HIGHLIGHT_COLOR = Fore.BLUE
     
     NEUTRAL_COLOR = Fore.WHITE
     
    string SUCCESS_SYMBOL = "✓"
     
    string WARNING_SYMBOL = "○"
     
    string ERROR_SYMBOL = "✗"
     
    string PROCESSING_SYMBOL = "⟳"
     
    +

    Detailed Description

    +
    UI utilities for Penify CLI.
    +
    +This module provides utility functions for consistent UI formatting,
    +colored output, and progress indicators across the Penify CLI application.
    +

    Function Documentation

    + +

    ◆ create_progress_bar()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.create_progress_bar ( total,
     desc = "Processing",
     unit = "item" 
    )
    +
    +
    Create a tqdm progress bar with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ create_stage_progress_bar()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.create_stage_progress_bar ( stages,
     desc = "Processing" 
    )
    +
    +
    Create a tqdm progress bar for processing stages with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_error()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_error ( message)
    +
    +
    Format an error message with the specified error color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_file_path()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_file_path ( file_path)
    +
    +
    Format a file path with a warning color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_highlight()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_highlight ( message)
    +
    +
    Format a highlighted message with appropriate color.
    +
    +
    + +

    ◆ format_info()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_info ( message)
    +
    +
    Format an informational message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_success()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_success ( message)
    +
    +
    Formats a success message with green color and reset style.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_warning()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_warning ( message)
    +
    +
    Format a warning message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_error()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_error ( message)
    +
    +
    Print an error message with appropriate formatting.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_info()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_info ( message)
    +
    +
    Prints an informational message with formatting.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_processing()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_processing ( file_path)
    +
    +
    Print a processing message for a specified file.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_status()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.print_status ( status,
     message 
    )
    +
    +
    Print a status message with an appropriate symbol.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_success()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_success ( message)
    +
    +
    Prints a formatted success message.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_warning()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_warning ( message)
    +
    +
    Prints a warning message with formatted output.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ update_stage()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.update_stage ( pbar,
     stage_name 
    )
    +
    +
    Update the progress bar with a new stage name.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ autoreset

    + +
    +
    + + + + +
    penify_hook.ui_utils.autoreset
    +
    + +
    +
    + +

    ◆ ERROR_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.ERROR_COLOR = Fore.RED
    +
    + +
    +
    + +

    ◆ ERROR_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
    +
    + +
    +
    + +

    ◆ HIGHLIGHT_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
    +
    + +
    +
    + +

    ◆ INFO_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
    +
    + +
    +
    + +

    ◆ NEUTRAL_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
    +
    + +
    +
    + +

    ◆ PROCESSING_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
    +
    + +
    +
    + +

    ◆ SUCCESS_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
    +
    + +
    +
    + +

    ◆ SUCCESS_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
    +
    + +
    +
    + +

    ◆ WARNING_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
    +
    + +
    +
    + +

    ◆ WARNING_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map new file mode 100644 index 0000000..25e33d6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 new file mode 100644 index 0000000..e8c2c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 @@ -0,0 +1 @@ +e844738072248c6c64fdcc2330f4e553 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg new file mode 100644 index 0000000..d1398fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg new file mode 100644 index 0000000..1de8b95 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg @@ -0,0 +1,259 @@ + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map new file mode 100644 index 0000000..b3bbd49 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 new file mode 100644 index 0000000..61c5559 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 @@ -0,0 +1 @@ +107c8ab941ac9fce368d49be27d3ad77 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg new file mode 100644 index 0000000..4f4e98b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map new file mode 100644 index 0000000..2837065 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 new file mode 100644 index 0000000..28e733d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 @@ -0,0 +1 @@ +31face48bece50b969dd777e2fc02655 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg new file mode 100644 index 0000000..c38d43e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map new file mode 100644 index 0000000..9aa84d3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 new file mode 100644 index 0000000..95113cf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 @@ -0,0 +1 @@ +dc9c89eee18a938f2f9191abf1d0c4e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg new file mode 100644 index 0000000..3d3ba26 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.ui_utils.format +_warning + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map new file mode 100644 index 0000000..951c8b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 new file mode 100644 index 0000000..cd55665 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 @@ -0,0 +1 @@ +9fb882734b6d928eec5be79c1f8ddcfd \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg new file mode 100644 index 0000000..c19d945 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg new file mode 100644 index 0000000..8fa32d4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg @@ -0,0 +1,243 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map new file mode 100644 index 0000000..dd6f039 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 new file mode 100644 index 0000000..2cb272d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 @@ -0,0 +1 @@ +86ecc3cd8eb77718a70cf2d0a033d81b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg new file mode 100644 index 0000000..7e446d7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.ui_utils.format +_success + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map new file mode 100644 index 0000000..ae7f6f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 new file mode 100644 index 0000000..aeb43db --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 @@ -0,0 +1 @@ +5a5f4e31cb2a03012aa538af45b7c2f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg new file mode 100644 index 0000000..72720aa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map new file mode 100644 index 0000000..7bb444c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 new file mode 100644 index 0000000..13a3f9b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 @@ -0,0 +1 @@ +07bb20aff57367351bd025b6bbac0225 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg new file mode 100644 index 0000000..29c14be --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map new file mode 100644 index 0000000..f7b8a4e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 new file mode 100644 index 0000000..2972d31 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 @@ -0,0 +1 @@ +c7fe8cba89008798c4a6df0ce478844e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg new file mode 100644 index 0000000..756b57c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map new file mode 100644 index 0000000..1474643 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 new file mode 100644 index 0000000..69b06bc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 @@ -0,0 +1 @@ +e9b17f53f8eea3fa235635a840d97fb5 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg new file mode 100644 index 0000000..35fcfaa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg new file mode 100644 index 0000000..d6c4844 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg @@ -0,0 +1,178 @@ + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map new file mode 100644 index 0000000..9ed7a63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 new file mode 100644 index 0000000..5199573 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 @@ -0,0 +1 @@ +e25efaa5775be3034819eb11f9cbeeb3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg new file mode 100644 index 0000000..1b60170 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg new file mode 100644 index 0000000..a84c7b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg @@ -0,0 +1,87 @@ + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map new file mode 100644 index 0000000..68ad486 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 new file mode 100644 index 0000000..882dba5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 @@ -0,0 +1 @@ +3b447097b4d45a9b7a66bc911d7dd54f \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg new file mode 100644 index 0000000..dd6a762 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg new file mode 100644 index 0000000..1b51200 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map new file mode 100644 index 0000000..b95ed08 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 new file mode 100644 index 0000000..e14594c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 @@ -0,0 +1 @@ +f7f77cf41919f414860683374ddefc0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg new file mode 100644 index 0000000..268b380 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.ui_utils.format +_error + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map new file mode 100644 index 0000000..cfe84b1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 new file mode 100644 index 0000000..8538194 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 @@ -0,0 +1 @@ +9c27aeee4681a41d96bdc9cb1c2cd259 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg new file mode 100644 index 0000000..5e321ab --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg new file mode 100644 index 0000000..e913c1f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg @@ -0,0 +1,162 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map new file mode 100644 index 0000000..07143b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 new file mode 100644 index 0000000..f566c4a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 @@ -0,0 +1 @@ +0ee2c99f818d114be866466bd3ca67e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg new file mode 100644 index 0000000..ec42fa5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg @@ -0,0 +1,37 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map new file mode 100644 index 0000000..a111cc8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 new file mode 100644 index 0000000..9d7b6fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 @@ -0,0 +1 @@ +4693bdcc77b647a09f27d1c12b6cf38a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg new file mode 100644 index 0000000..5e238f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg new file mode 100644 index 0000000..f960222 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map new file mode 100644 index 0000000..7df2c63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 new file mode 100644 index 0000000..0acebf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 @@ -0,0 +1 @@ +ebb2d3fbd74327cb6297532859329884 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg new file mode 100644 index 0000000..af64c2d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg new file mode 100644 index 0000000..99f7f74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg @@ -0,0 +1,337 @@ + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map new file mode 100644 index 0000000..a068346 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 new file mode 100644 index 0000000..fc03531 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 @@ -0,0 +1 @@ +cb2ef693a136057440c77b2ffc5fc5cc \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg new file mode 100644 index 0000000..57fce61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.ui_utils.print_status + + + +Node1 + + +penify_hook.ui_utils.print +_status + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map new file mode 100644 index 0000000..0d99cfe --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 new file mode 100644 index 0000000..c14d515 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 @@ -0,0 +1 @@ +65fe82e63024fcc065fa65dce2c0c8fb \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg new file mode 100644 index 0000000..a59c184 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map new file mode 100644 index 0000000..f15b74e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 new file mode 100644 index 0000000..568301c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 @@ -0,0 +1 @@ +34c0d184b1a914e69d4b0bdacbaaff04 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg new file mode 100644 index 0000000..8c29f6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map new file mode 100644 index 0000000..37c3667 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 new file mode 100644 index 0000000..354e231 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 @@ -0,0 +1 @@ +788f6631fd68b88312b14eace530bcf4 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg new file mode 100644 index 0000000..fa2467e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg new file mode 100644 index 0000000..2e9a0f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg @@ -0,0 +1,72 @@ + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.html b/docs/html/namespacepenify__hook_1_1utils.html new file mode 100644 index 0000000..19de32e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.utils Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

    def get_repo_details (Repo repo)
     
    def recursive_search_git_folder (folder_path)
     
    def find_git_parent (path)
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.find_git_parent ( path)
    +
    +
    Traverse up from the given path to find the nearest directory containing a .git
    +subdirectory.
    +
    +
    + +

    ◆ get_repo_details()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.get_repo_details (Repo repo)
    +
    +
    Determine the details of a repository including its remote URL, hosting
    +service, organization name, and repository name.
    +
    +This function extracts the remote URL from the given Git repository object and
    +determines the hosting service (e.g., GitHub, Azure DevOps, Bitbucket, GitLab).
    +It then parses the URL to extract the organization name and repository name. If
    +the URL does not match any known hosting service pattern, it sets the hosting
    +service as "Unknown". The function handles exceptions that may occur during
    +this process and logs an error message if needed.
    +
    +Args:
    +    repo (Repo): A GitPython Repo object representing the local git repository.
    +
    +Returns:
    +    dict: A dictionary containing the organization name, repository name, and hosting
    +        service.
    +
    +
    +
    + +

    ◆ recursive_search_git_folder()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.recursive_search_git_folder ( folder_path)
    +
    +
    Recursively searches for a .git folder starting from the given directory.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.utils.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.js b/docs/html/namespacepenify__hook_1_1utils.js new file mode 100644 index 0000000..af7a599 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.js @@ -0,0 +1,8 @@ +var namespacepenify__hook_1_1utils = +[ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map new file mode 100644 index 0000000..054f06d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 new file mode 100644 index 0000000..1431c94 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 @@ -0,0 +1 @@ +dd726258fb2e799d709d2647521b3371 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg new file mode 100644 index 0000000..058cc5f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map new file mode 100644 index 0000000..24785f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 new file mode 100644 index 0000000..768ce43 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 @@ -0,0 +1 @@ +7f750ca69d16550b240f7065f5db45d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg new file mode 100644 index 0000000..4b06faf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg @@ -0,0 +1,815 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg new file mode 100644 index 0000000..8094fbd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg @@ -0,0 +1,727 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..6f511ea --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Namespace List
    +
    + +
    + + + + + diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js new file mode 100644 index 0000000..7fcb39b --- /dev/null +++ b/docs/html/namespaces_dup.js @@ -0,0 +1,20 @@ +var namespaces_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", "namespacepenify__hook" ], + [ "setup", "namespacesetup.html", [ + [ "author", "namespacesetup.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "namespacesetup.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "namespacesetup.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "namespacesetup.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "namespacesetup.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "namespacesetup.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c", null ] + ] ], + [ "tests", "namespacetests.html", "namespacetests" ] +]; \ No newline at end of file diff --git a/docs/html/namespacesetup.html b/docs/html/namespacesetup.html new file mode 100644 index 0000000..892dbf6 --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + +penify-cli: setup Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     name
     
     version
     
     packages
     
     install_requires
     
     entry_points
     
     author
     
     author_email
     
     description
     
     long_description
     
     long_description_content_type
     
     url
     
     classifiers
     
     python_requires
     
    +

    Variable Documentation

    + +

    ◆ author

    + +
    +
    + + + + +
    setup.author
    +
    + +
    +
    + +

    ◆ author_email

    + +
    +
    + + + + +
    setup.author_email
    +
    + +
    +
    + +

    ◆ classifiers

    + +
    +
    + + + + +
    setup.classifiers
    +
    + +
    +
    + +

    ◆ description

    + +
    +
    + + + + +
    setup.description
    +
    + +
    +
    + +

    ◆ entry_points

    + +
    +
    + + + + +
    setup.entry_points
    +
    + +
    +
    + +

    ◆ install_requires

    + +
    +
    + + + + +
    setup.install_requires
    +
    + +
    +
    + +

    ◆ long_description

    + +
    +
    + + + + +
    setup.long_description
    +
    + +
    +
    + +

    ◆ long_description_content_type

    + +
    +
    + + + + +
    setup.long_description_content_type
    +
    + +
    +
    + +

    ◆ name

    + +
    +
    + + + + +
    setup.name
    +
    + +
    +
    + +

    ◆ packages

    + +
    +
    + + + + +
    setup.packages
    +
    + +
    +
    + +

    ◆ python_requires

    + +
    +
    + + + + +
    setup.python_requires
    +
    + +
    +
    + +

    ◆ url

    + +
    +
    + + + + +
    setup.url
    +
    + +
    +
    + +

    ◆ version

    + +
    +
    + + + + +
    setup.version
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.html b/docs/html/namespacetests.html new file mode 100644 index 0000000..f375460 --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  conftest
     
    namespace  test_commit_commands
     
    namespace  test_config_commands
     
    namespace  test_doc_commands
     
    namespace  test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.js b/docs/html/namespacetests.js new file mode 100644 index 0000000..cc880ce --- /dev/null +++ b/docs/html/namespacetests.js @@ -0,0 +1,20 @@ +var namespacetests = +[ + [ "conftest", "namespacetests_1_1conftest.html", null ], + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", "namespacetests_1_1test__commit__commands" ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", "namespacetests_1_1test__config__commands" ], + [ "test_doc_commands", "namespacetests_1_1test__doc__commands.html", [ + [ "test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", "namespacetests_1_1test__web__config" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1conftest.html b/docs/html/namespacetests_1_1conftest.html new file mode 100644 index 0000000..9cbd784 --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.conftest Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    tests.conftest Namespace Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.html b/docs/html/namespacetests_1_1test__commit__commands.html new file mode 100644 index 0000000..cff79b7 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_commit_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestCommitCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.js b/docs/html/namespacetests_1_1test__commit__commands.js new file mode 100644 index 0000000..03fd373 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__commit__commands = +[ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__config__commands.html b/docs/html/namespacetests_1_1test__config__commands.html new file mode 100644 index 0000000..c1436dc --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_config_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestConfigCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__config__commands.js b/docs/html/namespacetests_1_1test__config__commands.js new file mode 100644 index 0000000..ae998ee --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__config__commands = +[ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands.html b/docs/html/namespacetests_1_1test__doc__commands.html new file mode 100644 index 0000000..22c2f88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,746 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_doc_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def test_setup_docgen_parser ()
     
    def test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_error_handling ( mock_api_client,
     mock_git_analyzer,
     mock_exit 
    )
    +
    +
    Generate a documentation string for the provided code snippet using
    +Google Docstring style.
    +
    +Short one line description: Test function to ensure proper error
    +handling during API calls with GitAnalyzer.  Multiline long description:
    +This test function is designed to verify that the generate_doc function
    +handles exceptions correctly when an error occurs during API interaction
    +with GitAnalyzer. It sets up a mock API client and a mock Git analyzer,
    +causing the analyzer to raise an exception to simulate a failure
    +condition. The function then asserts that the exit code is set to 1 when
    +the error handling mechanism is invoked.
    +
    +Args:
    +    mock_api_client (MagicMock): A mock object simulating the API client.
    +    mock_git_analyzer (MagicMock): A mock object simulating the Git analyzer, configured to raise an
    +        exception.
    +    mock_exit (MagicMock): A mock object representing the exit function, which should be called
    +        with an error code.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_file_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_file_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test generating a documentation file location.
    +
    +This function tests the process of generating a documentation file
    +location using mock objects for API client, folder analyzer, file
    +analyzer, and Git analyzer. It sets up the necessary mocks, calls the
    +`generate_doc` function with specified parameters, and asserts that the
    +appropriate methods on the mock objects are called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_folder_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_folder_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test the function to generate documentation for a folder location.
    +
    +It sets up mock objects for API client, folder analyzer, file analyzer,
    +and Git analyzer, then calls the `generate_doc` function with specified
    +parameters. Finally, it asserts that the correct methods on the mock
    +objects were called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_no_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_no_location ( mock_getcwd,
     mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test function to generate documentation without location information.
    +
    +This function sets up mocks for the API client, current working
    +directory, and Git analyzer. It then calls the `generate_doc` function
    +with a fake API URL and token. The function is expected to initialize
    +the API client, configure the Git analyzer, and run it without any
    +location information.
    +
    +Args:
    +    mock_getcwd (MagicMock): Mock for os.getcwd().
    +    mock_api_client (MagicMock): Mock for creating an API client.
    +    mock_folder_analyzer (MagicMock): Mock for folder analysis.
    +    mock_file_analyzer (MagicMock): Mock for file analysis.
    +    mock_git_analyzer (MagicMock): Mock for Git analyzer setup.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_file_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_file_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a Python source file.
    +
    +This function reads a Python file and generates a docstring based on its
    +content. It uses mock objects to simulate API calls and directory
    +operations during testing.
    +
    +Args:
    +    mock_api_client (unittest.mock.MagicMock): A mock object for simulating API client behavior.
    +    mock_getcwd (unittest.mock.MagicMock): A mock object for simulating the current working directory function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_folder_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_folder_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a given API endpoint and save it to a
    +folder.
    +
    +This function fetches data from the specified API endpoint, processes
    +it, and saves the generated documentation in the provided folder. If an
    +error occurs during the fetching process, a SystemExit exception is
    +raised with an appropriate message.
    +
    +Args:
    +    api_url (str): The URL of the API endpoint from which data will be fetched.
    +    token (str): The authentication token required to access the API.
    +    folder_path (str): The path to the folder where the documentation will be saved.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_generate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_generate ( mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the direct documentation generation functionality.
    +
    +This function tests the `handle_docgen` function when no subcommand is
    +provided. It verifies that the document generation hook is called and
    +the uninstall and install hooks are not called.
    +
    +Args:
    +    mock_get_token (MagicMock): Mocked function to get authentication token.
    +    mock_generate_doc (MagicMock): Mocked function for generating documentation.
    +    mock_uninstall_hook (MagicMock): Mocked function for uninstalling the document generation hook.
    +    mock_install_hook (MagicMock): Mocked function for installing the document generation hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_install_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_install_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the handling of the 'install-hook' subcommand.
    +
    +This function sets up a mock environment where it simulates the
    +execution of the 'install-hook' subcommand. It verifies that the
    +`mock_install_hook` is called with the correct arguments, while
    +`mock_generate_doc` and `mock_uninstall_hook` are not called.
    +
    +Args:
    +    mock_exit (MagicMock): Mock object for sys.exit.
    +    mock_get_token (MagicMock): Mock object to simulate fetching a token.
    +    mock_generate_doc (MagicMock): Mock object to simulate generating documentation.
    +    mock_uninstall_hook (MagicMock): Mock object to simulate uninstalling a hook.
    +    mock_install_hook (MagicMock): Mock object to simulate installing a hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_no_token()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_no_token ( mock_exit,
     mock_get_token 
    )
    +
    +
    Test the behavior of the `handle_docgen` function when no token is
    +provided.
    +
    +This function asserts that if no token is returned by `mock_get_token`,
    +the `handle_docgen` function will call `mock_exit` with a status code of
    +1.
    +
    +Args:
    +    mock_exit (MagicMock): A MagicMock object simulating the `exit` function.
    +    mock_get_token (MagicMock): A MagicMock object simulating the `get_token` function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_uninstall_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the uninstall-hook subcommand of the handle_docgen function.
    +This test case sets up a mock environment and verifies that the
    +uninstall-hook is called with the correct location, while generate_doc
    +and install_hook are not called.
    +
    +Args:
    +    mock_exit (MagicMock): A mock for the exit function.
    +    mock_get_token (MagicMock): A mock for the get_token function.
    +    mock_generate_doc (MagicMock): A mock for the generate_doc function.
    +    mock_uninstall_hook (MagicMock): A mock for the uninstall_hook function.
    +    mock_install_hook (MagicMock): A mock for the install_hook function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_setup_docgen_parser()

    + +
    +
    + + + + + + + +
    def tests.test_doc_commands.test_setup_docgen_parser ()
    +
    +
    Test the setup_docgen_parser function to ensure it properly configures
    +the ArgumentParser for docgen options.
    +
    +It verifies that the parser correctly sets up docgen options and handles
    +different subcommands like 'install-hook' and 'uninstall-hook'.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map new file mode 100644 index 0000000..f0f54c3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 new file mode 100644 index 0000000..b280dc5 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 @@ -0,0 +1 @@ +28c17f21f2a2a250d23b14c68e3e5d3a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg new file mode 100644 index 0000000..c482b86 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_file_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map new file mode 100644 index 0000000..a8ff77b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 new file mode 100644 index 0000000..53e2e0a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 @@ -0,0 +1 @@ +192fbe5412db3710d1849692c54ac106 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg new file mode 100644 index 0000000..6ca2ff2 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_setup_docgen_parser + + + +Node1 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node2 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map new file mode 100644 index 0000000..b5bbb57 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 new file mode 100644 index 0000000..300f399 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 @@ -0,0 +1 @@ +aef759552fc6cc4d80899b0b13739a5e \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg new file mode 100644 index 0000000..94a320e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg new file mode 100644 index 0000000..fd67a25 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map new file mode 100644 index 0000000..f220740 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 new file mode 100644 index 0000000..ef64a42 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 @@ -0,0 +1 @@ +10d76966ac7089e8706fb1aec3e4f9d6 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg new file mode 100644 index 0000000..b369e3b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_file_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map new file mode 100644 index 0000000..1cee3ef --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 new file mode 100644 index 0000000..076630a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 @@ -0,0 +1 @@ +064f1a8c9470887507dea5cf5dd184eb \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg new file mode 100644 index 0000000..d9f33f9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_folder_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map new file mode 100644 index 0000000..6505473 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 new file mode 100644 index 0000000..314f15d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 @@ -0,0 +1 @@ +e42b926dad2f0ff5205af415d972f1da \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg new file mode 100644 index 0000000..f231670 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_folder_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map new file mode 100644 index 0000000..73c8b64 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 new file mode 100644 index 0000000..99c08a9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 @@ -0,0 +1 @@ +d4d1f9d92eb42ae249ce3409ab7627ac \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg new file mode 100644 index 0000000..0ee0fcd --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_no_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map new file mode 100644 index 0000000..86fe3ea --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 new file mode 100644 index 0000000..28ac74a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 @@ -0,0 +1 @@ +810237d2c8640fcab5bd4448f12a9692 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg new file mode 100644 index 0000000..ae76a88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg new file mode 100644 index 0000000..408dbc3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map new file mode 100644 index 0000000..97c848c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 new file mode 100644 index 0000000..56e1467 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 @@ -0,0 +1 @@ +dc60bba75d6f8dafbd4701e4ac271385 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg new file mode 100644 index 0000000..927f757 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg new file mode 100644 index 0000000..0258a01 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map new file mode 100644 index 0000000..1b841f4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 new file mode 100644 index 0000000..ef9f04c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 @@ -0,0 +1 @@ +7930a342103b95a29b43ca93e1212cff \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg new file mode 100644 index 0000000..9768a7e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_error_handling + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map new file mode 100644 index 0000000..6b196ac --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 new file mode 100644 index 0000000..8969799 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 @@ -0,0 +1 @@ +4dfa85ad92a13ab307edd504ab65bb1a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg new file mode 100644 index 0000000..b636d21 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg new file mode 100644 index 0000000..0cfb00d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.html b/docs/html/namespacetests_1_1test__web__config.html new file mode 100644 index 0000000..fb6c3cd --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_web_config Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestWebConfig
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.js b/docs/html/namespacetests_1_1test__web__config.js new file mode 100644 index 0000000..9c444bb --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__web__config = +[ + [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] +]; \ No newline at end of file diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/-m, --message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3", null ], + [ "-e, --terminal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4", null ], + [ "-d, --description", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5", null ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6", [ + [ "Generate Title Only with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7", null ], + [ "Generate Title and Description with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8", null ], + [ "Generate and Edit Full Commit Message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9", null ], + [ "Generate, Edit, and Provide Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10", null ] + ] ], + [ "LLM and JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11", [ + [ "Using Local LLM", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12", null ], + [ "JIRA Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13", null ] + ] ], + [ "Configuration Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14", null ], + [ "Examples", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15", [ + [ "Basic Commit with Default Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16", null ], + [ "Full Workflow with All Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19", null ] + ] ] + ] ], + [ "Penify CLI - Configuration Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html", [ + [ "Configuration Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22", null ], + [ "LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24", null ], + [ "Supported LLMs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25", [ + [ "OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26", null ], + [ "Anthropic", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27", null ], + [ "Ollama (Local)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28", null ], + [ "Azure OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29", null ] + ] ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30", null ] + ] ], + [ "JIRA Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32", null ], + [ "Creating a JIRA API Token", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33", null ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34", null ] + ] ], + [ "Configuration Locations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35", null ], + [ "Environment Variables", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36", null ], + [ "Command-Line Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37", null ], + [ "Sharing Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38", null ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40", null ] + ] ] + ] ], + [ "Penify CLI - Detailed Usage Guide", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42", null ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43", [ + [ "Login Process", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44", null ], + [ "API Token Storage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45", null ], + [ "Token Precedence", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46", null ] + ] ], + [ "Command Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47", null ], + [ "Commit Message Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48", null ], + [ "Code Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49", [ + [ "Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50", null ], + [ "Authentication Requirement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51", null ] + ] ], + [ "Configuration Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52", null ], + [ "Git Hooks", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53", [ + [ "Post-Commit Hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54", null ], + [ "Custom Hook Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55", null ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56", [ + [ "CI/CD Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57", null ], + [ "Remote Repository Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60", null ], + [ "Logs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62", null ] + ] ] + ] ], + [ "Penify CLI - Documentation Generation Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65", null ], + [ "Command Options", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66", [ + [ "-l, --location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67", null ], + [ "Subcommands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68", [ + [ "install-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69", null ], + [ "uninstall-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70", null ] + ] ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71", [ + [ "Generate Documentation for Current Git Diff", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72", null ], + [ "Generate Documentation for a Specific File", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73", null ], + [ "Generate Documentation for a Folder", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74", null ], + [ "Install Hook in Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75", null ], + [ "Install Hook in Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76", null ], + [ "Uninstall Hook from Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77", null ], + [ "Uninstall Hook from Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78", null ] + ] ], + [ "Git Hook Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79", [ + [ "Hook Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80", [ + [ "How Hooks Work", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81", null ], + [ "Hook Script Content", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82", null ], + [ "Installation Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83", null ], + [ "Installation Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84", null ], + [ "Verifying Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85", null ] + ] ], + [ "Hook Customization", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86", [ + [ "Modifying Hook Behavior", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87", null ], + [ "Advanced Hook Scenarios", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88", null ] + ] ], + [ "Hook Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89", [ + [ "Standard Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90", null ], + [ "Specific Repository Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91", null ], + [ "Manual Hook Removal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92", null ], + [ "Verifying Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93", null ] + ] ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94", [ + [ "Continuous Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95", null ], + [ "Batch Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96", null ], + [ "Custom Git Hook Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97", null ], + [ "Documenting Release Tags", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100", null ], + [ "Debugging", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101", null ], + [ "Getting Help", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102", null ] + ] ] + ] ], + [ "Penify CLI Example Workflows", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html", [ + [ "Workflow 1: Efficient Git Commits with AI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107", null ] + ] ], + [ "Workflow 2: Documentation Generation Pipeline", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110", null ], + [ "Manual Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112", null ] + ] ], + [ "Workflow 3: Code Review Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114", null ], + [ "Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116", null ] + ] ], + [ "Workflow 4: Onboarding New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117", [ + [ "For Team Leads", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118", null ], + [ "For New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120", null ] + ] ], + [ "Workflow 5: Legacy Code Understanding", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121", [ + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122", null ] + ] ] + ] ], + [ "Penify CLI Tool", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html", [ + [ "Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157", null ], + [ "Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158", null ], + [ "Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159", null ], + [ "Basic Commands (No login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160", [ + [ "Commit", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161", null ], + [ "Config", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162", null ] + ] ], + [ "Advanced Commands (Login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163", [ + [ "Login", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164", null ], + [ "Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165", null ], + [ "Git Hook Management", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166", null ] + ] ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167", null ], + [ "Local LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168", null ], + [ "JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169", null ], + [ "Development", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170", [ + [ "Running Tests", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171", null ] + ] ], + [ "License", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172", null ], + [ "Author", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173", null ], + [ "Contributing", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174", null ], + [ "Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176", null ] + ] ], + [ "Namespaces", "namespaces.html", [ + [ "Namespace List", "namespaces.html", "namespaces_dup" ], + [ "Namespace Members", "namespacemembers.html", [ + [ "All", "namespacemembers.html", null ], + [ "Functions", "namespacemembers_func.html", null ], + [ "Variables", "namespacemembers_vars.html", null ] + ] ] + ] ], + [ "Classes", "annotated.html", [ + [ "Class List", "annotated.html", "annotated_dup" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions", "functions_func.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ], + [ "Files", "files.html", [ + [ "File List", "files.html", "files_dup" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"annotated.html", +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js new file mode 100644 index 0000000..8358b16 --- /dev/null +++ b/docs/html/navtreeindex0.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX0 = +{ +"annotated.html":[7,0], +"api__client_8py.html":[8,0,0,1,2], +"auth__commands_8py.html":[8,0,0,1,0,1], +"auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655":[8,0,0,1,0,1,0], +"auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24":[8,0,0,1,0,1,1], +"base__analyzer_8py.html":[8,0,0,1,3], +"classException.html":[7,0,2], +"classes.html":[7,1], +"classpenify__hook_1_1api__client_1_1APIClient.html":[7,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html":[6,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[6,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[7,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[6,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[7,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[7,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[6,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[6,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[7,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[6,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[7,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[6,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[7,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[7,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[6,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[6,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[7,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[7,0,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[6,0,0,0,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[6,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[7,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[6,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[7,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[6,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[7,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[7,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[6,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[6,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[7,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[6,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[7,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[6,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[7,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[7,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[6,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[7,0,0,1,0,3], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[6,0,0,1,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[6,0,0,3,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[7,0,0,2,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[6,0,0,3,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[7,0,0,2,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[6,0,0,3,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[7,0,0,2,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[7,0,0,2,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[6,0,0,3,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[7,0,0,2,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[6,0,0,3,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[7,0,0,2,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[6,0,0,3,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[7,0,0,2,0,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[6,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[6,0,0,6,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[7,0,0,3,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[6,0,0,6,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[7,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[7,0,0,3,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[6,0,0,6,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[6,0,0,6,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[7,0,0,3,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[7,0,0,3,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[6,0,0,6,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[6,0,0,6,0,4], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[7,0,0,3,0,4], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[6,0,0,7,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[7,0,0,4,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[7,0,0,4,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[6,0,0,7,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[6,0,0,7,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[7,0,0,4,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[7,0,0,4,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[6,0,0,7,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[7,0,0,4,0,2], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[6,0,0,7,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[6,0,0,8,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[7,0,0,5,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[7,0,0,5,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[6,0,0,8,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[6,0,0,8,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[7,0,0,5,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[7,0,0,5,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[6,0,0,8,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[6,0,0,8,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[7,0,0,5,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[7,0,0,5,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[6,0,0,8,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[7,0,0,6,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[6,0,0,9,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[7,0,0,6,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[6,0,0,9,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[7,0,0,6,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[6,0,0,9,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[6,0,0,9,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[7,0,0,6,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[7,0,0,6,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[6,0,0,9,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[6,0,0,9,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[7,0,0,6,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[6,0,0,9,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[7,0,0,6,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[7,0,0,6,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[6,0,0,9,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[6,0,0,9,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[7,0,0,6,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[7,0,0,6,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[6,0,0,9,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[7,0,0,6,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[6,0,0,9,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[7,0,0,6,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[6,0,0,9,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[7,0,0,6,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[6,0,0,9,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[7,0,0,6,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[6,0,0,9,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[7,0,0,6,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[6,0,0,9,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[7,0,0,6,0,11], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[6,0,0,9,0,11], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[6,0,0,10,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[7,0,0,7,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[7,0,0,7,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[6,0,0,10,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[7,0,0,7,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[6,0,0,10,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[6,0,0,10,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[7,0,0,7,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[7,0,0,7,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[6,0,0,10,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[7,0,0,7,0,2], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[6,0,0,10,0,2], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[7,0,0,8,0], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[6,0,0,14,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[6,0,2,1,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[7,0,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[6,0,2,1,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[7,0,1,0,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[7,0,1,0,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[6,0,2,1,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[7,0,1,0,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[6,0,2,1,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[7,0,1,0,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[6,0,2,1,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[6,0,2,1,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[7,0,1,0,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[7,0,1,0,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[6,0,2,1,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[6,0,2,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[7,0,1,0,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[7,0,1,0,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[6,0,2,1,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[7,0,1,0,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[6,0,2,1,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[6,0,2,1,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[7,0,1,0,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[6,0,2,1,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[7,0,1,0,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[6,0,2,1,0,5], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[7,0,1,0,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[6,0,2,2,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[7,0,1,1,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[7,0,1,1,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[6,0,2,2,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[6,0,2,2,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[7,0,1,1,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[7,0,1,1,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[6,0,2,2,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[7,0,1,1,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[6,0,2,2,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[7,0,1,1,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[6,0,2,2,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[7,0,1,1,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[6,0,2,2,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[7,0,1,1,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[6,0,2,2,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[6,0,2,2,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[7,0,1,1,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[7,0,1,1,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[6,0,2,2,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[6,0,2,2,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[7,0,1,1,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[6,0,2,2,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[7,0,1,1,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[7,0,1,1,0,9], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[6,0,2,2,0,9], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[6,0,2,4,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[7,0,1,2,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[6,0,2,4,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[7,0,1,2,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[7,0,1,2,0,1], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[6,0,2,4,0,1], +"commit__analyzer_8py.html":[8,0,0,1,4], +"commit__commands_8py.html":[8,0,0,1,0,2], +"commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a":[8,0,0,1,0,2,0], +"commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c":[8,0,0,1,0,2,2], +"commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23":[8,0,0,1,0,2,1], +"config__command_8py.html":[8,0,0,1,5], +"config__command_8py.html#a240e5331681eb574ac319d7458783bde":[8,0,0,1,5,0], +"config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e":[8,0,0,1,5,1], +"config__commands_8py.html":[8,0,0,1,0,3], +"config__commands_8py.html#a152642ab83cf6219b604bda6122aba67":[8,0,0,1,0,3,10], +"config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[8,0,0,1,0,3,3], +"config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c":[8,0,0,1,0,3,1], +"config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[8,0,0,1,0,3,2], +"config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4":[8,0,0,1,0,3,9], +"config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880":[8,0,0,1,0,3,11], +"config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812":[8,0,0,1,0,3,6], +"config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[8,0,0,1,0,3,4], +"config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20":[8,0,0,1,0,3,5], +"config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae":[8,0,0,1,0,3,7], +"config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[8,0,0,1,0,3,8], +"config__commands_8py.html#af115198ea5d6808ccb98733957f50b06":[8,0,0,1,0,3,0], +"conftest_8py.html":[8,0,0,2,1], +"constants_8py.html":[8,0,0,1,6], +"constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0":[8,0,0,1,6,1], +"constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0":[8,0,0,1,6,0], +"dir_063e2d5fe58a131099a7fe4200cca78c.html":[8,0,0,2], +"dir_1648a057408aae8db85b8e3797335623.html":[8,0,0,0], +"dir_624fa2a8bce97f0444ac5cca335d4e23.html":[8,0,0,1,0], +"dir_b3b22d2ab7966b65f6b237e3231b41be.html":[8,0,0], +"dir_f88c3381c1861b3f7ca1f3d63cf244b5.html":[8,0,0,1], +"doc__commands_8py.html":[8,0,0,1,0,4], +"doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704":[8,0,0,1,0,4,1], +"doc__commands_8py.html#a3e42540047da37565afffeaf106cb948":[8,0,0,1,0,4,3], +"doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25":[8,0,0,1,0,4,0], +"doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0":[8,0,0,1,0,4,2], +"file__analyzer_8py.html":[8,0,0,1,7], +"file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828":[8,0,0,1,7,1], +"files.html":[8,0], +"folder__analyzer_8py.html":[8,0,0,1,8], +"functions.html":[7,3,0], +"functions_func.html":[7,3,1], +"functions_vars.html":[7,3,2], +"git__analyzer_8py.html":[8,0,0,1,9], +"git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a":[8,0,0,1,9,1], +"hierarchy.html":[7,2], +"hook__commands_8py.html":[8,0,0,1,0,5], +"hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[8,0,0,1,0,5,3], +"hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d":[8,0,0,1,0,5,1], +"hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2":[8,0,0,1,0,5,0], +"hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1":[8,0,0,1,0,5,2], +"index.html":[], +"jira__client_8py.html":[8,0,0,1,10] +}; diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js new file mode 100644 index 0000000..f9245fe --- /dev/null +++ b/docs/html/navtreeindex1.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX1 = +{ +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2":[8,0,0,1,10,1], +"llm__client_8py.html":[8,0,0,1,11], +"login__command_8py.html":[8,0,0,1,12], +"login__command_8py.html#aae63db4c484797bead34b7d874020c6a":[8,0,0,1,12,1], +"login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[8,0,0,1,12,0], +"main_8py.html":[8,0,0,1,13], +"main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f":[8,0,0,1,13,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html":[5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157":[5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158":[5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159":[5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160":[5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161":[5,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162":[5,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163":[5,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164":[5,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165":[5,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166":[5,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167":[5,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168":[5,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169":[5,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170":[5,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171":[5,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172":[5,9], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173":[5,10], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174":[5,11], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175":[5,12], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176":[5,13], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html":[0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md1":[0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10":[0,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11":[0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12":[0,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13":[0,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14":[0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15":[0,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16":[0,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17":[0,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18":[0,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19":[0,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md2":[0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3":[0,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4":[0,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5":[0,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6":[0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7":[0,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8":[0,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9":[0,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html":[1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21":[1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22":[1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23":[1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24":[1,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25":[1,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26":[1,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27":[1,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28":[1,2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29":[1,2,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30":[1,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31":[1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32":[1,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33":[1,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34":[1,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35":[1,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36":[1,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37":[1,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38":[1,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39":[1,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40":[1,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html":[2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42":[2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43":[2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44":[2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45":[2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46":[2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47":[2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48":[2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49":[2,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50":[2,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51":[2,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52":[2,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53":[2,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54":[2,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55":[2,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56":[2,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57":[2,7,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58":[2,7,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59":[2,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60":[2,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61":[2,8,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62":[2,8,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html":[3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100":[3,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101":[3,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102":[3,6,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64":[3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65":[3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66":[3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67":[3,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68":[3,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69":[3,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70":[3,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71":[3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72":[3,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73":[3,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74":[3,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75":[3,3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76":[3,3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77":[3,3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78":[3,3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79":[3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80":[3,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81":[3,4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82":[3,4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83":[3,4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84":[3,4,0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85":[3,4,0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86":[3,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87":[3,4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88":[3,4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89":[3,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90":[3,4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91":[3,4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92":[3,4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93":[3,4,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94":[3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95":[3,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96":[3,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97":[3,5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98":[3,5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99":[3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html":[4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104":[4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105":[4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106":[4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107":[4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108":[4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109":[4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110":[4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111":[4,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112":[4,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113":[4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114":[4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115":[4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116":[4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117":[4,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118":[4,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119":[4,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120":[4,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121":[4,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122":[4,4,0], +"namespacemembers.html":[6,1,0], +"namespacemembers_func.html":[6,1,1], +"namespacemembers_vars.html":[6,1,2], +"namespacepenify__hook.html":[6,0,0], +"namespacepenify__hook_1_1api__client.html":[6,0,0,0], +"namespacepenify__hook_1_1base__analyzer.html":[6,0,0,1], +"namespacepenify__hook_1_1commands.html":[6,0,0,2], +"namespacepenify__hook_1_1commands_1_1auth__commands.html":[6,0,0,2,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655":[6,0,0,2,0,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24":[6,0,0,2,0,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html":[6,0,0,2,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a":[6,0,0,2,1,0], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c":[6,0,0,2,1,2], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23":[6,0,0,2,1,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html":[6,0,0,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67":[6,0,0,2,2,10], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[6,0,0,2,2,3], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c":[6,0,0,2,2,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[6,0,0,2,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4":[6,0,0,2,2,9], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880":[6,0,0,2,2,11], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812":[6,0,0,2,2,6], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[6,0,0,2,2,4], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20":[6,0,0,2,2,5], +"namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae":[6,0,0,2,2,7], +"namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[6,0,0,2,2,8], +"namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06":[6,0,0,2,2,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html":[6,0,0,2,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704":[6,0,0,2,3,1], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948":[6,0,0,2,3,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25":[6,0,0,2,3,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0":[6,0,0,2,3,2], +"namespacepenify__hook_1_1commands_1_1hook__commands.html":[6,0,0,2,4], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[6,0,0,2,4,3], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d":[6,0,0,2,4,1], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2":[6,0,0,2,4,0], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1":[6,0,0,2,4,2], +"namespacepenify__hook_1_1commit__analyzer.html":[6,0,0,3], +"namespacepenify__hook_1_1config__command.html":[6,0,0,4], +"namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde":[6,0,0,4,0], +"namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e":[6,0,0,4,1], +"namespacepenify__hook_1_1constants.html":[6,0,0,5], +"namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0":[6,0,0,5,1], +"namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0":[6,0,0,5,0], +"namespacepenify__hook_1_1file__analyzer.html":[6,0,0,6], +"namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828":[6,0,0,6,1], +"namespacepenify__hook_1_1folder__analyzer.html":[6,0,0,7], +"namespacepenify__hook_1_1git__analyzer.html":[6,0,0,8], +"namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a":[6,0,0,8,1], +"namespacepenify__hook_1_1jira__client.html":[6,0,0,9], +"namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2":[6,0,0,9,1], +"namespacepenify__hook_1_1llm__client.html":[6,0,0,10], +"namespacepenify__hook_1_1login__command.html":[6,0,0,11], +"namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a":[6,0,0,11,1], +"namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[6,0,0,11,0], +"namespacepenify__hook_1_1main.html":[6,0,0,12], +"namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f":[6,0,0,12,0], +"namespacepenify__hook_1_1ui__utils.html":[6,0,0,13], +"namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[6,0,0,13,7], +"namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c":[6,0,0,13,0], +"namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff":[6,0,0,13,24], +"namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa":[6,0,0,13,13], +"namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4":[6,0,0,13,22], +"namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[6,0,0,13,12], +"namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756":[6,0,0,13,21], +"namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[6,0,0,13,23], +"namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef":[6,0,0,13,1], +"namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe":[6,0,0,13,16], +"namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e":[6,0,0,13,2], +"namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776":[6,0,0,13,6], +"namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d":[6,0,0,13,14], +"namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16":[6,0,0,13,25], +"namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f":[6,0,0,13,8], +"namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44":[6,0,0,13,9], +"namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6":[6,0,0,13,5], +"namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c":[6,0,0,13,19], +"namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0":[6,0,0,13,17], +"namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c":[6,0,0,13,11], +"namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71":[6,0,0,13,15], +"namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[6,0,0,13,18], +"namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5":[6,0,0,13,20], +"namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[6,0,0,13,4], +"namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[6,0,0,13,10], +"namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[6,0,0,13,3], +"namespacepenify__hook_1_1utils.html":[6,0,0,14], +"namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01":[6,0,0,14,4], +"namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[6,0,0,14,1], +"namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[6,0,0,14,3], +"namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[6,0,0,14,2], +"namespaces.html":[6,0], +"namespacesetup.html":[6,0,1], +"namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c":[6,0,1,12], +"namespacesetup.html#a3796ea10c998699d07d391414ff5d720":[6,0,1,7], +"namespacesetup.html#a3a57a4772d418a06835249cbade0d86a":[6,0,1,0], +"namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde":[6,0,1,6], +"namespacesetup.html#a5b08034343aa2be607722a8b315f3625":[6,0,1,1], +"namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf":[6,0,1,10], +"namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f":[6,0,1,8], +"namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785":[6,0,1,2] +}; diff --git a/docs/html/navtreeindex2.js b/docs/html/navtreeindex2.js new file mode 100644 index 0000000..8e18872 --- /dev/null +++ b/docs/html/navtreeindex2.js @@ -0,0 +1,90 @@ +var NAVTREEINDEX2 = +{ +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588":[6,0,1,5], +"namespacesetup.html#ada7058afc98897f073d3f3b8b9157059":[6,0,1,4], +"namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0":[6,0,1,3], +"namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb":[6,0,1,11], +"namespacesetup.html#aff2375a361fd5865c77bd9aa093be747":[6,0,1,9], +"namespacetests.html":[6,0,2], +"namespacetests_1_1conftest.html":[6,0,2,0], +"namespacetests_1_1test__commit__commands.html":[6,0,2,1], +"namespacetests_1_1test__config__commands.html":[6,0,2,2], +"namespacetests_1_1test__doc__commands.html":[6,0,2,3], +"namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45":[6,0,2,3,1], +"namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[6,0,2,3,10], +"namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482":[6,0,2,3,9], +"namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0":[6,0,2,3,4], +"namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186":[6,0,2,3,2], +"namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3":[6,0,2,3,5], +"namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8":[6,0,2,3,3], +"namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a":[6,0,2,3,6], +"namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05":[6,0,2,3,7], +"namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0":[6,0,2,3,0], +"namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c":[6,0,2,3,8], +"namespacetests_1_1test__web__config.html":[6,0,2,4], +"pages.html":[], +"penify__hook_2____init_____8py.html":[8,0,0,1,1], +"penify__hook_2commands_2____init_____8py.html":[8,0,0,1,0,0], +"setup_8py.html":[8,0,0,3], +"setup_8py.html#a2aa722b36a933088812b50ea79b97a5c":[8,0,0,3,12], +"setup_8py.html#a3796ea10c998699d07d391414ff5d720":[8,0,0,3,7], +"setup_8py.html#a3a57a4772d418a06835249cbade0d86a":[8,0,0,3,0], +"setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde":[8,0,0,3,6], +"setup_8py.html#a5b08034343aa2be607722a8b315f3625":[8,0,0,3,1], +"setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf":[8,0,0,3,10], +"setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f":[8,0,0,3,8], +"setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785":[8,0,0,3,2], +"setup_8py.html#abead4f26b530856f858f0d44c7cf2588":[8,0,0,3,5], +"setup_8py.html#ada7058afc98897f073d3f3b8b9157059":[8,0,0,3,4], +"setup_8py.html#aedf461ec52a946bda975938ba0b93ec0":[8,0,0,3,3], +"setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb":[8,0,0,3,11], +"setup_8py.html#aff2375a361fd5865c77bd9aa093be747":[8,0,0,3,9], +"test__commit__commands_8py.html":[8,0,0,2,2], +"test__config__commands_8py.html":[8,0,0,2,3], +"test__doc__commands_8py.html":[8,0,0,2,4], +"test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45":[8,0,0,2,4,1], +"test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[8,0,0,2,4,10], +"test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482":[8,0,0,2,4,9], +"test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0":[8,0,0,2,4,4], +"test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186":[8,0,0,2,4,2], +"test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3":[8,0,0,2,4,5], +"test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8":[8,0,0,2,4,3], +"test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a":[8,0,0,2,4,6], +"test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05":[8,0,0,2,4,7], +"test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0":[8,0,0,2,4,0], +"test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c":[8,0,0,2,4,8], +"test__web__config_8py.html":[8,0,0,2,5], +"tests_2____init_____8py.html":[8,0,0,2,0], +"ui__utils_8py.html":[8,0,0,1,14], +"ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[8,0,0,1,14,7], +"ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c":[8,0,0,1,14,0], +"ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff":[8,0,0,1,14,24], +"ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa":[8,0,0,1,14,13], +"ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4":[8,0,0,1,14,22], +"ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[8,0,0,1,14,12], +"ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756":[8,0,0,1,14,21], +"ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[8,0,0,1,14,23], +"ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef":[8,0,0,1,14,1], +"ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe":[8,0,0,1,14,16], +"ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e":[8,0,0,1,14,2], +"ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776":[8,0,0,1,14,6], +"ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d":[8,0,0,1,14,14], +"ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16":[8,0,0,1,14,25], +"ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f":[8,0,0,1,14,8], +"ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44":[8,0,0,1,14,9], +"ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6":[8,0,0,1,14,5], +"ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c":[8,0,0,1,14,19], +"ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0":[8,0,0,1,14,17], +"ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c":[8,0,0,1,14,11], +"ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71":[8,0,0,1,14,15], +"ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[8,0,0,1,14,18], +"ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5":[8,0,0,1,14,20], +"ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[8,0,0,1,14,4], +"ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[8,0,0,1,14,10], +"ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[8,0,0,1,14,3], +"utils_8py.html":[8,0,0,1,15], +"utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01":[8,0,0,1,15,4], +"utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[8,0,0,1,15,1], +"utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[8,0,0,1,15,3], +"utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[8,0,0,1,15,2] +}; diff --git a/docs/html/open.png b/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + + + + + + + + + + +penify-cli: Related Pages + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Related Pages
    +
    + +
    + + + + + diff --git a/docs/html/penify-cli-documentation_8md.html b/docs/html/penify-cli-documentation_8md.html new file mode 100644 index 0000000..c9fda3f --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/penify__hook_2____init_____8py.html b/docs/html/penify__hook_2____init_____8py.html new file mode 100644 index 0000000..c8a1d23 --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    __init__.py File Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/penify__hook_2commands_2____init_____8py.html b/docs/html/penify__hook_2commands_2____init_____8py.html new file mode 100644 index 0000000..0e2e60d --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.commands
     
    +
    +
    + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..7fe30d1 --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,150 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html new file mode 100644 index 0000000..bb9e364 --- /dev/null +++ b/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..66bb827 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5f_5finit_5f_5f_2epy_1',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]], + ['_5famend_5fcommit_2',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['_5flitellm_3',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html new file mode 100644 index 0000000..8989416 --- /dev/null +++ b/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..b6a2dbe --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]], + ['api_5fclient_1',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5fclient_2epy_2',['api_client.py',['../api__client_8py.html',1,'']]], + ['api_5furl_3',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_4',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['apiclient_5',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]], + ['auth_5fcommands_2epy_6',['auth_commands.py',['../auth__commands_8py.html',1,'']]], + ['auth_5ftoken_7',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_8',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_9',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_10',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html new file mode 100644 index 0000000..a7c1f9c --- /dev/null +++ b/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 0000000..7fb377d --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_4',['setup',['../namespacesetup.html',1,'']]], + ['setup_2epy_5',['setup.py',['../setup_8py.html',1,'']]], + ['setup_5fcommit_5fparser_6',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_7',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_8',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_9',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]], + ['success_5fcolor_10',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_11',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_12',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html new file mode 100644 index 0000000..8f86146 --- /dev/null +++ b/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 0000000..45646f7 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcode_5ferror_5fhandling_1',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_2',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_3',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_4',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcommands_5',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fcommit_5fcommands_2epy_6',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_7',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2epy_8',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_9',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_10',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fdoc_5fcommands_11',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_2epy_12',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_13',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_14',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_15',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_16',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_17',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_18',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_19',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_20',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_21',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_22',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_23',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_24',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_25',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_26',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_27',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_28',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_29',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_30',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_31',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_32',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_33',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_34',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_35',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_36',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_37',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]], + ['test_5fweb_5fconfig_38',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['test_5fweb_5fconfig_2epy_39',['test_web_config.py',['../test__web__config_8py.html',1,'']]], + ['testcommitcommands_40',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_41',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['tests_42',['tests',['../namespacetests.html',1,'']]], + ['testwebconfig_43',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html new file mode 100644 index 0000000..90b128f --- /dev/null +++ b/docs/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 0000000..0d33c8a --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['uninstall_5fgit_5fhook_1',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_2',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_3',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]], + ['url_4',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]], + ['utils_2epy_5',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html new file mode 100644 index 0000000..272d129 --- /dev/null +++ b/docs/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html new file mode 100644 index 0000000..291e0d9 --- /dev/null +++ b/docs/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html new file mode 100644 index 0000000..98e648c --- /dev/null +++ b/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..56f2add --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]], + ['baseanalyzer_1',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]], + ['bearer_5ftoken_2',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html new file mode 100644 index 0000000..f4e8da7 --- /dev/null +++ b/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..45ec4ff --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]], + ['commit_2dcommands_2emd_1',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_2',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcode_3',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['commit_5fcommands_2epy_4',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['commitdocgenhook_5',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]], + ['config_2dcommands_2emd_6',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_7',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_8',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['config_5fjira_5fweb_9',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_10',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['conftest_2epy_11',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_12',['constants.py',['../constants_8py.html',1,'']]], + ['create_5fprogress_5fbar_13',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_14',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html new file mode 100644 index 0000000..678d3a2 --- /dev/null +++ b/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..ccfe815 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['detailed_2dusage_2emd_2',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['dir_5fpath_3',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['doc_5fcommands_2emd_4',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_5',['doc_commands.py',['../doc__commands_8py.html',1,'']]], + ['docgen_5fdescription_6',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_7',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html new file mode 100644 index 0000000..aa9af78 --- /dev/null +++ b/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..89b0ea5 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['entry_5fpoints_1',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_2',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_3',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]], + ['example_2dworkflows_2emd_4',['example-workflows.md',['../example-workflows_8md.html',1,'']]], + ['exception_5',['Exception',['../classException.html',1,'']]], + ['extract_5fissue_5fkeys_6',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_7',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html new file mode 100644 index 0000000..d3026a7 --- /dev/null +++ b/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..9da4602 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['file_5fpath_1',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['fileanalyzergenhook_2',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['find_5fgit_5fparent_3',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['folder_5fanalyzer_2epy_4',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]], + ['folder_5fpath_5',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['folderanalyzergenhook_6',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_7',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_8',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_9',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_10',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_11',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_12',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_13',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html new file mode 100644 index 0000000..b2ee042 --- /dev/null +++ b/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..d5e7346 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]], + ['git_5fanalyzer_2epy_17',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]], + ['gitdocgenhook_18',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_19',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html new file mode 100644 index 0000000..40a0b3f --- /dev/null +++ b/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..b83bbc6 --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]], + ['highlight_5fcolor_4',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5fcommands_2epy_5',['hook_commands.py',['../hook__commands_8py.html',1,'']]], + ['hook_5ffilename_6',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_7',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html new file mode 100644 index 0000000..7c49144 --- /dev/null +++ b/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..bf0f94f --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5fgit_5fhook_1',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['install_5frequires_2',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]], + ['is_5fconnected_3',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html new file mode 100644 index 0000000..fc9d79c --- /dev/null +++ b/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..cb87635 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fclient_2epy_3',['jira_client.py',['../jira__client_8py.html',1,'']]], + ['jira_5furl_4',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_5',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]], + ['jiraclient_6',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html new file mode 100644 index 0000000..dafb1fa --- /dev/null +++ b/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..2024217 --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['llm_5fclient_2',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['llm_5fclient_2epy_3',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['llmclient_4',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]], + ['load_5fenv_5ffiles_5',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['logger_6',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['login_7',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]], + ['login_5fcommand_2epy_8',['login_command.py',['../login__command_8py.html',1,'']]], + ['long_5fdescription_9',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_10',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html new file mode 100644 index 0000000..9df619d --- /dev/null +++ b/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..885d3c4 --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['main_2epy_1',['main.py',['../main_8py.html',1,'']]], + ['mock_5fapi_5fclient_2',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_3',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_4',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_5',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_6',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_7',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['model_8',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html new file mode 100644 index 0000000..95d8eec --- /dev/null +++ b/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html new file mode 100644 index 0000000..a54e120 --- /dev/null +++ b/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..c246db6 --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['packages_18',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_19',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['penify_20cli_20_2d_20commit_20commands_20',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_21',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_22',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_23',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_24',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_25',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]], + ['penify_2dcli_2ddocumentation_2emd_26',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]], + ['penify_5fhook_27',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['print_5ferror_28',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_29',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_30',['print_processing',['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()']]], + ['print_5fstatus_31',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_32',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_33',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_34',['process_file',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()']]], + ['process_5fjira_5fintegration_35',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['processing_5fsymbol_36',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_37',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]], + ['ui_5futils_38',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_39',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html new file mode 100644 index 0000000..8d0aed3 --- /dev/null +++ b/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..11f8b78 --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]], + ['recursive_5fsearch_5fgit_5ffolder_1',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['relative_5ffile_5fpath_2',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_3',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_4',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_5',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['run_6',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html new file mode 100644 index 0000000..9d4f871 --- /dev/null +++ b/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..d470783 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['apiclient_0',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]] +]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html new file mode 100644 index 0000000..0557f9f --- /dev/null +++ b/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 0000000..740b36f --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['baseanalyzer_0',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]] +]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html new file mode 100644 index 0000000..fa20861 --- /dev/null +++ b/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 0000000..8bdd859 --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commitdocgenhook_0',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]] +]; diff --git a/docs/html/search/classes_3.html b/docs/html/search/classes_3.html new file mode 100644 index 0000000..98fbc87 --- /dev/null +++ b/docs/html/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js new file mode 100644 index 0000000..0ed9487 --- /dev/null +++ b/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exception_0',['Exception',['../classException.html',1,'']]] +]; diff --git a/docs/html/search/classes_4.html b/docs/html/search/classes_4.html new file mode 100644 index 0000000..3b6c51e --- /dev/null +++ b/docs/html/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js new file mode 100644 index 0000000..e90ffee --- /dev/null +++ b/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fileanalyzergenhook_0',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['folderanalyzergenhook_1',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]] +]; diff --git a/docs/html/search/classes_5.html b/docs/html/search/classes_5.html new file mode 100644 index 0000000..51c2b30 --- /dev/null +++ b/docs/html/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js new file mode 100644 index 0000000..a6b1740 --- /dev/null +++ b/docs/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gitdocgenhook_0',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_1',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/classes_6.html b/docs/html/search/classes_6.html new file mode 100644 index 0000000..431fb05 --- /dev/null +++ b/docs/html/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js new file mode 100644 index 0000000..6f010a9 --- /dev/null +++ b/docs/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jiraclient_0',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/classes_7.html b/docs/html/search/classes_7.html new file mode 100644 index 0000000..0c76bf5 --- /dev/null +++ b/docs/html/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js new file mode 100644 index 0000000..bd37889 --- /dev/null +++ b/docs/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['llmclient_0',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]] +]; diff --git a/docs/html/search/classes_8.html b/docs/html/search/classes_8.html new file mode 100644 index 0000000..5a392ee --- /dev/null +++ b/docs/html/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js new file mode 100644 index 0000000..ca590a4 --- /dev/null +++ b/docs/html/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['testcommitcommands_0',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_1',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['testwebconfig_2',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html new file mode 100644 index 0000000..2dbb4c2 --- /dev/null +++ b/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..7b3d690 --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_2epy_0',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]] +]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html new file mode 100644 index 0000000..18ccd15 --- /dev/null +++ b/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..6d2b14e --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['api_5fclient_2epy_0',['api_client.py',['../api__client_8py.html',1,'']]], + ['auth_5fcommands_2epy_1',['auth_commands.py',['../auth__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_10.html b/docs/html/search/files_10.html new file mode 100644 index 0000000..c6af52c --- /dev/null +++ b/docs/html/search/files_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_10.js b/docs/html/search/files_10.js new file mode 100644 index 0000000..b759a00 --- /dev/null +++ b/docs/html/search/files_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['utils_2epy_1',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html new file mode 100644 index 0000000..a4c2be4 --- /dev/null +++ b/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..ba3909d --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html new file mode 100644 index 0000000..3ac4cfb --- /dev/null +++ b/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..bb00fd4 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['commit_2dcommands_2emd_0',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_1',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcommands_2epy_2',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['config_2dcommands_2emd_3',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_4',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_5',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['conftest_2epy_6',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_7',['constants.py',['../constants_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html new file mode 100644 index 0000000..eb19ecf --- /dev/null +++ b/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js new file mode 100644 index 0000000..e7bf2b2 --- /dev/null +++ b/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['detailed_2dusage_2emd_0',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['doc_5fcommands_2emd_1',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_2',['doc_commands.py',['../doc__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html new file mode 100644 index 0000000..61d86d0 --- /dev/null +++ b/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js new file mode 100644 index 0000000..29d814a --- /dev/null +++ b/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['example_2dworkflows_2emd_0',['example-workflows.md',['../example-workflows_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html new file mode 100644 index 0000000..333517d --- /dev/null +++ b/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js new file mode 100644 index 0000000..3d76b9d --- /dev/null +++ b/docs/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['folder_5fanalyzer_2epy_1',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html new file mode 100644 index 0000000..ad481b0 --- /dev/null +++ b/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js new file mode 100644 index 0000000..4c89ef8 --- /dev/null +++ b/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['git_5fanalyzer_2epy_0',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html new file mode 100644 index 0000000..2af8404 --- /dev/null +++ b/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js new file mode 100644 index 0000000..3d83c4a --- /dev/null +++ b/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hook_5fcommands_2epy_0',['hook_commands.py',['../hook__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html new file mode 100644 index 0000000..8d5c07d --- /dev/null +++ b/docs/html/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js new file mode 100644 index 0000000..fcddd7a --- /dev/null +++ b/docs/html/search/files_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jira_5fclient_2epy_0',['jira_client.py',['../jira__client_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_a.html b/docs/html/search/files_a.html new file mode 100644 index 0000000..806a999 --- /dev/null +++ b/docs/html/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_a.js b/docs/html/search/files_a.js new file mode 100644 index 0000000..876ef0d --- /dev/null +++ b/docs/html/search/files_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['llm_5fclient_2epy_0',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['login_5fcommand_2epy_1',['login_command.py',['../login__command_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_b.html b/docs/html/search/files_b.html new file mode 100644 index 0000000..371cc0f --- /dev/null +++ b/docs/html/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_b.js b/docs/html/search/files_b.js new file mode 100644 index 0000000..01a0bf7 --- /dev/null +++ b/docs/html/search/files_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2epy_0',['main.py',['../main_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_c.html b/docs/html/search/files_c.html new file mode 100644 index 0000000..5b93d7f --- /dev/null +++ b/docs/html/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_c.js b/docs/html/search/files_c.js new file mode 100644 index 0000000..6f265cb --- /dev/null +++ b/docs/html/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['penify_2dcli_2ddocumentation_2emd_0',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_d.html b/docs/html/search/files_d.html new file mode 100644 index 0000000..a9b1c64 --- /dev/null +++ b/docs/html/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_d.js b/docs/html/search/files_d.js new file mode 100644 index 0000000..9847676 --- /dev/null +++ b/docs/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_e.html b/docs/html/search/files_e.html new file mode 100644 index 0000000..db2d31a --- /dev/null +++ b/docs/html/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_e.js b/docs/html/search/files_e.js new file mode 100644 index 0000000..d0dfcff --- /dev/null +++ b/docs/html/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_2epy_0',['setup.py',['../setup_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_f.html b/docs/html/search/files_f.html new file mode 100644 index 0000000..82b198a --- /dev/null +++ b/docs/html/search/files_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_f.js b/docs/html/search/files_f.js new file mode 100644 index 0000000..133fd11 --- /dev/null +++ b/docs/html/search/files_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['test_5fcommit_5fcommands_2epy_0',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_2epy_1',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fdoc_5fcommands_2epy_2',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fweb_5fconfig_2epy_3',['test_web_config.py',['../test__web__config_8py.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html new file mode 100644 index 0000000..3b739c7 --- /dev/null +++ b/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..8362237 --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html new file mode 100644 index 0000000..2cef5e3 --- /dev/null +++ b/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..6c71456 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html new file mode 100644 index 0000000..3308c65 --- /dev/null +++ b/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..9ea0560 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['commit_5fcode_0',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_3.html b/docs/html/search/functions_3.html new file mode 100644 index 0000000..43ac697 --- /dev/null +++ b/docs/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 0000000..79bed7c --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_1',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_2',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_4.html b/docs/html/search/functions_4.html new file mode 100644 index 0000000..d12c2df --- /dev/null +++ b/docs/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..3c2e1af --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['find_5fgit_5fparent_0',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_1',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_2',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_5.html b/docs/html/search/functions_5.html new file mode 100644 index 0000000..7266236 --- /dev/null +++ b/docs/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..75c7e99 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()'],['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/functions_6.html b/docs/html/search/functions_6.html new file mode 100644 index 0000000..7f9fc45 --- /dev/null +++ b/docs/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..6ef2054 --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_7.html b/docs/html/search/functions_7.html new file mode 100644 index 0000000..ad0f88b --- /dev/null +++ b/docs/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..f0f0714 --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['install_5fgit_5fhook_0',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['is_5fconnected_1',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_8.html b/docs/html/search/functions_8.html new file mode 100644 index 0000000..ea7fa74 --- /dev/null +++ b/docs/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js new file mode 100644 index 0000000..8934697 --- /dev/null +++ b/docs/html/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['load_5fenv_5ffiles_2',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['login_3',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]] +]; diff --git a/docs/html/search/functions_9.html b/docs/html/search/functions_9.html new file mode 100644 index 0000000..d831dc7 --- /dev/null +++ b/docs/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 0000000..70a2559 --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]] +]; diff --git a/docs/html/search/functions_a.html b/docs/html/search/functions_a.html new file mode 100644 index 0000000..7018fc6 --- /dev/null +++ b/docs/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 0000000..0283fbe --- /dev/null +++ b/docs/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['print_5ferror_0',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]], + ['process_5fjira_5fintegration_7',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_b.html b/docs/html/search/functions_b.html new file mode 100644 index 0000000..c0660b0 --- /dev/null +++ b/docs/html/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js new file mode 100644 index 0000000..aa36dc7 --- /dev/null +++ b/docs/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['recursive_5fsearch_5fgit_5ffolder_0',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/functions_c.html b/docs/html/search/functions_c.html new file mode 100644 index 0000000..b642767 --- /dev/null +++ b/docs/html/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 0000000..8de5e4c --- /dev/null +++ b/docs/html/search/functions_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_d.html b/docs/html/search/functions_d.html new file mode 100644 index 0000000..16464b4 --- /dev/null +++ b/docs/html/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 0000000..36538fa --- /dev/null +++ b/docs/html/search/functions_d.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['test_5fcommit_5fcode_5ferror_5fhandling_0',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_1',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_2',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_3',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_4',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_5',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_13',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_14',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_15',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_16',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_17',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_18',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_19',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_20',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_27',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_28',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]] +]; diff --git a/docs/html/search/functions_e.html b/docs/html/search/functions_e.html new file mode 100644 index 0000000..e55bbf1 --- /dev/null +++ b/docs/html/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 0000000..60953c2 --- /dev/null +++ b/docs/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uninstall_5fgit_5fhook_0',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_1',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_2',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..b2d68fe --- /dev/null +++ b/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..3a1e6d3 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_18',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['ui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/namespaces_1.html b/docs/html/search/namespaces_1.html new file mode 100644 index 0000000..a4b1530 --- /dev/null +++ b/docs/html/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js new file mode 100644 index 0000000..fdca1a8 --- /dev/null +++ b/docs/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_0',['setup',['../namespacesetup.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_2.html b/docs/html/search/namespaces_2.html new file mode 100644 index 0000000..a89a756 --- /dev/null +++ b/docs/html/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js new file mode 100644 index 0000000..10ec4ce --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcommands_1',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_3',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fweb_5fconfig_4',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['tests_5',['tests',['../namespacetests.html',1,'']]] +]; diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html new file mode 100644 index 0000000..1981712 --- /dev/null +++ b/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..3cd36ca --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['penify_20cli_20_2d_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_3',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_4',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_5',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..607f4e1 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js new file mode 100644 index 0000000..37552a5 --- /dev/null +++ b/docs/html/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghijlmnprstuvw", + 1: "abcefgjlt", + 2: "pst", + 3: "_abcdefghjlmprstu", + 4: "_acefghilmprstu", + 5: "_abcdefhijlmnprsuvw", + 6: "p" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Pages" +}; + diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html new file mode 100644 index 0000000..fd893a6 --- /dev/null +++ b/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js new file mode 100644 index 0000000..ee0a9ff --- /dev/null +++ b/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5flitellm_0',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html new file mode 100644 index 0000000..5f8e440 --- /dev/null +++ b/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js new file mode 100644 index 0000000..a34ece5 --- /dev/null +++ b/docs/html/search/variables_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5furl_1',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_2',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['auth_5ftoken_3',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_4',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_5',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_6',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html new file mode 100644 index 0000000..943cbd1 --- /dev/null +++ b/docs/html/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js new file mode 100644 index 0000000..28d0871 --- /dev/null +++ b/docs/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['url_0',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]] +]; diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html new file mode 100644 index 0000000..47f1ec5 --- /dev/null +++ b/docs/html/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html new file mode 100644 index 0000000..2842f66 --- /dev/null +++ b/docs/html/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html new file mode 100644 index 0000000..77a7f48 --- /dev/null +++ b/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js new file mode 100644 index 0000000..d02ac2e --- /dev/null +++ b/docs/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bearer_5ftoken_0',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html new file mode 100644 index 0000000..3ee62ba --- /dev/null +++ b/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js new file mode 100644 index 0000000..c6d851a --- /dev/null +++ b/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]] +]; diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html new file mode 100644 index 0000000..640713f --- /dev/null +++ b/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js new file mode 100644 index 0000000..ea198d0 --- /dev/null +++ b/docs/html/search/variables_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['dir_5fpath_2',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['docgen_5fdescription_3',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_4',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html new file mode 100644 index 0000000..7b2ba97 --- /dev/null +++ b/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js new file mode 100644 index 0000000..0ca10cf --- /dev/null +++ b/docs/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['entry_5fpoints_0',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_1',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_2',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html new file mode 100644 index 0000000..fb1de8f --- /dev/null +++ b/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js new file mode 100644 index 0000000..6f038b5 --- /dev/null +++ b/docs/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fpath_0',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['folder_5fpath_1',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html new file mode 100644 index 0000000..cf8dcf4 --- /dev/null +++ b/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js new file mode 100644 index 0000000..05d3ba9 --- /dev/null +++ b/docs/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['highlight_5fcolor_0',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5ffilename_1',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_2',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html new file mode 100644 index 0000000..88cbb01 --- /dev/null +++ b/docs/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js new file mode 100644 index 0000000..6c4b704 --- /dev/null +++ b/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5frequires_1',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]] +]; diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html new file mode 100644 index 0000000..36c49bd --- /dev/null +++ b/docs/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js new file mode 100644 index 0000000..4d28226 --- /dev/null +++ b/docs/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5furl_3',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_4',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html new file mode 100644 index 0000000..0005c6a --- /dev/null +++ b/docs/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js new file mode 100644 index 0000000..1b06afc --- /dev/null +++ b/docs/html/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['llm_5fclient_0',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['logger_1',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['long_5fdescription_2',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_3',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html new file mode 100644 index 0000000..757c068 --- /dev/null +++ b/docs/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js new file mode 100644 index 0000000..0081627 --- /dev/null +++ b/docs/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_0',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html new file mode 100644 index 0000000..451a136 --- /dev/null +++ b/docs/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html new file mode 100644 index 0000000..aea4286 --- /dev/null +++ b/docs/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js new file mode 100644 index 0000000..e4b61ad --- /dev/null +++ b/docs/html/search/variables_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['processing_5fsymbol_2',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_3',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]] +]; diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html new file mode 100644 index 0000000..ec3793e --- /dev/null +++ b/docs/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js new file mode 100644 index 0000000..90e3cd7 --- /dev/null +++ b/docs/html/search/variables_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['relative_5ffile_5fpath_0',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_1',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_2',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_3',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html new file mode 100644 index 0000000..ee82fce --- /dev/null +++ b/docs/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js new file mode 100644 index 0000000..2dcc04a --- /dev/null +++ b/docs/html/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['success_5fcolor_0',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_1',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_2',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/setup_8py.html b/docs/html/setup_8py.html new file mode 100644 index 0000000..2b53762 --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  setup
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     setup.name
     
     setup.version
     
     setup.packages
     
     setup.install_requires
     
     setup.entry_points
     
     setup.author
     
     setup.author_email
     
     setup.description
     
     setup.long_description
     
     setup.long_description_content_type
     
     setup.url
     
     setup.classifiers
     
     setup.python_requires
     
    +
    +
    + + + + + diff --git a/docs/html/setup_8py.js b/docs/html/setup_8py.js new file mode 100644 index 0000000..241d406 --- /dev/null +++ b/docs/html/setup_8py.js @@ -0,0 +1,16 @@ +var setup_8py = +[ + [ "author", "setup_8py.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "setup_8py.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "setup_8py.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "setup_8py.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "setup_8py.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "setup_8py.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "setup_8py.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "setup_8py.html#a2aa722b36a933088812b50ea79b97a5c", null ] +]; \ No newline at end of file diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/svgpan.js b/docs/html/svgpan.js new file mode 100644 index 0000000..2678d38 --- /dev/null +++ b/docs/html/svgpan.js @@ -0,0 +1,323 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + try { + if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections + top.window.registerShow(sectionId,show); + } + } catch(e) { + // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages + // locally, since they treat every local page as having a different origin + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} +/* @license-end */ diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..fb0977a --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/docs/html/test__commit__commands_8py.html b/docs/html/test__commit__commands_8py.html new file mode 100644 index 0000000..94976bf --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_commit_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_commit_commands.TestCommitCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_commit_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__commit__commands_8py.js b/docs/html/test__commit__commands_8py.js new file mode 100644 index 0000000..1aa1dc7 --- /dev/null +++ b/docs/html/test__commit__commands_8py.js @@ -0,0 +1,4 @@ +var test__commit__commands_8py = +[ + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__config__commands_8py.html b/docs/html/test__config__commands_8py.html new file mode 100644 index 0000000..e7ad3b5 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_config_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_config_commands.TestConfigCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_config_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__config__commands_8py.js b/docs/html/test__config__commands_8py.js new file mode 100644 index 0000000..2eebb0e --- /dev/null +++ b/docs/html/test__config__commands_8py.js @@ -0,0 +1,4 @@ +var test__config__commands_8py = +[ + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__doc__commands_8py.html b/docs/html/test__doc__commands_8py.html new file mode 100644 index 0000000..8dd55c8 --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_doc_commands.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_doc_commands
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def tests.test_doc_commands.test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def tests.test_doc_commands.test_setup_docgen_parser ()
     
    def tests.test_doc_commands.test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def tests.test_doc_commands.test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def tests.test_doc_commands.test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +
    +
    + + + + + diff --git a/docs/html/test__doc__commands_8py.js b/docs/html/test__doc__commands_8py.js new file mode 100644 index 0000000..31809a6 --- /dev/null +++ b/docs/html/test__doc__commands_8py.js @@ -0,0 +1,14 @@ +var test__doc__commands_8py = +[ + [ "test_generate_doc_error_handling", "test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] +]; \ No newline at end of file diff --git a/docs/html/test__web__config_8py.html b/docs/html/test__web__config_8py.html new file mode 100644 index 0000000..cfc3b98 --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_web_config.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_web_config.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_web_config.TestWebConfig
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/test__web__config_8py.js b/docs/html/test__web__config_8py.js new file mode 100644 index 0000000..d691683 --- /dev/null +++ b/docs/html/test__web__config_8py.js @@ -0,0 +1,4 @@ +var test__web__config_8py = +[ + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] +]; \ No newline at end of file diff --git a/docs/html/tests_2____init_____8py.html b/docs/html/tests_2____init_____8py.html new file mode 100644 index 0000000..3ab0c44 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  tests
     
    +
    +
    + + + + + diff --git a/docs/html/toggle-alternative-theme.js b/docs/html/toggle-alternative-theme.js new file mode 100644 index 0000000..dc822e1 --- /dev/null +++ b/docs/html/toggle-alternative-theme.js @@ -0,0 +1,11 @@ +let original_theme_active = true; + +function toggle_alternative_theme() { + if(original_theme_active) { + document.documentElement.classList.add("alternative") + original_theme_active = false; + } else { + document.documentElement.classList.remove("alternative") + original_theme_active = true; + } +} \ No newline at end of file diff --git a/docs/html/ui__utils_8py.html b/docs/html/ui__utils_8py.html new file mode 100644 index 0000000..4ee454f --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/ui_utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    ui_utils.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.ui_utils
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def penify_hook.ui_utils.format_info (message)
     
    def penify_hook.ui_utils.format_success (message)
     
    def penify_hook.ui_utils.format_warning (message)
     
    def penify_hook.ui_utils.format_error (message)
     
    def penify_hook.ui_utils.format_highlight (message)
     
    def penify_hook.ui_utils.format_file_path (file_path)
     
    def penify_hook.ui_utils.print_info (message)
     
    def penify_hook.ui_utils.print_success (message)
     
    def penify_hook.ui_utils.print_warning (message)
     
    def penify_hook.ui_utils.print_error (message)
     
    def penify_hook.ui_utils.print_processing (file_path)
     
    def penify_hook.ui_utils.print_status (status, message)
     
    def penify_hook.ui_utils.create_progress_bar (total, desc="Processing", unit="item")
     
    def penify_hook.ui_utils.create_stage_progress_bar (stages, desc="Processing")
     
    def penify_hook.ui_utils.update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     penify_hook.ui_utils.autoreset
     
     penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
     
     penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
     
     penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
     
     penify_hook.ui_utils.ERROR_COLOR = Fore.RED
     
     penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
     
     penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
     
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
     
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
     
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
     
    string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
     
    +
    +
    + + + + + diff --git a/docs/html/ui__utils_8py.js b/docs/html/ui__utils_8py.js new file mode 100644 index 0000000..04380b0 --- /dev/null +++ b/docs/html/ui__utils_8py.js @@ -0,0 +1,29 @@ +var ui__utils_8py = +[ + [ "create_progress_bar", "ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] +]; \ No newline at end of file diff --git a/docs/html/utils_8py.html b/docs/html/utils_8py.html new file mode 100644 index 0000000..610917d --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    utils.py File Reference
    +
    +
    + + + + +

    +Classes

    class  penify_hook.utils.GitRepoNotFoundError
     
    + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.utils
     
    + + + + + + + +

    +Functions

    def penify_hook.utils.get_repo_details (Repo repo)
     
    def penify_hook.utils.recursive_search_git_folder (folder_path)
     
    def penify_hook.utils.find_git_parent (path)
     
    + + + +

    +Variables

     penify_hook.utils.logger = logging.getLogger(__name__)
     
    +
    +
    + + + + + diff --git a/docs/html/utils_8py.js b/docs/html/utils_8py.js new file mode 100644 index 0000000..073b162 --- /dev/null +++ b/docs/html/utils_8py.js @@ -0,0 +1,8 @@ +var utils_8py = +[ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-Penify-dev-g.tar.gz b/docs/penify-cli-Penify-dev-g.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..94e5f26934b49954abaaf4cea45d22b812f3476a GIT binary patch literal 791831 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�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�SOd9$BD5SW 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 literal 0 HcmV?d00001

    EDRC)3rmcC3v%1+Q6ZgS88Cb>^u?kMISTU27ti07AnmV9~ zq7ja@7oOD*e(B4${N0PC5iF9N1w9zK02Mn?AW%P@Omb13T(`@NF}@(zDw=%CvMU|U zm$|*IH^BlNqnw<*nnu5seGn%4ea|&9J>4F33u*&aY`HIaH?&9-babVNdqANb1)O>y zaySk`1VNSGlpks>n?5Gc)bUm4JD(2Uh7xSGjY+4)&`FneyCm8}YT_Sc0{c;w!f5A) znm}UlpBpj}w73_XF?gJ$-Xci?Q!>@|qZy>Eg#kVzr4ci7V}j<^_L%2DMyuN8I2}GN z72M9CC(|3+$)PpRRgmVKa&Z^iN+7Gc6@Mqrn*Lv62JS@S6#;ALNH~81tih6Td!cAX zWad|$*ZfMLs)qo&NaOY3@pzGiTL!I{^P0;q+zrHAHe)zBu0Nh9Fl(r+iCj=uV;o=q z>J~fl!33uh+EHpy&R`sF6%K2`1oI>?N5Yu0?&n%TvIH@qS-82M9r182*8{9;AlIod znHssn9)vQ;lu1% z{Ecy@0|m^hqupob6H0|Yu4qJV$lZc*s!K+5j@eTdc&9xCT0!k8Dq>(ulrutI2S^#H zP-p_BB{qwv%A~_-kXUI?`~;bu;}L;-C-j;%0K(j^0Q+Iz{BieH*8uHSSUR?b+lx=Z zh;T(RALK`pScWkzv#?nNj1xJzQOm#$sNC|xY$1L!8t z%Evf@dYO?T38?8qL0IySB3|q{T&Z=w$M27eJm2>Bi)%SMKTbyld0JTjtKk^{{a`O7 z>GEjd-K$BMP^1N>KwcvS@Vt6Ctk8RjSg-92IvY0ZS~`<~) z3)2Yh9I-oH@*PUQ?~`fjuE$E63l5e3irns;=?9w3*?ex%9X}V%WkTTNby^CP-p!;a{w)6dXDn{5S)=B|_5q@{r(#l7lEYiE z$Kn3+$=<4WWp?E)%+jFY7mB_4yWPyuDog#n?0Vex+bhOEdC0SN)bi2SyIv#mg+XiU zPZ!8<$0}lugl`fl_LHXCw5koBFeWQowbPNjd!^eTKn-Natr(z93ES#y)y#y4b%`sc zviOnNiQu%^z1C_>fl`whao6GsNnDAy1ok;X6U^rU$4d3&qY>P_)C zm!vy>%HuUQ?UsE{!)i|fYiqWQrkEdMoLkRgpR zXya=AYI?OdHU_jIzV_PF>1!wi>Z)S)vf;SyQ_<|C4WA#8EggS?(e+63#YKH(xVx-7 zjJW$~8{GH6j=HnFdB{LfyzH>K9;l8GU4i6YFLp1wDrFecXW7hW$Z zlQjIW00$sE4(~p6Xdmk|)$2tr@T-7()$6v9+5EXIsb<@l(82RwNf>q7Fzb}HprJXS zBn$-WK@cGds2OrVdy8xkC|7n*Xf>-tFLl4CTqJ2bg~C`uU8X&FMnQd?oLzRt&(-8s zKy78S|J>Kz&dQFIU_yJA5S#U0thw{Sdy z^&QGs&~_q42eoF3F=M{MjLtRKIiY883ecmU=skXhPv=tl8Dwz5EvhkSgDlm}ZdtzQ z6UEYY#NYJhp0m9%68bQ;3rGYKoD~q15Q8$z`6$VeA-#p=G9RILE8Syf=ru3zl8u=i zE}Sd+i2fT$O1Ccd?}xqFwe2Ry%jY+`S4vCjFO(s^`lu8uc7!Chp4FM@hULv2-+5r* zIYUVlD*TpYT)-@QLg z3ip8;=mB*pWD+X2N=$r?m*62g*LG6cY%fkBnG4Gb@3x3te>kVgU1DQ#Qt`dUyH3-4 z)+qzT*${}Uz2FwzFRwRR8VSd=^J$>H#_fwu*byR z5uJMbMEDay*4|DY=rms-(RO9V(1tuzLmJ)2%+5uD0LPAhYpQwf80#Q@J25z0W<^(_WQjZ3P zI&0cIN<_i89VNRFUQ|C_B}71y0euI_2#d<61_ql^`CTq)*_cq=XwQ}@zmvw=XO0#> zGVI1MjNXxeX>y}dH$aB{9dIbQueLehiYwb@AonJr_l#1zp!^(|Ode6sm+dzQ8nxfn zTi7Ov3_==$EhHlNSDo*qYMZ^%a(F_MJNgt27!uGPH+OvFkdvBub8_{YZYxnZEoreD zcE^x(un#qmqp}c7()Z>n*nfvxTPYpVKxj=123&-3uNk%;;}_H6NDRkPwQhUB!z!qQ z&J~^u5P{)X)|?Gb!Sw*T4{o1Qm*E?ca|yQWPKv_d7@EtABdpf7fMTkJU*y@pqhIjT0DLo{;D$X2G zK)!tQGU0Z896cfM6s82j;zL9d$Y&FKKZyD<U^U z-3)1JqIMgXoJWasqjo{G#Qe#5^j&}}Sm5N5Cmj2D_Tm)8m2&+>pr_ck)M|(x^<~a% zfkrv0vvE)=R7gZ+;XvTZ8De)3cSM@36=9{i!v(IH0o9g81R%@$MR(-V zTMA1TQNI2Yv|ZL_1RL4{KYv%gMrc}of#dn)(b>XKK-y#Eu4OKK% zZu4ko#nxtun98lff*)GVvjlkIL?0}EZU>e(x$=k+&l>We`=lnXQKF!%(Ed5cvGyrD z7FD*qZDyQ8%^k6?>If=`QpWgVzmENvDLE0yHSGsOc z^%Dg196xuv2j2D<{uqpPa%mG4Or^0?M0`gU3mAzE1YlLc7wWKXnm07kS|PTb=@zY~F&=(oT1JIMVE&l5)MSf&I1-=_w9+D!@Xwk z!nMs1?|`Q>Q2=o+r(kPpftzF``Q~D3Y`nZ3L>wk)VKAh0iT^=+9WFG-ak=%n22elr zimnoT4G#j}Idys8FHY8WhD-O_B{vvYqL2>cN{ZmWu);caOL!5<;t2P99q}LUCIF(7 zFDL-KL$|Gj076b~%NI$-mkH~qcd>3YFYN~{oVc* zzOEueH{=q+l1l+5PADXoW@5JWxA!ajP+@}_R+^lC0czN%fx;K${r>H<(U1Db&rz!C zZX6JJc>tCl)YBpqvh`7Lk-;Gyj9`;bj5=^rQ^-y3|NPL4G{Qdl(2H_H0pS1d(z)rS zS`%o+GlVSQN*6smGm4wc8M13503%WQ$D?m{|2wGt{`ZDnAeM1> z(k(EKRSqm7_35d@#GHK=-F=7>me{{3uyf5X3x!VKM)yJQI(ipujqnVK<@z)YYR4^E zq|9#07LD_-mxx@LtzJ!<@FX0`hUU?8V??J{h#!d-#tH!a<^-m|_%==%WdwPC!9BCxg4~;Dz4#k@`nVc9o}ZL zTun;^cQ5SjM0JK;%kph8B|QtLW)MWqp2gx(oUY$qOw82_7*|+R0$HSk-Z)*@w>M6@PZXl&0`V(C<^+EMj(jqw zUNbS})-KD}1eR}cU^Yw*Qsd?P4Mw!>5Vv~=mqzd15zq}tfZRI3niic8t(Cz9b=S`p zUc36IKFo5? z93$!!qAzaF97CcNpnqbxC18>gg>W&L5yQI+J~aQ7l*A2EwqIrLqbr`H9t)nYMM#Cq zxNEemDI)%yPxw9?^K~}n=W6uJfa2w9#K&8Yi@k~i&C@F-{v>Di;p(Wz*IDa@!+a4- z0B|C?J@P*q{hWrq)zkxMKl1Y$#I}ZcNRi#Li=N-1#3(HK7K1=m9 z17j2SoO;jhSKqv#zII!G0&Z2V{5VhiUQ#$V0DMDoBhZM7c##YXzJ=D=BNj+up*X0) zJm-El?|6QBFRg~(LDGpUY5={xnW(Q0eV{Z4He6lZTIg?~Uaytj1aC?}=iEa&;M>5r z7yi?a=#=SA5R|gc^#fd?`QnLMsAu95)A9hn{JwnKH-wS;%l9^9L68R7!22t-g@VUY zN;t(zAl9nxAF#$e;q8bFzSVDDlD^$SJm!^7yFUi>Jn8MdR@m~}$89mBZrzx#Hv08l##W(39dn^4gnKxU#3^g=v_8Qj z@t5E`y9a^g@BdD7nA>WgFokXnjea4Dr5f z(*CZNS9VE)?|ffIiMnQ+i08M19QI>2qKB^ZvH|pM)Vp-3cPN zyCYvd73Z>SI?2xp!MO}NRE|?$W7_kh%}L6_5p9(D!yP-YBv>D7XN}_uX3Z&BTJ4?X z4sgZ}`FX1v34L5$J*3bFKt@}rfB+mn2>>j)g-bNxlb|<*2r^;2eEfYB5wlK@@#g&s z1n~vbIXybGc+FzrQoHMXOJ7g6;4t!9qr{|OrvUh0c9Q)NWUOADB?|q8-Jd#9Z_EAt z>V5aKE`iAl?O&q{bPI`aR_n;GVEM(;6G^6o$j7J^n3VwQUPKT$?DII|%GqQ8xynJk!8v(3_`@|VdRM%-X3Y?} zqmo7FU+Ry7W&-52e$*nPQi>)1WVw?iwa*ZKNMq|Z{k@ff2!EYTgRDlVa9O-Tqr*yecc>6cbpn?M3pN}1a%OhrUF@(lz zcdqL;S!BCiz}vQDHSHZ&Q2T&&X8lDudEMTf6JO3y9;n!Jg|)1~vnyiU76{_Be66Lx zCP7zj(~PzAwnKd+*dFL%^RbAl}Qa`dptM)##wXa~~^ z*>zcxGj16yHXP#76yAfGg58C|5k~Tn!crGr=^{0Yk0!$P0_88oVZmr17ZoS~1%i)H zP?_KAJ%d-8$2iFc!`K*A1n%1E`!aKWlNmWbz$;hQcK-1DU1#;p1s*f@c~M7`p0(8?>d+lyTqan8sOrTb5y<>>me&8CJPUcMFyzvi{g&@?btu{owfv>BKC`x_81 zN`%dBOprJCuL19oge=6`<(dx17AelAF^^$AM`>qZohf556`}>6HBw`x8Vu+B<_pbKr0`{3DP#Z zpB*PBCS@0)-V8>+InSt9J$D>_p4V%9qr7#j+5A>4thH$>X*FDp@UPDaB)sN}b7I0; zA#d*xV7J}8`jOdln(nbsZvT136pl zYnAWT`4a{j?jJ=k%Lx-`Z?rfXT{zQp*BV!t;ZoRqshe|aF*@|Zx#B(Izbd;sI{WMy71}@n<65wMRgYZ zxj-F+G5k0l+!9Qf+u+!irq{NK-RBB)cWTZt(^gk!mz&CxG~85;CnG8&zaJph=Pa+l zfYY@H=VXaPp_FSHdtP_nBeW;w4fH6Cl|M-^pwK3~O^YLhCjc!l!bKqw?2Ltye5aJJ zpbUBoK^PO+(^(^Ma4pbp4I;~z;EzjV2!9QVJD-u|0MB4y;OI004@p3YPqtZ;%%}%s z*M1A(Pk|-!$4$o>_n4z_Qk-5h(~IyBBYtt=%}~eozN$p@Lx8u{0vjt58sBK)*O0s# z(lQX=J{u5(JnUU1Mgatp^yGm2T)aS00r&nOkopi`{*+dFsZPI7MBgj?bnqBz?>`eF zP9hKr40FLn(0#sOETPCkw@_Fqti~f>SVXV{O@i`hR8J93Y|U`8D^--=jCMSvRzQwQ z!nSvI;>Sp-vc&x=l+f!tfyv^N;U5~9cK7XShw>hG!gU1wdPR&-heOo=ditg}@C#ol zVVn6g8(A_7y;o;Wn&Ni9sJpKZ$H8M+QZjo#dhH6ThU!SK^U^Tz@WFYOWM(&r#24Jm z@X?i_vZ(Cy{?&<_CX)q)=foD`lm&7idaEm#_1b=EmM?#+*L6=``e}nDN<-XA6vgaP z@EkgG z4CQAU?*@mm*!$p-O8CNGy~#1RZVDPG*5kLLW)EH^Y!b}=EYcJZ>SKOl&v4D#-`RGp zk!pus8*Gf~^uaD9SPf599ADoBdn0nM#%6i6vFHp%owr6VP8T93H#qq>=kq|qB=}(Vw5)D<>7IIFByRo_7U=do$*YGR zcp11GnX{X6r<0(3Ivkozk)Wae*EbN88^mbvKP~W9zAjvg*Aj?Xkze)_?PX*BTWer) zx5DP8GKD+o03+P&0UOA^zorX-t%lPRGA}!u`fJAQwdE6-qHO^o82Gf)Q?3ahYbQsE zM5W=x)o5?WPhe2^@=}YsCR+BmZ#^MPjbpYEx3{A~EWFe9!72XFfS9!cQYw(!FAqLZ zDKa=9ZksdQb#*~!+9L3BJC_Ac%P14PpP3Q;d$?X6j}T|5W|-H&Ec+0DXbmF&QIf3^zoK`Vpolr4jl*y%gXL>B#isnZA9IrJYbrSQ<#cT$M}WxV;4@3PuY zZlA6S_Dho{4YooxN@*fV8IElN5#G$n8hx3&BamF@bKh2hoKG|fn{Lsq9h*O9A)@ip zO3E0sjpKOvU9`E`OLr>Z{+BeEApER^G^rwjU@0L&VDdV&uL}a}nLzERBFQ?q(Nq^n zm4+WlhIf2t)nxNx(5=gh-EP-BLqZi3>EOgJSvv>5BFXCB<)n{czNrOo^51OZyex-Q zRS72Q3UwTT-(oW9!mI;;rq}9j8{Ez3Cf{KpTP2+M3J-p3F-(ihtYX@10!BJbZEc3f zWcNQ2AQJBhg@A4|)ApmANNUAITK=1AU@NzFr<1Ad)2VFErU(eOx<@CS$Dy+OD-o#Q zQ;wCS@1+)jjh0`Pp5|E#D$;5*r_Kw3;Q#8LQofA&T9!}_A{tP%d9xO<)P+p)gAFI^ z;i+M4MhaL(N|TZ{mjc1yhaR!om?)FQtcZ>D!3a;Im2WzXw+jRDe2?<`b<~z_n=_Te z$a9b%{%TxyNQqk1VBTeB=eS?c@J8 z>(*oy@8yt1)9Zwq#uc!9`Zn6(i}(geYwrSPCw>57ZK9)Aq&+r>?uUpvsNATGC+b!D zZJ02Wr`4*7iqj@XV?+usKYkdif93$LpMY_G!pLBXPXPWAOrZEgaGD}@ASH|tg>4aW ztdrzeP<*~N{_QWku-20=$6vWU8Pk4oi|aV{6*J$TFyAw)(+_bWKpD3qeon%YU#~&h zq(7ZQera#FC;**<-dj8Xyg6O1meQS{)RkMrH(kRn=}YI3Z`#@|%BPND@BbbAVKV9s zTTPW*bA$f$MKsv$46MgD7kZ6l+ydkSM+|E2-x+JUr9t%|y2ZqjW11Q8X@v0l#dEoy z`k`*W;bSfDqx=JGt7!n}F99asz14uUXF&5$-fN=@zqCMKznHh0>cym_k46PO^|MJy zPxVq-%15K3-v1f=#%xsdTbc4mS$=Qi0?1cAu9j-uw#Dv*!U>s{F{i~z_wcO4*>QjQ zxIcWuDXW(XQ8}2Dvie_G2T5x>_h=I$V|+ zWl>X7HQT0Byhs;oe7R@;!pR=(8ibGbDTI~qjHTd17(Lc`U8o1sE!?UT>`Qo^xb0dX z7pw~as(AeAHyXRi21wY~#t{8pr-(=n_nb)>g|aoj1B+ol@4bl!L?|g7^!`3T(Ui34 zx?jl9uU<{ois6YF!wwAkSbIyk9MqNgc{Fs?1rQbW((m};aX;`Y$g0x=P(#9q0EiAH z5!-3IU&qVzyFRanlYW4kUWw=De!%bMM4qtYWs~2`{7e|Q5Ev2l*+j!4%Gx4F*iH)~ z11VhIFKQ0Kv3JOT&3PawJCcJ5;j)wkCL-t+BE_oe5nSJSD4x>$V>3X~=2?9;IRY%l3Osg7X57EKqX>`c70ovf1CxAS}y3X(A{(*Fw6U3?Z9# zpJ;dm;!?Q296W0qgRM!`F#!1~bajf^5D#MmWd_MbJp$uOi>aTO7z<N~ofQpP42?rylj>R_tN+->01`5KAIgnkBTdK>!Vizb z6$6+1?qtK;(ds95g9tYtF_|oz`>+`Z9TQ%0Eg-uC!`cP)ioKt0qO^*N=~VY*?s)n0 ztB{w7(5UUfQ?+BoqBrkb1vt36x(-tVQOy-Y)TPWA-tXJZ^Sf0nUo@IzNYQ`=Jg6Lv zEVW3#xTTMI%SIC4pb;J@MH4J2VNnwr{wXataAJ@~^oCTB7Rb@cW3U7mUV>+Ef}kLg zyd;N}kDxBtB4u}hBi>gZ@!F<26BN~vDnu~x94nq_>tl|Jz9r=pV<>~^%?z$VkU$^= z3mj#P7(KX^TVKlq)Cj>MCsb4`P!RhNNie?xNJHLVt@CRILLH_s0!)RkAhseN;fd1) z!7~ZiuLY>Q<~RuAfU^?URe#h)IKKvIjHLXELZuT}3%V`r&r& zkj#4xZdVw7Gg+T1%*{R+D^TP1=1sYFT5HN|1NAZB#Hr)GtEjidXVTTDGmW@0RQ2%% z!M!sl4uhu|XYV({C`A4ayd5IB5vW}p!q#BJS|4%e{`J1J_1^vV-HSZ|+np=Zs;=xH zMD7~sj;)vhsN79xYnW4gKr1BRdLPMpuL8a+6|`Q4Wi@%zqCw55plaOR`){^%D-;(8 znDr+)L7b?t99XHW|KG!<$UX|pnajQcEpbTk?cU8k|NgKOB}27?vA!!t_!X=mio#UL z_39u_HbVk?y_gRhxjmqvu<^AO{AlQ84<%*DD!;KFe)wa3U^a*c(D6>uDgoD&ItJJaW6lI|h0;Rk80(o*l;T$OX3QH zWE=7e7_shW^hv7wek74*&f@!h3LgbIkg-ompOD$u zAP9NW;h}x0IU>&qis^7!!9)$<{JqfxH=#yAx?JsdY1iPU`VU@=g%AUPH(|V~gGco( z`dIN1&s$#A+_)t`|_h>^kI;Dzzgx_??<_uyU--TT(42KtL2k59XZQ?cbIr~>mN)<(_ZFA#XxG4=I{^qq$d ztVuWp^XbAx^Bah78Ta!;AuR*^ZWC|A{nb^u@jdEMt{M+5s%#)<@}=GH$o<1AME4%m z^@(o#gA)4U^9LDj3W6Z#Bhaj6nwLym1sV2$6!f#ndjfkd8J%h%A!BHIf0(h5z<`PvWV?EWaT3U6$EHGEajp%_G({_N4}+Z_JVF zw$2|=x)NcN?^D8BOo0y1vOm+n5x}AuAMp2LHWTb&{x|O~8+sgwrJC6pXu!OPwi=^p zx>MeLm)n8MR8NE^;OW!f2bX`S=8^di5(6DiJmL-+a2Kre0jD+9TT^V!8Sk54wKKra ze=Pr~S`ME18#BZGCgdypbt@3I6D^x9?Uk64D8b6xLe57(;Ge){2)C4K$j$I?WXkv? zo+HSEVur?U*9ZPc?^3o@wNGY}=I;*5$UTRS~$9z0vr8ioB} zHaq>G0)Nwkn~3}q#-0!4>}JcBFB$ZtO)>TG50JU42ST!z6|P(siqZ1i_NSd)ksSpN z^Ay)~lh~+i=66zAFIIcK^9H^gGs}Z)JPLc{c$gfbjNTqNd@>e9fLWrm{?#M1jhM7} z^1c`Kw-OPHij{jt=i*uiBIuEp+*MmT?jPey~1ITdWkd|CuwT_w@v;S+gel{$Li?#M^`v~at3;N+ z%jWke)gl}6%;W*jDk8gSD~yT(BbPOD6vr;U3_jIHm&g`+)Z^X4M!1UPXKeJ*D!45h z^XU`Ba(s41`Rkr)mjTXA+T~`2e?Z1o*tF(pSIKFA#`H0Hy}x)$-wu@{zS(UKQ+RMy zC0N(z*YvwF%&jlf;;I3s!-+X?_v@3|UH9QdQnEiuNFo^>4hexXsB#BAi262m0I+O( z!OvraT-GTH2%Km=Hn7L(M_q%ljty7o&+xs)qu!uY@vPJlgf7vhM?|xG#fzD(g?tuc zyU7|jGNTKchBVk~wB;?aAsfo6);RM*&t=ZmCTi#J+XE8g2;N7T6ZJ@Lw@dujeVyv@ z(c^7aklQ%7ONT+VMI4GU zNJb+k$REQ;GLCn$DdxXYpHWjUrIW%1jjU{6l=%pM5#yA-T4oLmV=p1uk{%>(YYof} z8UouM%T_HR%WR}sItD4fM(#*dHWU++H7OhQi;0^VNI~ngRoi9!LjL*<#=ShWELpF_ zm;Dvbbh6Z{QNM|A1J?ONZ{kS_`r)O+eg#;s#=X)Wx50avsatip{N@+#>ty=z3#X2>s3t0D!k4+F=!i6X^#CHdA^g?*I?r1X3#sjm3_ zKKgJx1zhB?Wu&1}*AZ_#W~rdO#{0oMzFYInXm~4HruJ9xQ<-~R#9b6r@V_wt=JTGG z@Q-UMdOKfMyfU7PEHb6*0KN-NzFENN(@G>l&9}Dv`5mL-CuEt|?BxniJ3*OQ9*4xz zz1M&9d@fBX?4nU8xDZalP;mO!C~tC<#SQ+ved48~3R}94vp45bom_W5$9>wPN??cI zjLTgEe{|U8m%U_zCbge<%?8$7*gP(i^C3bc@(U4srN_OsavUeAJpcK<#MY~q5u7Qvi#c6pU6xb(gy_|6SO?_5Dx#6ygr6@ z0|#{*4+scn`tgdV4#8I}DQbdIAWBA>m^ANe#nct4<7e|d{-|Hgeb<{>eyBEMc&$4$ zeJ@LY_<2Kw@NXUi{Lw!Cs&o8N;{;S?15{=JlBa$)c)%u`t2`?7I8N()fWNq?sf4c=OxV@o*cbaJJU0w%O7w1#gA4G9EZ0Fe)i+whY&_}Zo`RNd5^-^Ou zuqyp}HzIrLy?&GyAxE7HF^XrsJ>C))_&p8aMRLfide3gpsozBPXKHc!V^3YRU%&kI zI!vyt+p}{{P1*W+FDV~7Ei1&lnyrC-Z`YtN+2EnqF%*Rw9 zPhUx182;pm1s zC8tjHae#Xj>yA_d9m|QCA`m3U%eDUVHMqB(P#^ux2GyxqkG@YHRMVzgs3Qn~YoZei zP|E;yJGJ7oOhrYM^97k1vsID#NzVC=yEdV07pQ|j2=S%B=>*NET`q^3^NmoVD+lLp z;QJ3C6{Cv_`j!+6d9bTf&6|zi=Oey|U(w9GXwf}cz&A!S9nVtx)->|>Y{24u$Ob^9 zeWWzKar={QBH|szd~uVXKg!K2WK|@8Ny73(UlW5)iSh;<*L4{)(&G9^&<<2bpQE2N z8)WDMQcH6z8&}nk?A2!a+K}AYkEk)xGx_d;HO;qzXv5$CWCGjVf;@I+NS$S+Y}LE}xi>CG#Kekb#-&J^}f zMc4lKLch%eYXorT%v5K9EM-1z0+(So_~|H{5zMIAe4|J=l}`zR=~(>RDwS307KCLM z_c$`>Q}YqY2wU4B+Tfe2z|VSuc7e{8y%~XbD$Te@EUJWZ2JYAeSV1bk$!azdSFsnK zR8@B%_pgl`q?yUDV?E)nAv5U~f+rPRT+V?rL=?qGR)<%bf&2|}cl#Fm?fCs(A4d5B zvsk`(y&vcNy8DGp0&!_P*#StuAj~ z_kb%MtvFl>Ra2mdl;I!XTt!{=&5etzf6%+bdH0Q`&LEy50~V-$^QEI@r7Bmqs*dYt z8co9cK=*yfKAhXT0mMD%+*drLyAhas)OZeZB4+9)s>@s*9UHN?#Dok5>;z;7*%40U zd!HLf59ep9!B#rGoE#tSNZ;U@YbZ5rXRBa7N<(n@h=(RZ6P z`rs`1dk62Y{l}p963YAXI$81mo(&1^{`jZC}jV{&9QS|WK$jiV={$2=q)`an&XPcs1KT`lqPACT;5 z1ZEfD6YK^8sJfVmd1l^CvC6KxT$~86^i|}BmV3N6W@Jde0tsqw($!};59mjWItB&} zl0c>RhrlT%g6xMI6cR;I7|dM5>xX~5o9sZ{q(*v7gxE&KcntJyA~RpVp-`g!JS{j# zo%T()N|ZYLi7?=lkeY5L<4Hrg;sim~J+ju9b_k7ErE-Lqzp^Q!Uit~w#FpX)n_=e}n}a#U zVNb-~F!oo7d)$_6rUwEH&#gjvb<;&0J|y6{ZRrORbAG z-Eonj!~ElxQr-T(4GK8}`HiV`a?a3PBTRl!Dmoe0HoP4Rie%X5R9$-{5q~knk6)CF zRFqOKmYb@EuBWKt?O%xk5*glC2a`MieGuIm1@}3(JMQM`LSBOTRSLGpAwopUBXVGUK7;*pHAac4{S>ry zyE6_P+c>kHjyy^)$6V_VWz7H|U)V4L;Ojd)LSs|5q*v$~?* z>UhrLGJxtHK!x$c>_>5xxz}@&=W5eXF{o$ThdVGYq@#b>WH5x{#KjmBti5nd%n@*>mhG`w68eyJ>}3hpQLUMXttM>;YD*g%)iu*;L^y_H?xP$fU{OmX+g8t zlCyS7X=}iB_d>kQfOlH!!JQ_N7V&Mm@*cGQZinsLeTJFUUFW9p-$<54$W>EdTqm`~@-U8~7*?$(&b zAO+<9J`vXzD@^#&51gk;%)#4R`+k2e#*hYZ77x3qA+w9!J&ZG$eIr8C@P$Lyu#H1U23D?Z8z#H~rbt3t9gkh7Ko;b014&#n zEUB%i6GPit?O<-qZ+*=+zOAq9)+XY6)#l%@sG2i7FpdXxa=!`BEs!2|{7qQdl6MDC z8Rvri&i4!L2VlPnf&wh}0C1oAV*oGTulvR#4qms^=&GbVg+|BEO2{&Mp(fv(fCZ7- zAj1#DbEhx#I7Z}(bGo@uh^#pwR2(Z2PAFcBR2{bYa;QekN^?r4a`t3Zp{R`{){X!feg^kE=;{-% zFvbV&d!tr6GsBB77Fomq8|#r51LEOCDT42Eh;{-k#HfwO=pt z0DRJ1TPk@k3CI>z9|I(InNGHO{3P2q1TM`ln+FA;fJ8#K26$M!BeSmieD~wp^@iNL z_zGbC2*@blxdLpwdtl zHv0fMk{kuwg@CUo$i=AK8Ptt8A%$7!ZgO>KCI7cZ@gteVsHk ztLB4@Ihe=l*}?6dIdPQOZ0PO<pyQy?W_Nwe5GqMJf}g4&9wMJ{=UZrczBu?oBd#Qn6#4C#qy-p7u8{4*BO-ay*rB zPFoD8?rmtvq^FrZmHw-m$L$H`(!9Pf-iJWh`^T@o!o1D5a2rT%^B`}Y_pU5X47bO_ zTh&(nPP53q#RivWi=^S6j$~=GUoEFkZ=HW?U}AIt@7l@?40etl#<(x()15K2D|(vN zhWZ=w?>^FHI6H#R?=Ht`Sd{^;-rvZr;Jz9qW(nCbf=)NA?Uk>GHZ&XD5`yFV8zJXB zC!{h2d^efO4y&}j-HfPh@vrUdP~}WqJdt?QJG~aXQcWO!{fQHSOFVy@O(GEb=L=Vy z>aXPKlrF0kYl`i=c{^s3dc8)i+*BxHWmwYE)c%ktXJP!Mp;%-={v$tJ|B+qchDUf4 z=*klS16i`1c`Xl#a32KAD?MCU>`Iqm**V`n-AA&9OrUIJse$i_ zbTjpAw9(3Qhux098LwWJdWLVYyuTt0*$(RL0mb|?(ybaT6N|EF*pF5gkMsUyQiGMn za)Xs2MAPV1@ri@=7g*fp%ljG})jZ2?vz3c7uAbFA?Filzm52Z2a5V58bgOx?*gknI zCMrYFcdK4Kp)M1* zJy>$q;IlJ|J;9?sE~BjlC@zN8%RP0-FxqdeD zF6DPp-8?wq;~|0`=Dc>CUCHHL&f8Az$gM}qHLp<*KYG!bgd0D`#hOreiBqg&Fs^L({6!x|U$DDtF z+DA!cPKl?wKcO;<;63k&UX9&1GXAx~?-jqkpT#)Spr?UbM925%mWG5`rzQ-K8DEu( z9gEX%b+4ws*;oRHBN$6HxX>kZbV>yrLNJ;6P)uuGmr^jlqT5C=A^WP9ZRXJ7n)ksg z@rrx$m`M1F!w`^-l$5+c0ZtsPn#V-bau9tiN1jQ?;=(i2=_^#V0&sf^`1MtnX8bkl zFG6frfoj8|Z{r}Ib;njXVMem-mHFrR|J!A=4p~7DS`FU`^9TUO13~8sx8FbW@<0IA zKSI!N)BXUs*MvyGnLv!&|6bXK(A8imKqbTh zF*ec#vfe%v_JKgcv68*{?}%s~cN4st==EX|7u-d!?BL?bB7VJ9+tIy#dChPOL&LrUpzbxMnVi|1kg#gnDDjz@z{Kjalcx`JaCFi9co}hZN{~m_LnX!ITR$P+Ih;UO-U2g!>Yrqw0UjY~9Xd{7n4^>brh_aX3O{j;fkmeQ+ihGfCTw>+GE>Bl|KHtL~ z!Y{&MCSJ*M$8WJiMTz}y9~h;|d0bE-;}4x7UYI(c;&gnyO^}ho6Z~8;PvdmXTW}!M z_6K2?6d-MJ2SCUCxh#tJ9YFtbHIDG5*_RN#|AMe4=^(5cC?y{2lvH9ZlD12XjCP5M zF|luRv&qTDvduC8O!K11o!k{z5SW?N=4f+3v0msKnV?)%T9Cldr{x+R zdYO;5S#2wYOfiZ&dWo(7)&X{J=q3t*u=?g+@O4kkmAk5+$RuwN5ST zzIhD0ZvlD(@bP<>_x193frGC)%7@`F1*jGVf8LURE}!Oqy>`9$Lkb%2ejQQH_68pM z{JU-Id${}uIMXCF$&$?H^Lance))dc&ENTGLF{{&C;a?!{9Fg;W(3^S0WN0& z56X{c0pE=8>i4sNFUOy_g+9H{6GMNe=Se`nq2K+TJvL^ZADDWL&_4<8FUJ^`BeyXxCRSB1CW<8^( zGr>3B95$c@<>p2rP9}P1eh0gQG$2u6vfsqay(1(+s z$CDPkD0b9wEJ9;ijggZcC2=1P=dF+w6^c1+)R%td*74~wT%M5$NLKlI`?8)sZ-TsL zxTd?wrdwLsdifa1u(h>OP#f?`rm zG+5j)cxPm*w_H&x=L-`&;ZyqMx;`9GS_~`FAq&nk`kN@->2{3TDcy;#2`DAPUDU+m z5I7ZE6xV>MZ_<+oSu|sSl%Cs1kx(vsq!WA1#|N*iQ?|>Xb(vL~_z-9`q*B4qn#7Ql ziQBD3&9P}vfnrcc2<1j+47B}b##Y65QlyNLzxK>hzskzx0=7sRLQ~j>j(^o?T${ib z*VMvy8AXia%1;Vxxlj*~EBKW*tg|PNfr{_8FcVXkhi=#-=Ihq?dcl3S?Jv@pWIVvC zk*0@=J0_zcsyArqFUe?nVf)m8l-N45GQfJQSG0F_6ME6Gd9p&VzO)g^u`gZDB6ig zdJxKJC1w?WNXRQ1^jy?4P^LnITEK!Rl%ZDQM)@TfQv-{Xs_mVs-gof~WD>zioG zV~pBbz&KVx_&aQQ>mk~?1YcZWaBWDrQc~kdR~zY(7R+Q^268cyg~}ES?^5k@F3;?s>_bX2 zWi;?4flZ9`C@33!5h=pHWKDO-ZbY5BMdzqfJ4Z<*e!+;>-rfv}+onzc*~Vq3BzB`& zD;PtOs%X#gS*B44>XQpQ82Ku+=(Osh-7j zJ^N2-YtELAbQH|fMtwtk{4DEVCgZjx0{jEO9T>T#xt%d?Bh22e=6Z+J8)?mHH9LIQ zab`q|2FW?eG!54O0KPhLSqF)Krf*40wRp)i^uP!Ppat{r1s|(K0Wt@N3)p6tRo0x8 zKL+=w`{YsEcJi)2n1y!)^q>=U$YBSgf-jub)(PyTM#!{j$E3loCYdpTW4!_^^YUX$io2n>YEls0b@$)w(yL}O1&C+Js5Z(!i`K;RM z)1hcljam&-TyRe^2j-Zgf@c7m3iFrJaAAU;sPgH!stTD=JGtIUthY!jHW*_RH!C#% z@C;qIN|iK-wiK*u#d%FsZ+|JszOOR@Ee_d=pPSyDHy)GClt|*CwSLTKjUX z=;GgcrGZ&7NZc^2X;={UK&w;!-b&Vyvyu8 z23yM5)LOObOIDF1`k>1tc9!b9rVC};>S}oC=%xVg77g)Y=1qQHG)oo1%j!GE^CRkd z`nzgX;3pyZ(~pX3jk?yt=FayIdz-4Z3-$nz%D=QBn!tm*{Qjww9sT(YD@q`%3m4A~ zX#C$5aO6E!FIKIDUl)*%v{=DDv1R{gL1E;8B$gbDXB5M^?&P~5o1cy}1@q=Xhh`3` zw>LbCDCajLngGzsKX8c`&(^%p$`Kd##(jUSg2~0SS+MVqv_&v~H_&@M^Wm4{PZ+a5 zxAQG0lTF!dCHo~I5E&Xb;unH{lN zBw5Sp^KPwNE@h;lQp9omPwea<qj^*t#X9z9A6b90}vu7G-&<9ig;I(cj>*dqS6F zJw`)zGG=+FjQ`PIOhPy1;AE;B z;vT{$qIJzqKS1Tg3;;mN-wpo~R5*pm@-?TS#Kb(peldZE2QsX(pyVmI+{^O8hHMD1 zl?H`|3<3h|&GY(VM?gl8hCx~(jFiK^W+5MxRs&tWv95R$Izp#rVJ8vs*r9oxl@x2y z;ehj-XWc4p7$lDB+M^M0Z|g<5mwPu)nzsqQM!&5TZp?$lt(F~q?6U0gP~R9QQ#`jx zqkiZ!Y?2{lwSZ2alfd^Xxh*G0S0liEgo79?YW^<4DUuI%ub@!QyAKtuTMSNkS>PLx zInZWljR6idUzGkU^xInO%2(vM;foP86mcy`5-poXYxLy zjBugi&cZ9A29FW8A9v8Mh0ui#-8MEDpJ*;%O!e>1BoEQn5vm}StMMry5MbG(GJ)d4 zO^4tW;zK?r;Yf6mgUJLF!+_$M&nt|>%X-|Kg*1gHV!_SifeuOUSbzb+?6(Hh6=w@1 zF%=*{AzrgNkZglB7=3;cN#Psz$zh_)WeT>O2rHylHI^%UN+gz4h6I7nfU63TVLd$d zu1^)ZG9t9|EZ#3D;p3UR9kx zWn>tkyfD$XnU8~U@Vk?fQS~F6jWGh^y=&mYn$v_+|Idf9akb@6LNPEkQaK@1D~gs5 ze8Hsrf$%eWRM?#>Fg+kDdfXXr`d5uG8LO8>rQVQYj^A8k5>! zP!ElGKOWaUo2ZK$zA27rO$t6(cTg97E3jjX?(eqYow?0iFyC~UK}jN`G8+_hy=B); z7>0aaH$oJIkHr~g>9yOwT^({`k*4*CV9sCd!yHZbPg5VtOkEu}M6GGsWcb`MYuWKxM+)-baqM*rbI48o=hmo_%p$22EQpNykZI&7k&;8m z%p$Nvp<-Y}Zm`C%!6eJTujOp5I<=%@tyg58&UR=BRv}|GN>b@-i0S6B2BarrFC(kT z2FJE*Rul-&a$)aD1MI9Co^phRs)Cr!G=i(sJA{DUby`#XN_`2&qLUw#6>i=!UVByKGO>a*flWELFsM@^TPK>WY)W1dGuKA|Um3I%kO5Y^@Xd`wTClz`g z^#SLbz$z~|l*S#2R8hvOGqEyos9YP6#iz7$tT+IR+V8}OmY&tAAb<(_aQ|zItj~n~ z7uoZMe%78QXr~>$gDzs_UJZY99*-DAR?nmnir)~v6~*YEL%K_6c<$;mSEvL( z8*Ss|y6(31#%3$ac#}WA#)XtCKgu$o7$gq87V9t z2rc=~v%H2C?OlB=;?YtOW!ZnsQb|1zwgVc$Kb@fJuO!Ot?ICe<;ok(tZNbJ}S~U6U zg#Km=qi%BL1d}Oea1cY(!KQK^cc%3_s%jr17WIfr9jX&N+dtk^RvWod^kZ`98yk9H z#2t5kd62kb*l2sO!xsoL*Tf>ztC$PeTs+?!;Mfw}JKXFoUJ`HhXa&c+^g6SywW_-Y zBX1&xWmcDiKN%0J5rfy@hclpq;?qo~NEXWLOd@8yw}h1W2_&izR$GQLtipJKG6myV zOLHyx740)+Y1J$ygK^oL!!$-Lyr|^T$|MCQ$*JOxPQ{Y;qJMHWV(Q{OW@ODcUTVr5Mq~#0;u#R~645 z<0$b&7`kVi_C;Ja*Zn%ekV2`roR>6&O8qqW+~31MQln&zCR*G)W`B!a9{<*uKZ-%F zBZd$E+7N3&r-I8s>a@4QfkFRRW4S;1tFhp&r)y8s;IM4cBOj-Z_p~8nZcQDrHNmH8 zLnRXwah92^lHN`CmB@T@zJxd;rTOAB<+%*AqY;@~(_%l9w`N3Pxbc6Xs9KKqQ<-P|@%6#I^;ojrO;SnQvvNr%HSqf*TOs z<+KR;O;yh#eQ~q6;JSv zaGtl`0lg4&{5oQGDAH~TeO4ll;&3zw^%Ppt$1LTv&>2&sx=ixt?9yPbZL!FTHL7?N z3tr>&lLLJ@@6EUciJOo#(AztW3LSVR6-EfO+EtKS#6IPN#McnJm7r3XXu6O>*>t&W zcIq~J98Tw3>a~JCG?n5dhk`jhP@ai>aURv9tGv+6y&`fX>t!2aLXMo2;Bo_e|Ul#3Ulx z>rtIhF!P>3I?>)`K)YKhUC#AyQD+H1*2JZZN&9|XB=dH+ZHV23{&*WUc^ zRK}bKFqzqi5AODM-gW=)^lk^R8w_wvc|xc*<^672(5u<+gSGv`zb_~_WC?u~3%VV3 z^w}oZ_x+3>qMq3!!N4gpHsmVTKcnA1Q`aZhH_%8@-~#uIS(C%w&8qH6YvCL!GQyV9 zD&_LpNryo_*!*>nzgq0UI18~jUX(%iUbkx)6q-1!6^16AX=vuSh#e`#NSgBGrAhpw z_WCsWZR8EDXTgToHu-jPnQokEDe`wYJ5nmnl109=u9Wk3|HnR2(#L6KVH5g2`IxwP zJlv(M(a=L6Ds`&NbCdk}PlatRHsJGJao2aWR48|71v@RLOo=DAN||4i)ss*3o5v4T zF`akg`B-uIKXR`#yiIWoi=5YXYr-yAN!m{AVTsu@J1^AZc)1BZJp{pMTvaHCLAMT|Smsn2%MY?*ALkNEM zV>rf42G{35T=e`(`C!jugK5DJeKAsd)|uVXi!NGH!3*o)^da zzCTK>27g|;swlDePznCU_G~AZJv(b!$mL)d@UmP}+={mf-i)rZ$X@C6tOkAX%9lUe zIEq!gTzVxisPVx6xwmpSw>@dEw&Kr0P-8NJ`eC}eyp`x@m@-_QVK#g(hhy%AVg4r0 zlS3KVHDfW1<)|rCoz*w&H^{^E;gy?+63=oKn-MyKU|sd5FIvWk~GNsdY!#Ac_sk172FkT-A;3Yj^W*=JU+g|(EOp$8jUi3Z znpxoF!hTkw*1i4_4v?Lb8XQ5Sog9#$tu6;F!M;8&ri5F$(VUx9Dn_qhuzW=@u=PFM#+j; z{PY`!wGA@9bLZ)mqa;HUQwC03#2#yTco@T3tTcBEmpL1FY#~}A|E6o0+YA%AEE*XE z1d~mjEM8*Qs~W8a;Lv~j^4sMr#;HE~iu^~+^&c3Y4@)lbX|6E06Z!_ zQ(gDrAA2zm=(b+IQ`w)d2EK6lkb@D>V?$9HfHz+a1U$oRtPQrR1UB^@!i`SlGsXy| z!Y_-eam+xJ=N+|G&d;`J zLejtYsKkh*0tSCw&m{;J8+plH9!=aCbjFQW7*wKtsB8)rhh=P4*tanN{5PS)Ah42% z)GaRTfGh%rDbid>>yf5h2+QcqSM7u7Q6wX;#2O+FoePP{)R;lbTS&_j$|*3U=sY*B zcwVF(eCRYBGN}}&2tybP_c0nx-kVEKtGdWZEQHmyDQ;1I(KVzm?=OK=nakf6OB4p5 z$qF&a6wegw9&*3D>T0Fb%i@x};Jy-6q!H_y{`^MQc>uMaCX?ygaSr-9-f`FWqxao@ zOaR)g?3P=p9Anl${F@=A4Itf+qwd?ux&XpkTYYFwM(xb(k$>iyg;LoGtQF=to!{$@N zS*7Z4zdU?aHUw3&T%^R@au}WMM&C>@`e-$0t{JVgp6WPco2$ggASWsiYgpC>u zfiSuPC-llsCe2DpC1vtr+N#Lt^M+SnVanKsg{m?ICgP;3LZ)rB(^enqtF`!ZQVz6} zmkvrp-%Ya2n1C4F{#vDd|3r{%SW%Y|y~+6f9s8pNZEL+HRriHR!;bbN1lzabGAfwJ z>5rsI2-Nd2+p2{NG6R~YO7~Q2@IwDGasBz z^RVAIWA4a)+o#$5rtX)`=yI}ywFZCC%?C)z3n%&cI=W4Aq9p|lZFw(Vg6>s&ZKX4A#_NS#rI#3XDsIm(^MF9zGe z6sJWs9(SFsTOixetSx!fnGI7z)Ma?Gk#*=<6P8u4r0-0VsY0sOlW-MmOL`FDW3*&# zXeUrR$x}RWhW6W)I{vM6U(q|DoOAaG4TqmVlbIMM$;u6Dgu=`9#$b8Io>_RPbNmHP z={~^5*j|WWqhveyBK;(u*ZgN+i+ZATWyw7KXcD%zyw&8f*wCt-6kFk`OB`Kd4>J%k zoYOd(lzdMF&O)H9igjXPGA0--5b+PqrPYk|wpgz-C>8ZD1;r&GNkm5)As|<23d>m+ zs)?anVr3t#ig^qIvx-mRx_e1>8@2UBop`sBm_Fr^u6Ik}Ec0_Y_CNoq8R<`H3e}zV zr)`%sG0zdLpY^@D6MBcgTI71R)}CeL@pW{&Q>=Jr7KY>HikN8$(1Ogl zwkS!e9SrQzBk1$zC5^vRxS3(E=U`0;!j#d#1mLfbN>lY@25yER3Kj^WAzL?`8@rIP zWP@Yu4y7zW1k|!j2s4NJk3tw`+S&73EpjokTyF~A$mdGBkdG}g?0MBlydJ->P669s zo%9PgqC~pkIm`@pF+9Y7g4ctg8R1Mv_k%|tV~CVINKLTZsEW>#so9lVi%0C4AII42 z-8_}Kg487OWM(zO@wdHKU}}DkjX_7=>cF+9MD)`8(x$LPgT`z{nY&LgZqsL!CQCDP zF~a!*Et#V2X3FdmCN$*TwP*V{#8huO&+hQtW9t8GF}r9eIO|GplHjyGg=>m~D;F9; zr<+SL35|}UN@6@Rp;*eir>sK$hcPVZcfecg_UKAL#~A zlIh(b)#S>q?>JG&QBi{@mwIP+?5jhXJp=1~Te=y(9@tPnqAts`?kG*?6rM-MC0y4q z5Z;ZGVam-b4DaC!#TjOli`Tqtpg1`lI_$SBwkAY0m8QP+uSiUHADNl!tsaSKUSH<$ z9>l`=TuvUJa!$O+R?gkQtRg54+E&(=!Z#U>QPx3ndZY_j3$0WLTIKc1BiC+}Kpf0x`aFfbAj+5PTp^%~c zkm}^yR`#~0akqy(MS)ad3%`IZDH{LbH5%duOf3qYauPvo2ltBG7+X>|=`_K(;+j~) z`R7%EK$PAA(|dzUwES^}-usIrlKs-?67&SJBZ75|JAVu^sUj;yWL>Dofd0xP(~m29 z9dFNepqXm+D~u@C?6#<^NK^T3~?=Cf94=#ht0C4{ILvW`Fmi(6sIfs_g! zp5DvUQ@MtxGcSGRfD^?=vDpSV3M^60VOdL6Lw$A@cD_7aRok$9LyP&6 z3Qz3CceK4jMB=9cr?GAq9gMe5YDW4)Kyk5m!oo`?8$vTIBE#=C&DLB`XO|W3K9d;3 zU>Y<2=+_y0bFk`$9oDhO`V7zc0S>=}@f^cjwNHUqjjl-sS6ig0Ca0NG z+Fq&y-%do~P@-m`>fJS_`C59ltg+tkpnW|=Uc1y(%N>>CTi%eNfd)%G@6x1(v2h9+ zvRC$2`N>w1LSA;y!BOV>RVsop&A51UWN^G`2a$$^+@}9GS8E8P0aSvd4r_I4NW3Y2 z`mQf+7+)g+@MnwM@AFon*0dnqy-n;QJNi-T%^8vTbfjC@A z$AiMb0Z;X1_mHTJ%@JXz6%zrfW>gztw~dO7bio@eF7}>gE1svw2Wugqu*cOfY3K8c zg`n!jCYF8+@(CC5P7SK~V2|%-jC%Y!XA|b+a7v67b@Q2nGyDYmw;RrL*{>~*yfT+B zF<&;?3u%SO?LkjS;VUxK3I`$$ifiFQhlF*}_V=`u!xx)s8(tE26rP?k8VY_dL`#bJ zkEBSpnDL&>1f<*UCnJ6Z@BU(cieI9>_!l| zFSQ6t2lMJ!wFAbzIjI{b-GvLLS~(HP9zs;EQn(Y5-)_3Yp3~;6_9JcLd+xsq^yoR0 zp`^mWfWv9k>^LyKlrqNYg#Q9P5$JG!++s}Zq z#dWTH80q^R_Xoq zbUWoCSm%$Mj!9V4_POd|j}Jio2ofht5S=Z{8SMY-p|=?q7S?2t9qy3;FplMdfAfH9 z@Oj%EZqfftFgWhVoZB^pQ%w6NZj1TWemLiE1|#l`{w79vd)ya9)6xVB1$VkaQ5<1f zeZW(E9fGOpA2yyJ`9~Ov4jR~LY@W}q7RBlzH9preK39nUd!sD`Equd?r30Am6eETU z+Al^HCpqxlU&u- z`93N|08tOeE;MzXct29x2qNDNNVXa>aD{Zsf@QDaA65dXNG7hTE{LI2gbvw8q_!ET z#~H{_iVyzWJ)|)hMsx;5nrLxk!_Q`OXVN`wnd>!>?k?PZH$TD=xHA+Z>r{Z*gKcVh=2J>RO}6qaFK-&HU|pLR`5u5sk0r9nm0lqo%@LTL0(x-DBSxljc4@}EDtvpsZH9HSda*G{m*}uL(>KU&Fx;d}5W(j0^1R^t{Q&IZ|N;t&gfv@nVTEohkyL$5jA91i0 zQu=2CUUn5V1opG}@imQ%3`3si;xHxlvm?=7-D&RJ-=?1+nFm}{pY!GC2HB(H{Bi;3 zs$YfNsSncbwO{5=z~+RLat2zG<4){@%J(mQmvZ6CY4^JKU72Dh_bh?#*Sew~d&4o7 zuP54x%S;oovY9Q1mBEGi9Q@@UEbm>1{!UMlgWc-$RHKJ zgD}S7AX*4pVm?~lwfpOFC7bZ`=hJR8#&!FarlRdW7ayIu+cS%&ygE|C54um^cI;q; z@B{9KT7L$~*+~;1r*JB!mk@-RrA34F#?^_9bH?l#=7nz`?Dk7G3~G6z1ascT0+U;drTtCArbJ8_>{vF z7CktNS{wdW4T2AgKjW!RP9Fu5wO7Cck4EYKVR!rIXTv!Xw9>3#?X!6 zy?PcXCD0^wu4?b#)pzrbTUpbpC|!7IjZG!A?M4dwIP`}-S-%xw21+1AsZ9I+d}N6X z=YIKXjh@CydkcS|hhl;Qxyta@zlp$k8t}@Qng!>GLs|jB1|&Fcf8b9cUKN9}05v#B za^kO}Fs>=MaHye%lHz_m-QJqrgNDl>M{uBk*dabXMNBLX`d^dyXOusxZJgW(956OH zGfm2L7UO6OJ7edmQ%Op2>4ClTJ{?jAe6SiIl2w z3+vZ&3)lKdaKKs+X`>UrRh3dXDr7j7Qd?D1HOe;{lurgTd}EB9Vp*?_O2e7hJfn2L zJV#lV7#n;;xD}2|Jr6x|bHwNkRp&iCCZy?+JZD0FCFU5$2{Xsv1$NnEWqMcdnZ3;T z=8V?3-qCx#51mLVQm)U#GmJRB%5d(higGRs)=GL)_#rKFa^`vz2QpVeFw65@c zrWgTnutY(l3WMCsDG|SwTH+2xXtQX4u>;|S7B9L*A$<$&V1#q@qI5a}D%84`u%Hc} z@C{cPTAMbImc0}h`e3FsP+hAd)w7DnR1t*?#Li#O#2}c)4rqLGQU*3nziisvF4J^n zrR-js$x@|8Q1KI{zsdF}PZJ>#HY3?%E!kN!I|b)g?(&w7b>|Kp(Qkn?(-Pm3HGdpZ zNDj9ucTySKl&v{_nk>v%ZDWE)g;as7k!BHA8y!qC59aCj^IPtIMcdRD75 zf^PFfxK(XoexHGc3^p!y%b8V~N&bg5%;E@^@4@ z8ntqWW}`H$Lbt{b(kxvaUBtNMGmgSw`7rkh%6wSHW*j0^tC5Zg+| zqRuk!ROhaN_zrVn>iubq1p1%1#$4VEbES`hmXZ7+U&2l(=Q$hr?y~ha_vgWGYfiez zr$;xAp%#e~Nu#zJWJW>Zwru~mR>fX7BQ>dWEYj?nGIDI4gs_y#!t15#-uDCOcbHj* zt-QRUDrB@y$b#}VX&%D3Una7f&^lfZ!;7kfzkAsED>e%#9X{Ifa*8F%3fC6gy)|}x zl^?4Gx7KJ=_P#@HHJQznYkiWl^ZIi#uPGyWexyDkda<96SE5 zeq8QkxM$qvmkND|uCxyHu(khjZ(9fSehtfrPr?JY2{7V*0c1^WPL-f4kcK1cJnJR2@o|PPJ1bgq&a{JLZe?*^s_a^*OxT zhU^ob7min!L3AhGDwX1&RBYx2cdGwj8UNQ||3%?yM)2L3P|p8d|G%aAlj-k^|8x5A znEvjVhnDw+HS>i%sfq@wykO2@F~u77Nnj$FHqUiUDc59wMaqQpcy8iD62$y7WGyIa z6^Y3!-g4erCEOVn&R7tbppN~;RF$Jt3V`l>M9Te5HcG*ValuE4;Umym6S#6~zSBBE z6n*)!;qXI1YPlXqB3^akrhS>zvkLU)Y85m4DF=*NU zb2Q%OMDE#EC#8KcCsBnSR5dmgk$?m{L>4&;GCD};#P}*`Vv0L6_At)+E~||f0C6ip zg-XI6iB!$B;ZWO)w!hwcH4btaN_{oX`bo#TrB`uI7E3g0jiQhJc!8aKPei%XW?dA$P{XzFGY|Dv!&>*jNim++Vpt2EcjL*(O zf%Jd^yn#X9ojDjcv=-rI_c3Sw`Pyj#;d-kp;hBJ~hbFN-+H?tez1_La(CAKbdYR+%*0s4n)HQS4Z465}Xu9437nk28mKWT1 zDPoL2SU(i1*#9je%Hlh4jq*h%w$XM(`OE)a%u!%uN@7t-N0I2S7v?QU^RCWALYgOU zHqAF@wB5VCTxg3&_r-ZTw;L>}$3rCcg65QgZWO?<#{_Prgp3J{2o=X0F|rkR=ppoJ zUydL;p8uh7f7_SI`8JF66A=G(a-4Ge!SM0%s_W_d^^DG6oc-<505&O{do~;+cr1H& zVQ{mk9upg74e<5Q-1d476xuA^y;`tywP^XxwvmN>1%Puc4ta+y-NoE= zEZP0AF4;X&p+QmKUm1QJ*X6OyyzH>+@H8=f?c_hZDAcm|j+`@%`(p*WFZ!Va;YE-W z?%StIPqM$`R)BGa)5RC_*KnPRpC!A^@%?J*(6#n<#Hz)!(eSsE(NcACx6XhUPr;a*INJAq-yf*`ALjz!1vnvXNIL@xe}`Lz!ha^ig?)9 zP-u0sA|J$7%X++MTT5}!#^)7ooP^8c-b)J12(kA!_fA5*D4$j@1##p9u8kNv)O2xi zAQY-4;P_Pt{gjf{C=Rf{{Zj&#C5dzbQZP4u7$JV| zNEJa}rPvVq$@YITee}AK-HDhY&2@v~4B_SwnmUQ?XC<}S%3u=pgQ-sVAWJXOND&kj zqc}5tY;{r%jW|&QQ+G9_s=;7d2hQ8$p~2xecn)GbKD^T#N5aSfK8yC7McoTvb&4dl zPLG#;GNLG0ACEc-15eMo5qrSy{VKw(`uv~zX(9A*4Pl;G(Y&c1h&qXjQy*w`qZFqf z2@){s2mSVHI(&lY;p<0vaE`m6j&b{F>ZF2NaiZ~G+_9o%6qmlCZlsY$hCi@2T*cB* z+tu>-gwRKasz-=hZM7Z$YWIh`){XpDKggoJ1E9N8M1Jr2x%mBgRz275+Rj~cMIiQ`;d{J%#IJLHi(tErn@#VH!uN4~ zTfN&j>-)rZG4*;n{H-3R8r+AUlF#Yh#k*KA46CliafPZj=<$UUVu~+oxN3|8`ANl8Pj(Fr4ui- zs*U`Bu;6wbMvszaWTK2!R6Uk_AIy(&2P)DN?)w=N0?|7-@X$#QgbkJyj+48IQ43^n zwKx^I@+H+<6$UPzRN@7u6kAk=M*xnK{|^i(%2WliN)93a_yUH@c{}0YMp5Wkaa1os z)HeJ=jS1XF{<&L@svrX(g@B@eMN$#=0`~t!XfS$V4b26mbWZAK#m$E2%snFjGFD%| z0!HZsG?ou681s>Z&*hLG&9$sU7iv1^u4*|(>z*4w1!;fdN?0wiP{DvI$}R^XI1~e0aF{!vR^WL$FuQy z@4_t^8m>5FuXtdZdrJ1hn$sb3u!^_us}vhw2`Ye4DFzzRleYJM#97s+-wO@))V--fFZ3PV)kkww(q$GR32MAWoaxqV;`>QaL$`X@BK($^+gXu5aI)SG}ww!Q6)RM0^5%t!W}RO>AADTE@(!@JGM{b z41L_0Pv&Xuz1Tyw=&zI&p6Rl)!pVi1H(I7O`{}uAG};dyAGhJ-i=%tX3wFbx1yEoG z7fQ9~GZP#IlVy_Dez|kQ%7tjb{)U)~tR`-CE0!$cq~m(u)L4pWFz+OH@#Eq3rx3ma zW7;<)q%y|PzObfMB=iSGvzjxgTDlSgIXHDVIXXx~L$4I9-!NmO{!8cmnrdei_bfy?X@ z>xC~L{lnLnQw|=x$$+uLQ%KMGfzuUwagwvtuhlx5s5mV|#d@g9LqE#`xbE!WN4+e| z+6K$#xbO-ly0zr|Y09-O)#LgXJ&1~Vd>$Cf+TA2IKt@1;tVht8#Xw2v)^WwXvgV7G z0!|IUv`<|v60Uk6;@4k=@}>2)XGrDJv9I@>7>PiZ$ApiSmv;$M9 z+h0@`3Uw*b#d`&*sI|C9)eJ@>?TXr~0PR9&N?1{mKl+apJ=m(}ALFty#MTr89Y1*d z{gJ#`)k8%EIvgg?wj@DjX$f-NDZ3-<_lLk!bf@)~*&(FrFJ;Ibg+&dX;sp!m-WE)@ zGfujc26k-LHewbnzj{h1Fo3W%i`QTxr|M^pf0>8a?P`L(eg)D6+UPrQ?joc%NI|$P zaZ(p26Y3vN{Y7T2V}`)~kCEdlNIr~Tm8@;R5_QdmaSyZ0CQu%jm!z%+4Fo~TliRz1 z>gY88AMtR2USwI}f4#I?Vl7Mj0>-Sa8vA zl$XT!x@OctsggBnxUtM=pXL0D#8%*%Jg^?vwi_p|xh_ha)tXKT@xTXq*yyvYVam-NU^@Vq*yN>6fq zJW${IL3z)G$;xgY;}Azz`_9}obGKVW%`8}X+<0!cSR zjh?;5;KNL<1??d35O<^=bjgzLR3$bt`KOP)U=@+-;W~^VeR5V%ngRHNPRBOLm_MF* zTYgvwQESN!$x$VtYEc$&n)KyicyjDs!b7!p90-g5l13>iCgCyY6U@&Ir~GM;In6_B zJFt!{7%B9#4K;Pnv24LwOSqu!a0_3snKz*Sv%*RI*&po60x_WJ+^wdQfAUvMASOc4 zxch-jMh~s8-5)|9RF(PLMrW^nD(BQo7G!% zX#vuO=(PS&xpA$;L`-%DBD-f7Hod}Uu4|nzT26cz zpb#JjA&%3*KT9=Cod@~6hGSaGszQczW!=6Rmkb{VFIKwkt!C#JyW^DMd z8a54#jzk!A#{zZI0$ozz>$F(=8onoi`DVjeL{S(9=XpdXe@~{=%f29{Nq%8k&3T?qU8n1GtDjReY zoi$WF7ZQRTsdZu+!LA}Bq~dV=ITE5T$^t13k90J;7MRqu*6mgp0aDRjIVKKFb}SkN z`+4q;gk(zAqLrmk)QV<$X;Gj|Dxi4#zglNYCVvLU6ZvkMj(-P#=Bx3LcSlXvb_26p zWJKpPiuki4R&`WfIJ6DC61+jt!NO zu0Lra@#yX^C+3R@APt#j2#@cR)^Q5yce5 z5}OW;?NMu9G?*=#bA=jwXM9E=E^T+?I_gs}YNYHfP?O{X&6SA7ic_dGy7=x;T!$Dj z?0}>9cK&k8B{yb7Nx;FKBwh$XLz&lZ=4g9(~phLWZz+dFb&&Tz6ddlJiuXYBb&lc(-%M~B! z;Y;*@&F%a&wsz$NT}*>2JY-SmXI3Eu&>JZ_=%Ii!&QHwZe!P6Pg*9ibqJ$GZ^L!dg zRbvguQIy(~$1ipNNEH)}3dGizl_(7^OCYhF+bJOzsjM4{;mwT$oP(xIN=MR)Ey{wu ze~AMuC!bynU0(HEu-(~jcUv_SVk%jE(R}4T_H@aa@ES<`m zR)M!ny@HzFSKb}yectDfA8qTMp-s-~AlGL^<^j2}Zz%BO^;lU8w)$n74S;*YzsKnf zJY+J&b55C2N3Wk*6^*pbWaFw?J_Rm6?lDKEK(yE+Fy-g#pf3{1tMSTXx-0EVN9@rw z8PjiQ^-h&!%AEZ^{10|ZMR*j-YXgTP8Dm8X)QFhz5|r{_0u2R9U+>wDp1)uPZe-N~ zmH&{LcsJ+0-}$CGc~8=C5VU_|o`O{BPv<9o?D|EEI*J3z+24?}R^4tqU<~)kCNTjg zJbtbH*arCaIk2=t83p3`AXzdw7@OnnWbOL4h+NIDu}A3Kpd9eq08&%0Yjjr#pz(B7 zo-@_+$Furgr%Ma{{#oT){jL@?%u#M)K(x+ZitiT*LoMU)wO};#n~o*5&aX0$+qe_;_YeMN-=psqmGrA9 zPj=NU2@kfbjh>5(6GgeZlw%ROfHo+Oe;}?{Cr^({A_Yw*qdeKzT|25w2^(;GRWwHHvvlzL3 zt@`_MYb)pSYinznp}Xqqfqz@2ZPwFs`$PX&u+fnxr`x@*`FTHvpPhg0$jPJOnXb{0 zC-d^(A-?7wHF@}48`h-wZ*9P??K%`X$-RpbUPraazo{Vt^aqt9`=&pOB#$qGqpTCs zI?UEL31y0=7LN7u>qYbX_lJKpy*W57Oy#IMFTz{(ARs8Ljb*7RxYUahf?0sqRSKW z$LdFP?ezVqANC~6*)Ln)_r29@*zw)a`P&S4-;ZvDDeyz999VMfJK?d_JEyJufw0>P!Cb4y~2UhJ^gr+x@c~gtD_6Ckk_Y4?R zCpNh3OYV9hAF9s&v%T z55A4-%ERHWq?_t%t@`9rqlcS-^QVfW%q@paxcM-81?g|tLBh0}=COaej@1D#sK{#M zR-F+Oa_KHjBra)$A3_GrWs$A5T^lmmK^2Z=bNrsA=~m0}QGesW_^a>e_7qY_9;Xw* zHl${*PVWw`Nl~b#`rK3M>s4&(zI=ib5X7%3v|E=Da`@EzUkqmWbay+pVaX@AO*2=R zA!E%z8D*YpDF3x7#RqW|E5^TCP5B)}W(<)`KaDvfWYc*$#GR+(yS#2}!xq&Lh>M&q`j3@nu4Wi|vB{9v#O= zEpgGcnp;+o>7f)SxO;QD@$&VSZZ}exUV8E1UQG3LyvbcUd9AReMe#RG0BumJO_33U z;4uEsHtWQQ=O?I`-Eebs<@dd6D%i)lB;KaED^C=Es6#GVK`&|%E7fb46j3Y~KsIa8 z=(ySrQ$yT-JWNg{jWy^);FK9PkX>NgmJjOJCCTdF|M(89(c}J4y}RxCP_VS`!Yx74o{ZkL>?Al?A-?j;=Sk zsi$Zsz+LdSk*9fMIHQEYq`m$Hf~#VJ3SjM;t*ztQTluq)2JsK6wmbyVpu>VS;-t5J zDT6#RbZe&08M{fbDX1D3Cqojii>7+#1?Dds^nmfa$gtFWiCSf2lKt|_1;^yFu0fYi z`|F$I(fcjIVy7t%I?CcsW_4RYZH=>kGw;QP$V;-(HteO{Dz1wAQbl=~4w|?+vvP!ZI z?^6dug$7xCN&s_Qifzs#o9C!Y)``P*;t&Xh!vNDZhhFwp5LnnVYsEf7!l3G<^lXT~ zHBgwl$UTtjKqMRddRninN8&)R>*4_`!(okm8Z4f|Ju|zeK$vU34m~x`pqTv8$HUb| z`+}>kb}S>18L>!Ja9F!8vHH18PAB+o{~S;b5dVmqWnM-9Gn*Z|)%FJtBr7WoZ6cmg zPefFuwa_w=?cQ`x49lQIVh{{(!6V!I%pXXSE81p|q6{NFk?LX#6abGH4-}Q1QSJBF zp=DaMUIumz2>^q7ZKCnd$nQy>HS974<;;>9yG+B$`yuR{hn&MM7!^85C4~ge z=qOniN&`+J=y9fnDmFd@A#;?VIWoe;ra<{ONJ6JYX#qa5k~|fpu=(MT_PL(cNAT5p_w|q-y)Jvtn36g? zRM^anAmV11`V${tmi3*xl^o&@Zv0#R6!F03*J^4|t2R=bo9gB9NbR{MMeFm#dR)hB zERq|x{SLXu+x=tHaniOmb$7eS>!!=0D?x99&f`*zXCv$&PM4AwK4{gobJ%(4xP@bu zsLz>9pKlx3R{-d9IQlcMUW+i|?U@)qT}4LYx(KMNwTNA_I4CuY%GBuPc?FKJ$W51h z)f^LtR7BOE5Q{}NcG;HmX>fywiwyk+ZDQa&vqBiq5s73Ux6Vs+S2wPTHR)8dYao@z zxZkNNh2+1Kqiksd5X#WD&0X5k=-rW?c)TY^-*A+WsIuYV4y$j_0hZ`xXm@b_CYn&g%JagVo$Fzx2QuNB?rL39E4DpWg(c5WVh7i_s-uzy#~KZ(6!xAj zifKZabyu>Xf7_iLLLAo?UvKO$8*3TX6#uYcbO&uNB(U8aa2(z=;8=f}m%ZE=%6YuU zu>Nedvt60iYhO&i=_(G^68D*(=L$|)+%KaTlV6T$X*wz`je!TvB%lEVbvNGzFVQyD?IMuZ?&FD2U6-e!jifOCWiI4+Q0ET z-eC-a&z#q%-ic4jCutnYstM|McR=IR4QW1fFa;2y* z?!Qi`ZZx*pv%AsSKe@B_`{k{(sc{{R{3ZggL(hxp;bX|AA3`BcgFTG7kqu~sD9mkec>TW)0- zKa0EosL*XLzuoIjZk;@AzURB#A?3_>?7ep9%AD|i7yA}A{F(i}``DJdZJoOJ_1cn~ z@wjwvcD@+uTitpVwwu{G%vYMWE5eiM&Vm>Fcr4770U9-}e?85J@IBi-g}OHKKC*7m zDGGfT?QE-y~bxFI+YJ6 z#WB_@dzqJCQr5wjrX6k?K;V7j#VBUK}m7>QJ(RqnHB3-KWSY3TvwC z`>EVUC-ky8u(^KKjq&yD;1bm+rpsn}XfAs;_?}!d{~};#4(zhi^9iCiV?jcs_OS`7 zUmhHqP0J>p3_E8$*cXnPMM>b=^kZ^v%@DMBtUNV@({4;N@)}Vg?B%F^M+;6Ma&4bR z0K($UFlUt#=lI6Da|*pUOEM&`Dtu`Xx9{BePn%HUzZrT#0@N~D(j;^w@Hd6o+dZ?~ z9awI~g^PKOWBG}(_a5me7I`XE;L<2^W1WjeDN2g*8Q`E2s~I&iO578|OU!BTQ)(^@ z=*2Bj*60#7bXgQeW;Bel>LBDw7F+W`RY2Zum9`VW5j{7jm`Q2RRWB9(Y4;%h*Ew@f zzC9F^!s2Z*f^T_GlNi`s=1Lfc7F&BbIpWUqZOvZ)>daJ}I=CucT`jfw=lms=%V)g2n+ z0yQsbIh~uxstJSR;_Pp@(*XGBjv0TWJkv&b0ns`g@?6Iov&vxj)btbCr9NOgRxd62|lQ=C+B*3|bY$T@mpEX)+1cZf`hrEf_(2pk@HgosNK zzi4fPpF=CzB}j!G$#s>Nsx+pC5~-d{0hRau{e%_5ax{FB_PtYOH3`6A$Z1vToo3`^ z9pv%^tk#hD;TFZ6R4P=Ukd>?&tmKtO6t9ql7e~qr$7C`ksxpZ9iw3|R>a?^Oi+JLe z4y@^Ix_F_^)ht~w?N^*qy!Y%2mL$tKN_8rtX9Y{)Ahae*s3K}>fdq985d1JYwJ*Dk z!n`tyal{o&qN@L%GqV6Xq3PFBxiJt;Ej1z>%pi%io{A4-qO=`uwRW>K8Set5ZBm55 zq;Zw((D268nc&adxX8Pu8~=(Q2U2!Awb8>PaicknfWk>pi1JQYc@Rc{y)^ce31`8f zks{Km{J{yp3_Es+(BYNrvqahe8uU&oNY{{Jtr{|8g99#qj5QGvK9agBZXmi!HTIek zXV^6ja5RB*Jh5TCCU~RJ+^SW*)0OOiaG^1TEn~hv% zMQ2AckNVLEO;agt#@>RD^GhknnjqNF*dfY6!~Tvye6YZL z5J5s;35;1H&;66p@SjvZrfoIsj|2`r@eZ9FJbK-N2ZStY^|a5>c<3WBiDTL4tO-~% zQB)iZ3TPi>BD+)4GON&o7{#Ih^dtO0Wg6+f+Ri3KDtOXpVfD#25GjDl7c_XnM!=f@ zQ$oDK)bXM`jCo>_#F>bh$Yy`DKhP-#-7}&}z-zg~|AsAfj)Y?uoQ`uD*a-$?kP4w0 zm#FfMnV_I!YgN;*;u85%H{w+oK{0ZIB`F}Nz2J}H*N|#2=mXKpqlZh!&jCA(&4KyB z6kUV;7FD4S!w4dWb`zU#%~#*P3}>h3!70U*BD@+zF%y$cjA8l@(B`GKt zuKYTr56-_d1F8&Ag42UA1{Eg;jch}otf`Wx=zOyEQ)k&shb1G_EEEy5|K zsa23f6y6y2l} zIBP80!p`DTpK~6}sl>1ek6Bi$YVydg@zB@k;6 zM*Z3hZBWOa3UUoENwfcTI(Di`ndSYvrC>|Jni+?b4b7m>S^}~PiW2zPQR5_HKn$7@ zBnZN{HU-LiKaz?q(VanEOdYd6)hFcRYtgy%e_nzrC!u3VOdga z78ZXJ=$#-G9DJ6RBzj_praGcbio3m_4E8arj8RaRKngSCIGKfZk}sShFD%X4K?y8d zztcE{e1K!d_bEc%jFfk^w{HV>=10_~CAQ+1&E%6tZ_-wt$y6#`6*f2l^O5E45TXO}ndNT5-3dyczXx5-fDwcM{ z>vp;C2gqsE9<5&P^F3|9-HZGi7p;Bn$$aRXq9I-|zKLl7{uF$y4~*v@2on9Mq-6ok z=5OcF$U#KInPZk1nu~c3d z(U-$JMP~Zd`B18~O!w=^q`WLe`DgN_`@EcICW+8P>kTGpB3tib-Hion>Yytq!(PKi zL(F0@!u2LO$uIv7HW@ftw#d=a?XQhg_phOUR&!rxZcQ%PHpqZ?U#ddM(bkuaqzveM zg?*|rVcfGXrL%cj|H%QtE=axniv)>MQ>hH6Ez*6Kf(^_0j`K^gf? z_urJeX(NE7zQaiZJ9|;R-!oF8^|J#y{Q6mMNuv4dPap%DYcCfr@A0fwhq7J{oOvH` zZaWNGK90BXN*nDgwGr!Ph^Vw=M*Ptz*JxoG5Y)`cCdMcyn9Ehi->jK#YLR(J zY1Uivg{7%4%y8<_2WZ3t6#LNJokpvcY_OZ`n-?7Xy5Nbm;75tgIK$d~q_^{pd$y|TmtYoS;a6JfkzmlgVjW{E_7diXaD0Gx1GZQTw1XoKlMPds4x^=?h6m)E$Fu!1-|_90 z+sU-%Wrkw5a@A1Uoi%0r^6r02DryzL~EB>Ll8a zjm!VPo~P9C5}UOVpPf@crQ^vr`wscT`aV896ETR0ZJQh_WOh4+n63{0PnN{&RxUC( zZ4XQEy#!K23r&#aI|8Y}jU)hFRcxk zY&8&xWhs%5+#sa$5jO1;CTK$FmL_xp{NAA9{R^9@o=6h;$tvnh7i1Nvr z;DsJBKw0%d^AGM^?O#fmWvUC?WK>dqWErozc)t9mLKL_(74Wv|D_~0Xk97MsCk{HCGpBw(EGDM_qFOP(nZB;Iiqlj>L?1aBC z5xIM~HkLSlRKfIMnacGhVTYQQdJQH<%iD?K=rq6YQcmz!H-DG!+sEZ&qPOw77Fkk2 zS^p?&k&57Q5uM~kmespY{_)`bH#T-)&eJy-eD?A8cOt)U)K_;$QjBiK8ARuG%+aH! zo6xjqi13n|XK%Tc<8{@P!zD<;_=o`dZPi9|IY<^WF34=h7gB3DDL%Uj&=iisBbZSm$(=Z$c zB1~0U!!_JoT+tL)HC|D-{l-~FSL|+*#y=7G**f&xZ_-ITv>EKIWf<0(Q3gb8F=(_8 zOj_rOAA?j{3!K_wpj^u?Y+MZ)S>WHll8M?vVtW$iIdeW`FzVi&Ge7+otoxx!t)xP=lYN}DniVw#yxAUn3 zJLTftdA9~{n9)vm>^OZKtI~|2IY00o*iL7eqzKXA!b*@OSWl>zH{!1s0dQyk z=O`!kZX9?V;kIO=Mm-sY0KP$G07ugz0;_%4V;zW#EY(Av@am{%!It1)AvsZs;{d1x zJJx(ZZRXHvj~c+xn9Knn*&e!g!58?+Rg6({*9dD2U^<|6n&s# z+b>)mss2kSK*eJJj+47$4#Ss)#@X^!HvQEeA5pmprt-72dLwcnX&kdOt>Xl!LL_I} zFQRo~ln@Yllsrz+=sEq7!j{fmE^lYDHLZzmV&3CD z$3H$>$hqZYC(5zeV<9!Am8ICqDrX`&b0*d0D$BBlfZxp&#xJY5zj61R!UP;K;TYDc zNY=Coojqc}bu$Dbh!b!Gq4`fN@1KTg=uGb~1&O#5@=QwWXAUz|i5E0_b45iG2`y-! zr$sXCbA>eL$X=lcc*`XLO7i>WZzg{=t|$&9xJhO;xK61;@cZz8M|^FHzB+_156@S# zVx|)<&=W0e36yAu&&1tawllhj7(1-te?glHNLGaOs+r66;C7V%}?E&UZv!^ zknu^T@nA1wIfvY&UCye{I;vN=4?mgd4JJ%tCK`<8GSNHtr=Ppw8E^K>NuBpwS%BeD`6`Qyd zuTb-BaHG*vE=L<%H?T(hv+2`m<}@DqcOp|a4((WbySDilQ#o0u@1OETY?O+wiOin- zowifn^$XqFmNDm^BR6iRJS7gu>423)Yc{DDYcO12?O zr%%@S^Y2r`m{3AyLUbxO$A>J5IlKT&$9E)<**g&rd)ZD~uV*GKDTnk`ZuCbdyo&XA ze=Snhx(waJY?y^mH{qo)3G(2-$$a(+GJnJDTZy+Lr@KrIleM?_Iv-)xobt1b(!$B4 zJY9pNXIW!M?PXbFO`bu;c@=AFU+BgG&Ldb}lZ4wrBWztB5xTRK+~idLbPd07?UF-+ zoUZS!RxrLFU60`bb3Mi0=0V+5y2Jo%xFS+6NQb}zVGgCn0uy1qd@TZ_M>GdZ=fIAc zABsAr_?%0sydKycI1(iW)8^_ufz#NJzZCd%hUN|0^M!d zzBC27Hls>1ijhIh<=SNX;R%ai?zfbJ!RuduuvUozBT|OUTr~;yiWSMzyy~ng8mcC# zxVO0%gkP!30Cqh;|_v3Z8)pzrGog2u(E~ zgX3K@V1#XcwfHs?JRQ)jP{{RrS*xBm@;{aX`ZVf2Hk~!zl)spbBh@|pyEDv|$S_v^ zdXV_xK{31=AZhHVfip>v&(+`>^c)G%ScF=Hv^Wj7u(jyd8*PwS?ZNKyOJyUk5HSt* z5{+^I58=pl5gVqQdQge?UkWU1NN$X1uC+1rC;ezah$C4-eAJNCh=xX}pBnYd5<&mc zdJN2CJKmub937DzIf8$5tQ6$2iTFwIwGqBk-!3D6w;OOjj>QGO_O=ZsI5$Txoocf% zcMMa3Xd55m%%9C2Xjy>t4<|d%9Tk(RzgoTHQX72o)myOQ%I5BpNU8`{KZ;(Y7@;j# zFbo`=^tx*Fxh~RH77c@&P`p3v_2!PdRzDO{uf7e%Ufst-BCdv?iMFA4g_WDQ^%0_*c*`T;Li3sZ0Ws_iB;!DF|x^oV!me) zTy`#?!k^|w{`wRWXO^AoEioD^tMa}nqP3CV?|m)3(3iLNxDz_>~V$Nf*m*Z3osYa==KR;}Pxx(G9xhal>H@YK^$b zk@cEPR%P`ffeH8Lz~_QP7qq{Ww{mZ+&SXFFU`&JRqi8aGjmb?XjI` zEY`JERiNL}5 znjP}`mO zwet>DWhNOa+z6fA1d?)A(qPi+GCVY~-J z*jtMfoX6Wk8oy?b=0B=$v2}LV6MBR3k4-^uhNv<48r&VpKm$x+;^xfg4ozYTdF??# zETb!KuIPHw+*5!KI*FM&ISQev&UycyYQaeBUq3EVWBF4^QIe6F?nrD)5L`+CN z6y_F?!X||4a=UtSnb2{@ir$R1LeP*>ZEvjrMW!sT;6El*RvuKLvfB~{^Uo%=yhdj3+e2&dEw*Fx zRA;eSvb7en>T#uY^$1Do#3BBS@z`cYKeKaZ_wz6EJwp#AlQ&O(&9(!DnEBS1TOz=u z)!5|r>HQgUav+y88U{Q3bC651{ny;Cw^HxzM`^%~oO4<0leActGDYA-?kwnyX31 ztR1T$uNcphDq%KURpDlsX`rsT2#>9PGuTR-zKeLI4XRHmP~yS#xtPUPOH#?gC$n0Ook8Ddxy zzqZq=kve_CuduQLc8a0^NyZ!Tt|&$Ug+zpx&+vCS-a<6Rj0l&Qf(UgD>-Lq?2~L!1 z(h!4Ju4*K^5XiL4npeVK1hPsol?47Dw+qru{jXL$v#eM9cz`Wx$hy6`Y4bPiTgMu>=~8EXdpD zDndjdY>s97Rg0!oHj*h$<2Q=QE)8SxN0#-&`hRSe&?gNj5~>Bfl5Hwd?xG%}f($!j z?Y$5NNHjM8hp}@C&V>oqb!`5zZQC|hY}>YN+qP}nSh4M7#pbtj>fGhx@G89Az~i)cu5=M8;xRq)b**xWpl_o{bven|*udK{ zUV8@~TR_~$hnGOv*1ecNGv?>P4d0G?+*ilo&OZFQp3e33z@W@MA-XC>nf-l4#ywDl z%!5jZ&4C43gOtZS#x_i?(J){TCbZ|W121^Eg*HGT%x(fLp(E>@f9*F%TprL2=3r{i zOQmT(#4FMG>RTV67+W7B|9Vy}(DgR0NG-ik_j1@?<20?hLy-TMORBU5kKEfzuMa1I zasz#O$%+f4MKHI6k#Qx`rEKuyu|*tYJ}UcU^xgFPAhVW#BL^&H6;6)dumUr2CiY_T zOj1c;KdM!)JqA*EVD$*fx$iCX4^h!1d#+hI^e5}tV8F8J^m)5hLP)W&jXxz78L!J6)nIt^^ zXNk>3F+Wr0zF6_-5b4k*dFSXs)ha74omAXc@roIJvFx5d)f3aI%NybMe&f30 z`S&BlTI7gzTSh#JgNoLn(!A*|p>|TywoYqZzogDj+#PL{>DIv^I1exCSrrXO&`0MG_uwxo^ z_0szD2UIzW3E81Z)$4h#PQzJ+@70e&@*5A%ECYP%cx&~wh4tIxFkM|qV=t$pz{`$w zgB*-IZ71N_-QGBZ$gded^J@)X9FD|Cvp=}KQ@96k?XvFo?z&Wt=D7R7ruo|{#&M9r zU()Pm7_*YVl1$xC2f%k#7Zp62Vu@aJw|H8ZyJQtrT32<|m2P7&5Oh>JY8#XaNIJ?H ztI9(B2b{$pHCO8X(xog!`Q4J5G(|2_78Hp#b0rwn8CB=ZQI4!PDmLr+Rmk>)3$+j+ z7cr=TI4I!tI3&)>@@SU?4EBts#fh}X97|LxRRsuX&7A%^QDVOCBH>B(mJLo@xPc{+ z2^D<0{@g^_9nT3Dz-4>3OWR4#Z|0hvBcGr9n2TM(SQ77HadmRvWm2r>MVJR0#)~R8 z&V(37gg;aKD#MJqO1cxqBh7Wd`CCosns_z5&9-C*c)o~c$nf#tXglV3mkeK+ZGeGo zjmNAG7L1z`rjZk z%^aFLyN9aPw2k8NToLI_N+s&_#>O!A`aTyWGr?kHtn~)3rfV{WBYh+}ai+2ub-E%pup$&m zE6*>>9z}%Uf{2g^$}+9#oJ^NFDjJpBD<$B+1v$1fMF%ph8F11hu_>~H=&7gu)R-~6 z!Ac*=HvX2-fcC?hLYg^jw-L=@lo8EvLfIQQ>gx*c^ldCtSQ9mvQhbuf!lt*K?rServMT|9=1XOBVnI4r{DWAhku+J#~gcqpUwv`AgdQ|NvjtCFU% zSe!%7+OJFwQ7|TXFB&DAka=-$@{D{NuLZ1zLK5+)lC|z{Y_G8ZEJw$5ziwi{@NM2Z z25aNlUa$n$^Zv9D>Si>IciC^s5GpmqL&?tCijmdkB$aDmX-LuwqDd+rPbkysELe-S z3EZk?5e~A09qP9DYaF)yU?-IB4(sO8ZqP3WLfKgRa_!arBQvoiu7EHBB3G5+_kP6bucs74 zjZnfpM5{~!Thxm)t5U(h#gw9xBJUj;jCycJ39vvTb&beZ2J&J4 zc4)Toci1l7Ab^I+smF7RU^2EFK~di;k<(9p%c3JEG?v3~P$hy+Fw!dfFo-%|OFIwJ z3>&#&JgbPFNN0D|5j)K(pO82?O02{TEKJZ4cC83vN`IfBwuo+lxRP;feC)I1IK_un z(R{l<9uzA(7%@-{^izRKl%}bxmBHaAV#`1$$Ef@#*;&a~fN+ROT_P+-W8C6BEIgWq zPK{H%Us^?{LLN3)y(#MIL~)Ke!*KPZPJeQXvaF+o3-e8m!C-71^E^l=)0FBDs{78- zKmvfsBLt8$aH+uA*yX;~QF5s(G;D_wS16&LC|7iNl@5}_+ALe+l*aEdWVRrHL{HIJH|zO%}`4d7CvqKwYxi z2)r`H#RMsKX)M5_OQ4>!bm-rP$8Va`Y<`rcgomVleIC1w$kb-V4kZ^DG+Um4swCpv zr6??2Yutv9E;)tRs7VjTMq1OJhG_JG@_ejm1B>j}35M=rWF?Lj3rBG3*uHt;LLNoQrB83QyHQ zBt-=X1w6A%WLA$#0?l=_5{3}-9G^rapFa$i*bs^KLi|jb<0d8$O_w+}r-~f+Y8isx$-@DsDTxY0hTW_rL5!=GM=+ zJdX$|+T(tKUK=b`q>5A)6FDZ+xv~Llkf_XM)tp1fRq-~5m}~rj+&=;CuE6}vWqsqRFR>Z-ta~W!uFK4LCvs8qyEKcu6glgb7I5mAucKAn$tT$c0 zY7V4W1MiNREd<4M8>47IEaN+y#tBF~6K zTG|yzEa6>J<+0DfiInHOn@jL$Y|%7wOq-bt#5cXGlPoF`;*u3TiLomZMp72kFII{* z22g}IQluUuGR&H6knKpFzLuVL#89Z2h7MQ>^tT{r>Q6kCw(xgrlB*L=AjQm zDiEpBEVma6MdpR<*Bho)fTPJvl64Z2Wm+7EDdWi!sR~Q4Rb4Ge?Xl~Hyq@ZBC|43E z+wM+b^}GGmC5g4QhzvO{%7>&)MFo0HwiQ*%DCmek)|7{83S}Bv=R`c=WQBq-JIPIm(%_h+9 zOxht;^HW`mp@W|umRFY~DnI;kyp>!@|Mt~#Drdm&RNR6y>i%K{;AVMHRk)!P)QH|7 zSYbufc=$R@t5oMv(r;|2nLb_=(iD_sd^Ft=%f%vRJurTQ&QQb@L1Q3d7J-HqpQ zCqC(A_iaq1@~jW(!zht=qY&izM-+A*~VLX7*oav=DT>?_W+Q*f6hVlxaTO#ejz^eXyTJ>p zLVklIdYs{hhrK$~(C=R5HVL^Y%1d^xm9^2^smiCZbCli5%kcC@5E3=rgH-53LbAFi zSy7wjK{?(zWg1E*C<>>*voO*!H!8v6GkXQMfO^Mm=FQ{p>oLD;+W-Z~DK%MJhh z8r>Ff(X@~8|3VGp6D&H9@neqp?XzQkywTA(UWPHb%=7Q#dfsB(nY6&4GV@Mja_b4b5g z{09UyeQ7%*{W0}FM_s~FxQAV9%bK_9=?^br^+Omm#`1KR2?65F(9(Lmev_BeW`!EG z5~>PRR?Bkf^X2Y+m<&k1#8wRcr}nJHfHaQ0e!TQ(4t?FfNTR~%ib#N3`=tSnz%sJD zc&%N30mS>WFXr6c-JR`uhSl|L`|}sX3-(OaqgRrUrO9j5eA;q*3VmJD;B&zK1jEp< z(cRYlar?a2o-0pYOW(ild(sQZhPCdp*XX?T*&$w9c0JVFUN}{sWXWdnEWhb$zmh`z zmj0q$60_!ut^6ByJ;gY4{Uu1A29XB1TUJpT}@QY^uhKo@2 z*?MzLV@d_TOrtm5dw?&k43@verxm-v#|p!_j7|{fYVuYqxUbxT+^@CUnS@Brlgt)I z%l%}%AD@2cCDI32b7P*$tlg^nwf5`-Tv};kn6u}5DP<%z##F~t z1|(VT^K_RrqEbw*f+mkS%5=qvFw~q%U_VMhAQKg0 z4b9@`0NH^tDWYceOh%Ei+7ll^Ph2Hu+dG`Cn?*kB&{og~It~WCg{uxT9jKsbtm&3v zd&_QE6_hE=Ww44c9N}7*E50w)3X33BbcmeG0%@Q;M<%fG*5N%tyr&G8Dpxtbjf|f6 z!?Wxxj-HB*soPa^flI$`DB3ED=lps8A7f7JxSuyG?oPkZrx(%N0W5Q^sW*)H+5Q+B zjok6i9EF4Ce=8`1&2HPtC&bhI*?-ET>l}Ua0n+gY6+2#G+y_OoUgEFm=$SMolXMmry^RRI|7K8M6;lZa1?==(dbxNK6w};b7r}zRLq?#Ht z1D8_QjOxBAbetuLO{>xUkKGzi*F`=kO#anVynD)<=r2(J?Y}j;OXOKhZLRmWc`^3L zD5uYG%Cis6yN$2depr)jI)!0vv^xnp>kGo^FL)~{3{9roxhbwHMNl%_s7srIOFN+M zen^GcD6Ree8%+ZT-!m<7o5?9Cb*cn#qh?eH4hl=8KpD|njcrekhKl5Xeb8b>^QvG% zx8Ul}!CnG=U9s8LFnHDSC{JqitA{CvQB5K^=KU#W>T6magQJ;y;7eOc_6nWn0CD`_ zpGw{)k0p92q3A$SJ|$|fl+30k3ob6#zy#td?1)>Nw?OO*eO*@S>7ivo+ z1rA1Jja|rp_}0EQjDWcdu;`Xy$VFoKXJV4nKb)ZV8t~$pfm)gqvG76OQmqIubutwl z)Lr{xhl&X1XqLKbJI`*zGQ0Ulj4Eox#|Ry1dfiQjN>)SjQ(mV7Rd#S}pno)?qT_?) z2_n8+;OJnKC--IYoNrJWYQ+YlFFPMWqIetT-c>+JkTr}U$6oH`8X>t_jVcheQaWi% zQpYlJ4S)ZdrEE#SG%dFwNDygUI*$AeQO`mi=wK@atROfw45`&HI^LzxIjV7>9>d)O zt+)`JRs&db)N8(|qlh{`M>OxZ5bJOel@Au9M!uASbOv)kcld0x-9V>vhkcLLvRTk)+B?jjVoLqG~8EBIhVsTIHyF1Fu_p{_0qP!Y^vzCpc+Px zhz?u}$$B?@l3Vz?{m}mn5yA=yk=tgAPo+hsn+Y4CPka}@A1w8z1Lf4OsaE8HA15dyo-{{a_@WF%dLEhw+ zNh6N@P>62!>|ckPtahN=x>#h4QnkYrf(S=cJaHCOb#On3j@v-Es>>h-ZP8rgN?$p5J5-f zV*Cqx9az(jrlsS7iowgVnED^5lYt((q;uz3G_Kc-xsidS1sdG5rRG{u&$D|!%-%Ow z+$Nx%>uRmU^fR*m{XLzr7-ugIgQ0x1-SFX-b*Q)??7!?+ATEv~D2Vs4T8&H=9AUc^ z=3{a%Kg3r6Q{^nhC*YHlbkS8&h0Azue=g;$Lsy6lm!?!4`m~pJu>5EkkLO%KY?Z7F zz_k6RKcD`Gw>Lj!Z^mqCV`atTfqW)H?CIm@{JhxzcoXMGfb0O}yFa~n1(5#q*j8%q z4CNNXKPVDW!MHC659HO0OG89l^uTee5TOxMo=i#L(mR}>3ksg5b@EZZ`Iwk`zyFK`^zr}Ro#2NJaXMV2w z`)A)0;>GuT{O>*8?#&uIyqU0jeLvma)ZogSuNK-vu#b%RhZ0G!Bjpv>dC!KO6!n(5 zRwAqoPcaH-9`c(b{vaOdr`?$`rWj2$F|0SwE9bHCJ!G+eVQiSW%8Qy zZV-LHEH>irfBQ}cJhcCU8Tx-d?DG++p1($Mq^+ln$R`1-SQHFRnw0+O-+Lbs+$Y|~ z3Nr~Bae&V~f4~W4Uz(o&%$R%h=_lZTz^7{q>?nwNh z+kZ5t31bo`X~;St5cU0#QZ8qUvpdzpzMVc*$?z^=>_CL41eb;$@Om}I`-Vi7m~w7& zNt#YO0~cWV1iBMz$r^^jTlOxtXYBZO@@(xKr`?M1GXI*7FF+;iq_6^bTB%bg+|((+7oFm`~($6FNgJ&$MyP1<9!(A%T@sylBbzzdM2jsXWc@GRuA}t>uWOEjYKmyYEQtL7RPM$G%^8YgYX8CM)-rqiu(dSEKc+&hMT0`R7(X4LHrV^~#!ExredXsq`2u&h#~Ho0pqpW~ z;nfT`9RVAM5S!B0Fa5G=_9qBQCvIwz^<+9YgOY{H$WBHW)qPhl>pxP{tR(OeInq0Q zjCp}7r~3BNw}L5$P15#G$J0?;3B4N5d!v_u=oPFK{z=du?MxA9XQv9VANl4GL$}pa zd)M?`UpsGKE1oiA--P4)QLl2*)%p|dGqSE^p;ehg(duLuqq>S(`5677sCEJ}$0MEg ztvFY0$EvN5%;k2d7XJZOecHU%@Jdt0*?c*$CiBPkPJPIUU1{n$72l6UFCabe5*5x) zT41>XJ}5!hN_ImT-q~h-A?Rx~4Um0QRC4_xOVL`FQT5cbC zD`}RJn=8&Se%jBt$A;(3t>`4_K8QO_ZaK-+Nz!%p7Stjed?sKGTCWgWtq@n{{n*~r z7i%faxfNNCb@AY11z`X#O-v%+)&5=QXJ4Kbtl-B%8Tp7$$*|10f9#wTW zI~=gYZlPG1o;wNI=LE!)Z+iJOdIa`eDHiBc~Gi#IX;gH`6v zoBIoh_L9#OR;Dd0fefpNo~1bi&qg`6fYrV#+`N|FZ!6 zr!V7ElpWuZCF8P%aoJ-37}?_9Ve+(oBOOn5MgY2i`zXL^?(_&i2^qsT2Jnr^XaDI( z7-#uDMlBydHa(D0-i*E?KlXPG?JoK}&zW_e(A1m(A9uSk(Pi-(J=u7c|-_wU5`T&PFgwHCF zk7^@#=A|a++js^YEFyjIK8ewI*Ivgv^L+~P!7g1uef8n>B>p-yN`^>ReLVx;Cg^=t z9BfQ%{B$@AL zI^6YS>FXY7?zXO`Fad58V&tr#0=Eia)VdRr9Mi(PrORi!*PPcuO7bEGGf^qEK|}A< zt4)HxC9)@|Aug7xGdSd0Id;z)E-|Xn(js(K{bw2C_i29nx3-cSg2j5-x%9mi zb2PPhxcg;+bO4sZ+y2M(M5bl^HE#z_qp$XWbp?1PzuKbho>$|^jKMfQh8aS&03!Es zXI^`VKYrIram9%d-&^u`PO)^l~(trQf?hQ*p{=jQ46|mbi_!-~PvN)G%>zMJ_s-OQr((an@ zc2U>L3)1;3%j)T!H17$2K)g1O4Z=%UkOtb}#{vDPpVn7nUYNa?tby&nB~NHX4kkWg zkL4)Dhb>aD9`|1cy7+f>q<|cG@pN$rF2#F=i$Rn@<49QJ6VA-xTtAO=3;(W+tY*fI z*g+0~k;=I0gAG-W7HuI%fv&3(#Yd9vJC0|ZHLOEL2=>Nd~Fc2!XU-tIB)oO0u+ zS?pY7kcMS($$=*{EHjF2)5s_K#v)YLc`+G?V02UG$*65yuRC!@FV$29+V?5gs;8ac zsEcI47Wl3FEtR2ARIiW6?w5W|QCvp_Io%+Kq(F+w zEgi(MA%cw*m=`9NjdZ^RwDz8a6`T|rWFT)Yg=#;~4G1Iv2MXLi@$U}REa$cy2{Q0& z4T&X#3?+WpP9kT6auxUhQKA5)f~YHM549l}_cdk7U#e&w(5H~C08GN#fnJy;;$@() z3kwf4)|iUKzj!2fAhbpV3S}8x$a<3j0~rAE55QgW?R`B11u@~D!StBUmV8!wUL~s}4RYR_#k}acyRg0A zjWYaj7q|o4jmyry9t-fi>3;f7e@eLKfOvic4vKXC(@Za&%NO`2ED&z10U^784`+bb zMI-0J%y3^}9#oVTEXwQC_twBfzBBB5VIKxC?rh&iwcj5hjJ@$kZ;r(pJmd|y@B=Xp zMAD2wt6Y+fk_HxC$B+G*+h`?zNtAkR`YD+2zZPSLVk^^V?A;nmI?V_Lc5fbhEOM&r z54(K5mn^y|P-b70FM>$`@y)Swn)~xRs@hdMJwf>3Eiuf6E7K{uu3vu!XceS?2(3_C z3RQ0vVsvvHQH*hiD^T?vIUFLz4NGZ$SFYR{;=-UCjYd!kxIj~1Ww;jR5aQdBcV=kI zR4L1D+cgpVaJ?7lYak-%g4CV-m5=+m+BrV1!o@#HK0KUoERSVpUa_3A_^TwH>_t~I z%jrly&v?()0b~et$IVRYjj=Qy86;Vg`HuF?RNCSmPfu z{kk-&Z`M~`zx_AvYATz=2x^X@2+U`1#ubF&)LOa_`G?~v#4T=B0FTxB7E*Nx`pG~K zxB&9=6OWabd+=$zuUS8PDjg&JlTOcgG4lVdB9Zqd6uR-M8(-hkTzT8SaC`vX^yx@O zfPXaRPo{svj%bPsJ<6YGApCq3j!Cnr*_NGE7vt!XP|V9NU(!zXV6VML?qZECZ1w2Z zWMoc?VD0^z|!;R0E_*VSRQiucJc>6gPl=ww+$ zp9WW_J(_hr+f(@d`1!bIb>k7=bKmRviT&5RK>z>`l>xU-<1~*r%ZT%%8SlQ|3qPAB z%HJOp$p=!uZvmJPt1yo+CNi_5D7{Z=?CgyjeJ`9o2@ zs~_GB?;p~R$E$1M!PeQlBV(|h=~nPr-7&!V8a*82GPf%pH~&fUIlbGQ-uGkyn^B@4L($=2{qbF;$6TSNedVg_ zkT%ZPD+)JyX5b+7&OPbtACiHC*Gj14usy9ZaxAgmmz!Iv&oM~7gtLJ8kK9}e1J~5T zVI`jboki9t>fR4hUf>&y_T#Ad647PdCdM+|EPV_%Yx?jXTnsQKryf6GtG)cbXi}lh zwhoL<(+7uQW_Xj%xDw%Z~V8&1LnPTZn^uQtQFs+tB;@D8s?rFDykc_bH#5 z4&Hs)x+r3rbr$N4fH|F+l756&rE!{lZ@|VKXQ)li#?(6oM43K0%5okv@8HBKA0_uR z#DxCLPxCNzg$tQI1ckf=9M=!tJxgdF6s9i=Eehq2lUc;W)M*gPD7<-!R^mJ;wzu7& z&f-;BLfi-8JZ!_5H%-B;^UzWZOc9qWRaHoDJ=Fa**65aP zi)`s2mmt|+K1mE6db(#hFFL%&M}xfiq@Qf>zkH{S8OW!Auq!T0^eIT7VGv&y+g4J- zC89HGj!ZJ{l1GQp8!N{=w^kzA?;iv7lG{FSHps*zIhMSr1hdLXu{;*|zIFs4IEO-= z1e1R?5Ea*y+>_yqC~8YYve_c)1YbSZIURvH+O@5JZ0(v;uukaa!A;RkCz#1LnaMzD;EO8W*jHkg};cbipjEOX0Di)ESQ=rMhC)U zS%dA`$u@Im>@D^SrYc&LG}0lcSs&HFPr#u!7hN;`r3)&%wh)e6U34L&5h#lz%t+bD zq4Ll2fU~6-bA+hui>^+E`l&y88nGxT*e7TocoeBq^9Jx((Y{71*r6$hEi0ny;^ix6@^mzdX zqli4Xbxu<(IAG0G4M|W2GhB#PlStRSQ(eUVKjML@UF^_L?^)U z(yOaUf`Yvcx8R(G`0~8UI*)X-;XDZkXNdR9A_ujNra~g%EZwD`)LmYziNI}HeT@%y{nvLi!`bb)|jBq>hN#|K5Jz#$D zI&x>Y4^!nU&$2f|&hWP>E5MhY>VAu(vS|L00;>^jo1r5fu+Ieho(C;>;Y3*HjE9c7 zCrkH=x;FFhVGSrZ=s_&Uke0)>@~q8)6F&fft?S4i3g+ZvW(4Tg(p~{y&$$k7`zzr9 zqbiOZ=2VA*q#6p@Qxmo0h=O~wrR*RJmI+yrGgnDL+-=P;WnQQROOxuL}TksT^IwS5s(Tg`qK>bHdWHgo)Y z4vZ-6D41F0MhdAH-#`>w;OY%am*-JlYbhCZ7%1L44+ zTwZ!)K*pSRs(qfPVSY8*&I5dkE-PX$LO4@_x{bt}8Do)r$qGr=5^Amk%=>aur;roG zj!e%ceuCiVOpaIKP2)raJ&!*HeltHU+@BcwQ$)KzzQeL~E1z0TGi7TY^k=Q&uQ)nY zxn{$ZMxIPj4z#ROswa%|;rD9A;rXF@sO`9Oc>kdZp;A!ENW4K-xNKl0If$`N3F~9_ z2h9>Tk9viiGkxS4E2I6=3{rUw0_il?x*hG-kM@Zv@#=v)*PTExBQO_(YNk?>X&jEV5ZU;ycjMJ+ePwsY#ucyP zk;kRDM+^^VDS@%9_!%uY1ql4ZZ%|O8Dv^sc3cI46_>7098`UDs_GsNfj5ZAd2gVmO zlPd5e6yhYPXkrD`CH(phXJa|>ivdnt<|Is0Oo7BqNU!|Q^3p(0u`~4@6wZRX+6NT` zxt_UB63X(1bS7j~3DS=9h&*{W;xoRS8>|rC{}VG9hWvQU8J67!fgBH5Tf};D5nz0) z=|$Q(n~XBTj*gV19gu@vESMIMiQhM=HEBIfqNzk^4<;3XD9%U}eOytyaU(Q8BRxd~ zNs<1Qnd1zdkn@P+G(jXt-+7WD(igw7qO1E|Rp&P|*JahX^lZ>LaVz9U@Xn_qr(x$N zo`gtuQVjo?Jgs??QmpqrBb7glBxqp=JyX{)*1Y4jSrzzg=4a4P1^JTwF`&0^n{;o& z*keU!V$*n8S963lUlA`yQ%u}k;Hr?olksZt-n>-how)<4&m(TGkyoA5h*Sz32tD$M z1XNF-&dq(IYO#>%ivx;`bn0P8XB=mh2T6yAuo4XMbgaz{vwe{Y)6VY=(?EJ&FQ(*~-r<@=+M-H@v4La>id6!*Z zo9YpwEKTO}pn^;-s47Pl?y@sR6D=$@1d!sMti|@jr*Q+1Mc&AN_-rvXD$_`+qS>Sf zJ4DRuHr{Rm2~^cUogCun!3JnT&Iqza;PEec5LPZVIN|&aRMt<+CVAY+*0W6U7>y86 zAStuwj)J~ovYMT+b4tj}r);wNSWqxSgMZH~S_ZreNB^~2W%TC~oZ3$t{=i|t z59#B^DhBrSf^uD6IyJR-4%2p6Vkm1}p{0%lph9EDP-CK~)b&omJ8Rz>(Q6wC>{E(5 zWg9C!B+wx6DT0VAldwttAw^{EKrjAFt+P9O^iVf)qKlXQco~S8ZpaH!LT+C|2X?5- ziq*0bi!9FdC$m8(S@V2vChEuo#$v`P33)0qg=l<7pCHC*$O6X* zKbA)WG1?Z@U}74oY4E$FQLaJ8{?QxDK3j(w`Mi{i}bzu;7o}K7^YoA`(!C7aitGnNFL!_px#(nWOWvmW1 zK{rl;hDrpt%r%%o5`rT|I_dOxm1{O4_X=ZGU1cr5+S=6~NoxE`b|w`mL}m<%Fg!rZ zAmO~Z1r6@$Y))_u|aBJ(jtYzPhx1-%7Mz7lL@&Xfpo(U}!;-F-eT zjFo_8+xvh~Hi9=jODf$HITGw2SJl&QH#=ru%NnTv`_|T}(KaS_ zl?7oPnMQ@`VaVEFx$5KyKn)i>&N0b$nd_NoSXZ({QJ`ZLo#@;pG%j^b!?sjYH;SCI zw97)`;}(DjhLYwy*{6$ zed5HA0YWc+`#E~M1#(WD?P7r;Qf7i1{_6!HV;evstuO^K$+V?AQ`(~$^qz9S6Z1&i z_?G^grkQey`pFk3j#*KPoss#%M0DMvA>E>#Mq{kaml?en%md!+Gx}oMMc>DJhly)~ z8HC913m*Jqa6GQp$)Z03H(X-7mR!NV7Ti>KSWPj1T4X^d+D0q5`g(A}<>PvHSoPwC zELch#8+cA*FKgsqiaASFyT)3YS#f+?lsv+Uf|;8`VRVURA&IqJ77>uoEQfjcbJ-wcm=li^YfBgXc0Pe;G zLi+vhC;&1CXV>xqU;EX!es=-@p*^3YSOUO7|Mv-nKQ`b%fMJi<`^6pbrQd%E|MRU5 z_^$T{6cc>kr`vx`1HNy*1%|8yzR%yo0Z-BW?>nF`H9T3k-;bB8e==Rn`}Z{F0dVB< zsz?4YNz3;DrZ{?lOgf-+8nAfcfAP?7@RR=7jlq$O`IZh{p+At1IQG64$~Pu^jg<6R@#jYFEAdh) zoxCOd%4%aPWx%I}nuM9hB&bdSd6+u>vt`uJ9xndMAkIc$s-Wv&madG%vU#$G?`+;_ zCdtCgm8>9I938L>d2(7zz3)`pUvMErEpfm?(C4@(mC3u)lcxW@Dc$dmBvGsOD~w}2 z)^{%K?3{~TPT~8YW_uCRU%lB5tn76!cobggr^(BmHYi=2DQ<{X@vwH8lj;|B4S_+= zs>-cLTwH9aDzpm&TFQD82Nv7tiarW7Y@r&l9s8z$YS>)qu5g15^~}4)D_~E*(bfmQ z5aW2pc$?*d;m#QK>WpeGP`=9wfZ^s=_+cR`=62c4qi95oExG1*9 zAqyCZ!NT^ng66}%smXZ<2in;&2Nu)JmGyN0XC{QQN!fps%sh?pi8>JP*IX&Q<4G3u z5Uq+@*b#KJhGa0_TyI-Vy?m<}J@Q@!k-VAk*ZPH=KP~ExXo5<4AJ8hexcmGLmm`CP zuUuMlyw?kpo0w15Lub6k9lIdw%c_@Jdr2Pk%a1LG24Tm%6dw4YYnPCNnwF_}-kyOyhA_zW;EH zF7IEzPlQAN7e$YFKV}mZTCMr1e4tqzh4Ihy9!8EG+DD!OC!#kwG_3!G_$QlfM|bNh zTeEob0_$QL|I6X4R9bbOJbs^ojR3>g>+K9qc`s(HW87-t0dWHC?c6&6m`wpaB=BHI zvxNa-&EYoL;hT9I-pShwR)Ob}IR?^E2@D?Cp-3o5E1Cuf*vHKhMGuabp0t$xt_Zoy z6-Vu_=)J89;jTbGH6Ufe#MPvUZNg+aagussn=oHZH};gg(GnF351dkbSutxc#w;dA z?Nmhx&Jk16R0K=xDi&3RaDP=S%DXCdg_(XWtZ9ehjsfzznYje$Z~ViG+q&BW zyG?1es`>K^tW;l5q1N;2NioD%JuDgq=FK%t$HW9~d6vg#dVrRckVfjD7YkwXq~&|0 z%b;0#XzK%)z%6G@Q5oUF;ED@%Zn8*BgJJxjeUhj$NiV_jXR?^QPvH zocBXbnsM7B7iYx$pc*}!b_ReW&p?h^^O`3-pcmKrpTG@dditw-@YR-#Oy+dP@r)u- zY;0zPPUH-%bZ(01X?pO=sy_U`e$MI*f2lH2bAV%vu@yiy7ZLao`u-c2bhtafv#owC zgOw|CcvN($!^hg2f&9FZ7maso?9lq+Ut@kq?iJmV#TY^8p!&7N7+|2V(|rgsmnQdQ zkTdOs*CeG%$D&sHryn=A9-S|MecgYsaUVb;H4c#A($fdzmx7|!6>oMkYff9G6HxtG zISF^_ojQ{^oCCTzkbbWI_awqq@A1tVFsp~_yI&1dFf~bYeMthv#fPG)|FW1l#)4#D zW!_xw(YBy1k`TETZ*@!C2%$cU%N~*@MpCjlcx^6?R-aTo?-E7*_{~*Sqbi4$9SCA# zYNE+Xyr|Prz|w8LhEGn8nmG4gYJiRoUpAkuC_@I&4dIg$3qBl9672NI!o*3SuV=^P zhj?Bd)j~SP_Fw*Nou>{nU&|@jHyKsO#$pCUKc?U;*?99&&5wa&`rN$COaggm8a;Em zzOdFer`1E)npPD(IjNO1FtZplWizIHjBGJfe(`kJxgzk)gvl9mC2x69Htt2=W*q{B zl*|!Tk0_k^^Jppzdg{EjxVG{y>Q^#GIg~+;qrRkf%Ea2O1~|>5&x5f> z@3>-*T&xXjvzp$`C@ie~DA4IbzQ9gFZ3t-I@HPr^ENKgfh+|&}b)^?a2Qkn%8;LNJ z7!3VXUnE6?uRq2>2>TAB7W%{B3i0Q&XgbGoif3|-VLYQwH>k56&ib4G_&1VBveA-t zx&N>bjt<)X^eB}qgiKgYrg&!|BYV(kI)%SG;EQNK7F9eF+s{N7;V~%fuK6%C6@?~d z$olhHN$N*DfB>d?Wn(U)nP+1rEW2_d%3m-3xlA5YUj3t3YslA`^J~KTOvR$B#??5^ z)iDqrWorzP!1EDrg;Nw05gDrtJ>Xln>6g`rS4kkIm7R~nt}M7Qy+L8m1zGrr{ZlSTe_+lHPV9Fvr)-dQO3K)lH5XtpSW%vg zkIi(c*Sg>4ce-WG#;J@lQPaZ!7?%KBi zd~^4ojR2O|8%25Se$s{SE=~t4JLQOqmB4+KO;qB`m0eU~o6)kr>_A)da>$05{Pu1S z(zmEgLy9jqrTSt~7H%i@p83fT3q2NvcTmmq8hTq5I<(0r|G}<#N1drs#H(9QL(#2K zTym*~;fzPb4|!4xBgsKr@=Zr9ZjXFdov|iLDveLGF(sKfXIlBGqN7l&e9mI|K`z7Z4le(q3SynF+yRoi`VTiW_EqNCfRH^+#c*TZ z0}*FL$ULopY`8#+&STj&M+>MOJQF_82V6cXG%@-;Kz#`1fD-hBBF1dQ%Csmc(QGJy z_3S}}P8B+971{OK=ChPK?V6;*%(qUPCE&)n(FR(sE%ID54uog?Y1?YK?203Ll}=%a z&jy`nnhKMJ>(<#-DE3_0KoG$P$~Yhl3w|PEsjom%@tgRrY@H8@WI6soUv+Q732MKH z!E*5F4ho9tYBp6H7kK^Sp!uC&d-@<*sN0c5<{7P9a8DZyk9DI!or@9(#(mW*41=ef z57;+YBf-Q{3#>D2twr$&XGO=yj_QbYr+qP{d@11*p!2Q~Fs=B&PS6AyNY&y~v8%4X2)&a45^;T4?k1)p^KzE=ngb9!7GEaXr5eGj3(E>1 z%)wrD8Bk2JC7o$50-^ARH_4RF&(oO6ZAVc#1iGCMP#$-Y1(0XD+yi1AX_^5w6v)um zi&npY3_bv4aA}$W?CzJEpKEzyIZR~ol$%aZvs|WWpQr6HQ%J*Ir(5$9-7kEr(Ge0x zES@$%3bC%2So}HB(UqGMuM29Vre^SuL!#47Vm--2${^%C?k#*8l;UGX#_YmsH^t2> z;1(puG>AjTLqfESK>=U_xFFhA=5f^_>%6RK^Rm-uSy|f6cvB`b#;G_)sP_{MKtQTX zjc3WksiQ7SlxLK1x~14=A{Fn(jv!}woBIs32=Cj0T{WC5aezSkzn1s<8K}BHafP_L zU#oOKRv3WhD8R^Sy58TaB*wDqW8i#%^=e?Z&X%^+BiW{~N9q z_FjF5&!-Ew!WeQv6x3l4(XXy)YJscOsz!aA)Qx+vlgsr%9szD@i|^xs4)TnIka&H^ z%icmnX$RhXSvb&b;*@atBfB00N%TS$wbUw4K3(oTj%c6cp%PqLz10h`WNfm!`(|$r zx!UavuXPoJ2Ld0k74OF!_E+d%Atc=`ybHb_1VS#jZ$7PO_y)6iffiePH%{%xd%ms{ zzR}(jU=gy!fbZiaNoP*>hkib?5Sbq>KHxZtOa@{>NCRB)nU~*Ram5$l%+Q4oH>fEz z@6|Y0k+MR5xN_h2LE8pKocCOLHbpPKDu8kO6|D1fq+10oHln4PwCXUwolCRB?eWq@ z!}q>Uw{&hz3R)7;M)Gj(4Wv_4n&c_7fo1Zyce+nfRodMacplQ9Qp<2HtKU0)l`Fhn zKriaH6FhixzLr57*!y=d9hbz?M1McUoXjg`l_3nL9JgZZ!fSFu%JZ-uj1>>3@6@|xI`%^SD zg)1~FD3)N3;$ozz1t_7PR{M3U0v2=G- zXp98?D(ZtH8%Ck*2EU8VW{&sT~y2@@g0L*WtytLcvuU@}krkQ_{`0K`X zrCE8BeeVNr^Y%Fx2FT5-2UHfu(&8k3Cr;JoO=^*-YJMJcjhDe`B&$>$kRsC09y?yF z+-VEwxn|cWkBE`Ao>Z%t<+SIdl*dl!wB+84fSb}t zVCmFJ!RFvG^FRR`TAlc_lR_f9naB~Ow73aUGHeHx!CD8_L}!*+|!60r^Lp<7XAv&WGH^09?>m_SLANYT%TpbP?>^*YaBB? zm}HpEYuI9fLrqYpu)@sGs>&yqU{6%z# zAC{}Pkf~oTu_26|{=mSn#|D-YvM^2ZaFiq==p~DqAp|@Udh-|Z+C*9gZ4D4{@>+cI z9ItqVF4*_eJXjD~45OvEOhC5-^Nrc)=jLy;ZT|S<-qweGjA#PUIz_7_tK4c1<95UF zh^ACU(mXY`cTjhGHtv4-cU`ZEdmRSLWi%j_`NqJjFbi*-l&^bLGew-xz@$Jwsgv!D#H7hF~=Ta5`dm<}X%C%$z$}MNO`3!N`MH~69 zW7r@Sj3VRo^YM0W)TbX(bD7byuu6;tiN=6tVldJ*aDMo;u)cl~y92KyG9v0MNRfif zm^y^nAOtKmvi7%oGjzeaPn5q`p&sId*a7k+W*ME-Wo8JAP$bnkk!Rm`xWf|SIlvjc zJzP43_TO=sVFU&q+7E_s^v~k%h1b~ll8#HyMj<~*D0;YIsqV%}kP{&rECQC+#Z;JI z`b1-4JSFocgJ$0rM;FS%HAUGH+rfI~NYYOwn>+(ufixYsAi^5*vI73Fu2pszZSk;^ z?${2az(fr@ppa}r0q7S|7?Be7iDr;#JAC+gLnZeRLQ@zh=X8NGp4ggh>coZ=y2ST|5!A9HsOxx&y@WP#UoJW3>{iZn=Z4yh-3xI5B3 zycf$}RGGc1~d?vNNZ)FNb zk4u3FLMkH78@R|8Lg*;gzelLw8DTH;5p2AG6gwVoFLN^dS5}#DlU|%tv*>L^(Yz+U z5R|T2h&U&Iti0G@W~c%GLyX^9j2|w>H$DE70%r^zfmF_H^q&ShU1lF#h?t$zLL9ix zh^qq*rdcxE-u@_k3V9YWDa{$AeZ7CaU_yrSj}Wh=F(Z!bcG4IS1qu5(VQfn|8Nny( z``Yr+VI3Jk-hlj}DbD)p$)Ss=Z8l49Sd#4O`CAdhDa<{J8Yq`?&> zOcWZki{m17B%pYZ%^{t|NXg||Pd(U(_*>E=yb%kThKcA5^ATnnNir4}{^0?^A^NkG zB(t`TopyEk+-@E`&gilh+;e$DSn}jcUd3NMAg9tPPUj1b8NI5bC-%w?PnY0@qD@bZ z!m*M}@mfok@ZP;JL5a$M;u~0&{KBFsMK68gxxCO+JFcE)^_=sNTKfd%x!r3RNodhB zrwU5<_&k2c6@KapwhBAapZlIR%ET$>&^5~QZrc9il!&5OZ7kW-F0bg!pW?2GSFm}$- zJPw7A_AU49xj54aI5_R>f>uwOPAAdLs2YxuG0=wkV_Os-M|j{J=mjM&*5ghvx0K=e z3~S73u@*B~_WZYpzB~KAd_&(|Q&=m{X?bQLr8D|v#_a^Hht=e5A-caS7Zia8NST2_ zmJQU#(~AOQsW9)tVybMZLeqR1yPSvbm}o+MA@LVE(6Htmx}7imXP!}O6i;NG$RPi6 zLY)Rnl6m~$FrUCNeU}8gi1C?}%y=yfUxzTm5+^f-F=b#UE9_#}D8_BL$7rm>LL;Jy zYs}*5nt3_FDAmA8G@dVzh%miNh1EAhiYIO`apYn&(zLt&Wcv9Pd@6az#46NpTA~px zPMAm5IH$6F%221)P)S`cu{phX<%H+b)5S;dXJ0Oa$4Hl|oLB%{(*Gg)Z-NXH4o}<| ztrKr&DoD^WHf6WVO0twEzpGPK zxbU6b!>o2XQf1xCLo#sl5_%_IK|=A0U>9=2_30uKXs73)#Y>`tW%ekjgdD~6n zPmNybL-)NWpUmmXaHvD4(S(phB<|%pgxE=7heKC_n0_T4R+RIW&u9&d0)Hi4W%8vM-maeSI9ZXmql^S5&7b@NO;b}|vM@>&Eh9~e7*zcF4QJ(AjLY%p zi>!N;u7IWBAE-!Uz|(+BITArf!F2E3!Qqyt9G5($FN}5W83!{-mS~tQD&F7C1l_hm zlQrc&gWSy1Jz#mM=Gmq!oB1#u2=7zt8wKY1|=2q4ItK1YR zrAf&CKx@Uq)9_41(@Gv`3oDu$wKwR=NfDpBho9R-fQSiZPJnDCe~1=rvdV-^SoUNA z(drs538VIVKXui%?bwB5>)``;Qme;|bn$DryGzfONZEcw0W|qnMAcClg@o);Aeb9r z_#|!zl$EIB2i3Jt%FB-~zV=hEKKY@;V?0^pdEhJOUsHn|av`kWMg?po#nPyqbVohq zvAa9QVL$9tv>zY4BDggldACkqp9Fp$-k3gejhvjYmT7383{s1COJ~$91sTJVvV~sm znI#4DkNa`MZY~XfMbpi5EYJ9VK4*tlmzn(k0i7c#!}4 zuoLDC#x~9)2P_`Dfu;0C#`GBO`Zhmx@uMO|+=^A!*sZqRsZ_0XEy z>$`zA?^~BQsqFY-(iRE*917E7f4~#m+lj+YC!BnSJ%~jstZ2uplOnpIPAfg!y`S%| zdQn}A`5d1TkkgkN7>U&@Q9lXesjsi|dioYvDL~u~Rb$Tgawn_sdEaaKQJ^oB_)&A+ z%8u{W!t}cN;B{-8b?|v)l%GJ_ZhaNSCv{BqXrIaVj=#ms9@}NO0QLstCuLA#db^FA zIS@(fisE0DqUb3VaTHUN<0g7L8{SX))O!f4cceFiYCXRWdn}0%*Xq%RNy?!UWoOvcbkBX^22c;R~FRA%2|E zJR!|*C2^U5xb1#lRv?F}LTgtbuc(t&sT>cJ8>Ug2i1wM0`$LQo^o6m$8PFQE?Nye) zRQmWE&%k8uY(4mv&6B2)50vN=G_Ic0-QCsN1%C~$zS8@-gBGLSs&@%_u;0Oa=hbl3 z6p*eg=_1`~sNrF8)B0}ncP*4QZ>0azABPQ_lJegZ15C5nReV|!+uR2$4`wH_I*31^ z&h_2Cx6yAxZ_40xCsqawTpD^rUpZ-#VxXQI<}6Js8x?lH-w0;cKN|)~Jz>fetO_j1 z1f!)miv>ebBzHjg;*G7eudh`;%93{`F(E z9Y@&K12{w%&AryFD;Fwp1zh3AsFg|*g^FJ`i9{VXvo%2d6vlx+tyrJiJRJoe?t2Q8 z?x(pIbeOm(S=FEec-Q)j)ey6O2XOZrKf8x-03<*)!A0fH&G9ZS;)E{`#d?Xm0^5DQ ziM}%r#Zsud{cQo4v^NE63Wk1{@BBRx74e;=N-yDYYb^Zc>Wgu6(pI76Id3>~{O9t- zM%*SW3ts!Fy9t78|A90#vixcShn4?Wj78WlsX&kjCb9)-+MX>d?|z{u60cMN2YH(6 z@jmE;3#pVRRM8jQo%n;J{g~$kQhoQP$bvD_U0^`4jR1^yFjNYQEV2l=LLxat`Ev|Z zyfg1Wnf2}*{KjlMU0!W=6P!wC!GK}VC@nnxD!V(6a?ozMsqMB{reLct0RHGL`%i5x|3@wMs`h{mZG5QlW1 zTpEES32{TF4ob_W@PKP4r4_fZG?C;-H#fYna-afg3S6YB!I}78mnX$6C4#pj zssMQ)VIhUq&ct+BBCA3KSW4Bb$#Z2BD6$s|WD{M`p@+cNjFPUgJhEK{q0L(mb2-no zHt`mbDE37H?wi3Y2cor|@;T_#cXC5?Zujf0ZSG$rJ)dI6yCP{y4Mv>w5BRcC4pRd% zx%f_(<*kXckK%!t%R-fJkK+RNUKe!tFx%dqVrFk?xH0lGrQxS-Y=LSWx9MthRg%fa*_)zrmfF02)fKjQ3}PS$aF;&KKv_mDUI+N> zpx5~>7|sKqaFJHaO({gSf8Nj~yb(5f2_L0s+#`GvVGj}*LNmsZ}bu`s@Kp0{`- z$%Es?*^Vdch?9AQ6^@MjtOzSX#GJwiE1_9HUlN4c?%9K-820Q|anLY=XwY4jDjY^z zgdk@aRI+eho!t(hZ5dA64X=Gc!A|NNM&8trN6gc_OQ-xvSZV#t4X?>xG(`vsI%yP;==1omK5!=ik^rk^E72J3*4ros3kJ$R^!qQZ&~OHru9f&^ojG z+;%lz1K<;|vF=i~ux`UKQU4^bWn2UNJ#T9PymFv_^1sZ5UY;9OEw)^`hG!pZ?dCOv zfnj#4em(J$Y<~3J{9zUw!Hw?_pj2j|DK{tyWgQjjkGJe{I(-J#$elU`q{orbKd(u3pA)7jx&{^nDk=JBNtSkLCDr6+L7u(Fiaqh@r4Lh3V= z%UbT&O7EvaC%^BXhMVNtRIAp~ugP7&;k?mf*!z|5#`lvxzn{nZ=efsBj z>1+?-kKB<57KN{G;U$*$&(VipJwP8{&blPYP`3ynh3Xyh;;5|R+@0(Efu#cE`~E#V z@74Wh@!{4R>V)YBWhw4s*X{kw;l4NRT6M^@lf>ogtC%OSpKUX))o@^ZSn%2IuGL@w zdW)#S9*D=sAiWN@sZ$i1_0iTQkUaHrFN+P+_l#-JKRb*ux0V&LA9paVI&^Rc3{JoL z9%lULDBQs{iK#ZKl%sZm>SK=V58U02^klVdFOyrc>H^d@X9gcWekW9Vd@@paGPG~n z7hefQ8w$#wQ)49Kl0(Km4$lC%@wqnLr)kWPv}r_&+0LgK_S^7RYG63YdoPjqR$4U4 z^PF?v&TvY}$X{N@6ro9@6rrt@gL-Je4jS5lgw{&cTUiy*s`M8Yt(_)Kx^T1xpz1dPz3(m0&zI%MyT58$Z}X9C zXpWgPbs9wGC;8jaBA>L}MUbu>om#C%mW^@Cp=pE(e<|+-hd0FYjIyiIi6~9Qx)gG8+Ftr6W?X!5dz1;_xb>-ak6NO+ACEpS_5Ir zPp@o5;%1{pwFP;s#2(XJmc#uwGniYNiP9TpqNFeNc=8Id8%!}C^f3wB>%pFBROvD|d?WI( zy&(bGwKK?;cB6+Tm_T=khR6y70rM;re!D*GT#VYaLL)Rj%3ukLhNzL+xdvVJw&>Ne zq4?UByf6Jq0_%e&3a8Y)N=IQFmD)1Vuz`%@U)Kwu_|w#fKMIOR(F(BRbH-;ts8@(y zC~(v9@+de$hUTqAzcoqn&;dawTvLu}iKUYQ;+sBqL5;!g=(1g(Kn7eJUarsn?@eX= zcgP-6G<~svwA?q&MmSE|xa?cic-mIwa(jV|La@|c+FR3kHO5{j_{n2O%@^yy!j)ws z+PM&RC32A2NLu?@Vz|}~v1VrL0K}76QIFu(yoyt(RZ&hFv|~e*RJCLqJh(o`79*6k zO#23M9B&4i^^+!6yL3U|{AEogMrTdmL;JO?{L=_W6no_KkCp!Hkk2 znbjz%%Oiq&50!yb;%YEl82S);%$m5G%HbnW)*vEXy4=VAE`D4+G>HU{cAt&^aA~3O z&p=Iz2DC_#{af{Fn4DwEKlkvjZ*;fr`PduyC2Bd@j7Pt75WM?MO)2n#To^@MBiL;L z0*VuzMSG1FY`B4UA@gQUjOk=J%x`?N&&+?QPu+W_t97mDhMw{7JyLQ}%CR44qrDF( zYeJ)h(^Q2Yx7pTZVh!!Q*Z$50fr7JXFXj+Su7CiqU)k63zLhb za(dTJm29FHd@&!b4H3!XNF7yBc~$LiYo&|wn&s@~U44wlRoY~G#z1*kJp8xwH;eU8 z?Ml|_47plWplk~dPv>u3)eX{=B=p7ijjOwqG3q>ZE1>D_e_kmA6bs!KpuP=_{Z$-q4=b&~@I2hyLrbqoM{#Jqk7i7(a zoR0maPp|x3BRw%hyQ0xf^mf{e;Vl7rc=I>Dox>UH*}4d~V7{~H^-Q8@m_@M@?1PLb zvq29E8ET6#agR=-6t~mRZhj~bgXjx_KD0k@Ihy2p0`|nSV}nGHHeD*S7N{kDI*Tn5 z&$O73%TN|yu7?m?WvHYJ+%46luox{l&GU`t#6|bZ zetk|0Y^NdPuRGdfr$r`C_X;#2p}`&8dlpQKchO|Pmt#L*g0#&4;kJK@TCwvyi$_(2 zfURwuY&a(o2YS1W{Yz>OoaieI=FsRxPvu}0>Vtb%n!HIVQOWEw@|yFAHP8aNIckm+ z*@6`*n4_|~Gk#aoH+2LCT+(vDUE%yoP2uy(hcTO{XZ<&N7^PIAyYBdChGIJHXP=$b z>3i~U$g?W5^SVGU<_p;zTok=?Jcku~-8Us7eJML*mrh|=&}t0npUeEMoncCJ*+OyL00 zI9dZpt6GC{&0<_-qjCqZxRyx|4>BRVOjH`EWbJwM;z1T~Hcwb?3R(SlYu|X24{G+b ztu8elB4dhaMXZRN`bE6l@;Dy6hCW+dAkJ=RhbqpOE#x-c;ca-}1N>U-v;7J|n-XlZ<59X|ujrdxlFn`( z&m3EZE0$+xP^0^kDjYa%N%L)kHCbJp(6gc4$g~wo$Rv}-We5mamr$qEI;TaF+E4g+ z?CrCdW--pSzMDo~>;^f4Z2HQ=S~)eOlp-6Ru8{3~n?hh`Yv%!vx$6cu3P?Qs8r&wY zCda+f<^)G~-}maTFK_RUJpJA-1f%X>4@d&BWLVMkaeC1SjY_}z7Sh0elRMzK{x0hu zgC4IEq?675mBW-OC8-a=fODxqm=k*FY?2pDiknjx-Ic|yb$RK5*I08W3FN3$2!e+0 zo}`fkd^O<;4&<~wWo7ZC{?$ERz}Xqn3n}G6RPI)l`np3{GtMpvnx-*UE$$Rk_RDM1 z6dU_`825{|{(OyD=1buX--I8DVI>#^@iQf75vyj`7-bcsxTQPP&db3gwPdw+6 zOTK%BFw6WXQ-V<`14U=E)~ULXl&7gk#r-|x;NuSiY~vdG_(%*ll!{LssvZ(uq7*Z}i#(p*1f_HHfOjy!m z3DanjbTNP8Dv`)>xb-uH7pe!%9qDwF+J1}{ZO~Lmy{min(9!C;4fifGya(qbYMAej&pG&@W1~& z$`b5QLrLq&KxcStV;e9eh{A>QHVr?gER|&lEdy_v^&w*99hfuS1)O4rhP-I#E9?UU zAMgVMBOL0GuD8Js)o@2itc)tnd@6ETG1TCVX5rO{rP{SMc+Q>f_F-P)h^qw2__YEp z3xuU|p zJZ^)DJj44vQ_&AEG{AAsNs@i47lkDgRAK@1Wbbjuv;=y=wbo*k^JhzsTyPvnOHU!P zy)is+JBiUh_)Y~$urg2}92_x0J|ktUXy8-k*1xCH%HdBN!&{srXh1k7QZye>Js3Ig zEu)lrNBPfY!tuEvQFsD9KC?$~e#olO%T-dck6UpP`6(`CU*sl^o_ z_a-2*ZdanhcqWTtey-b;j+<3RMR*9_#gJ;%);7^)7>PvfndT=JsJ^)jT?S%kl?=IuE!q|!FH5!7w2iu}wOe_7}ft~n%mj}@pV8zhf22UjW>cy@s zRaHqqV+rM?b@5cDt%y7*hxc_3P$5r7v|1~xh5qPwl^IpCKSnCV8H};4W8Xvk${3M2 z@(S*dgA^s#lQv$MQ8i8RuKP=;S~Q{6?VzJF#LA36u8?F`+|GU_8^7rV#EnQ&H^P8IuK_lmt{7Ln54+-;F7#_+t+`%y(fM+4SgU8P z=tw5f;rt0T+6%OKInPUUPP__{Wu5H-;ubU}g5U)Y%8j z{A|Q<>go=Yr-|q3{k?d}o@p|tZzROSkQ$YyozX0Zb!~w1U z3gz)nzb~yH*NY^P?HeHErgJwSL**Ye$X~e;^q8L)pl(3>s;@gg1Zi$oNeG0=e@thC z5VyYv|F%O~u-@l{)34?9ZuZWW**VoX++nPyR-1D|pw>Vi(#v7Ub>l4ZSP|3!4|AhD z4LFLs7gKO@k7>p)~nnbb*shDLS zszp;QtT8oYuAL2CA-S6nW=BC^Sdsg_^fW2uneC+Xp1{(3=;hDR=b41t(FOz_IgpK7 zEF(@>VjZM;87u}ah$D_1mf}yP3B9IdhC~cQ(`I#yLa10~-^*MMlvWF?a5k`gDbPk+ z1|v}N$xJZ5 z$w{tm=^ggILp;_2hrgmX80me@<-O*Sp_fqA-Sn92`>pr)^vP$!I5;hRcijd{V<4b~ zS$M43_!x=Q{8A$&zhd^ETXAeXu#HolTpo;ep3S0?;@DCA5>MQW7wIQ6w>erWdB|#FeoNZk z^MSO+bl}E@;X=wqj)lTAi;y!+U~Ow(SV0I>zNzKuAU+UU^8G!!l92^>Kw?fdJo#^# z&@NG{`Bx6=s`B{tPX+EH@Q{K8nb~#rmD{$^pQ*6NME*p$6oak6XH*Y~G!KQ(L0k51 zw)~off&ndGb)zN7ML*DS+I`9Dmmy!bvBSWs#Aor5P^LcN%I2>uZ?@m-#=yFtuCVt< zW;AsL{aw`bA5Xkl@?@P?xdGmdu7FBZtAcPpjAa(of!%)$bM2Idg4-zEp z0?mF?b~hKlV8YeGv+Q_22o4+nTPSVrV?B+VQ z%=8M@yrg{b;|Q@#0TSxzzQzFEqo;9M04v|#FP*Eu7m)zp6M_$|?}yt>PCmAPPfot1 zf4w{Zw*&f@AU?;?**3j@)zkGFNrZWwTE@+%6pY>0wEMtQ$MU56W!=h&n!2$HbWxrF zffqh&=SgrS8~DpEQq{$}SE8T>7B%+nlXl4tfvx8Ewl~=w|88DhZjYbW&)22$pSaN> ztA;ov-ennG2<6g>g0jhp)Dsr?mrOlCbFo3_W$%l3BEcoV%loJ8(rJaxcS?zdl&%^Kx%Oenx zdtB>LKSNG96O^G9(`S6*6Wf6U(wqbZn=z`FsaAM%&XpoT>g2x|P>k6i>h*5%Mi2iv zsDX=~jpudqV@pG+2EJ|u^<~_QI;1N3LI<3-6S_u{vA-yOowr8>h3mf=;RG8~TTq+u zRcw3_N~WT8%}LH zO(SjNBz6sU22n(rhi-kmW~>s~nlo>;xkdhXKBfKZft{?&LKm!`k>N;XW9@7y7;$h;;5CXF)?d#OE#7OO}Ow_#&c@ZAAu=G09iei zL7qZNCXv7sPH!BDWewC+N3(?}YyI-6x_67Dr~4zxqdaHf!Jh6_{JvHECYKPkwTF(S z994A_W+q#FxdAq8mPRX$BY*E~pCIur{1nlWYKZiYBL=~agMEdhwCmIUzYa#xy6Zw! znla(Zi`b=pC`lv19A33DWpe6oxIE7&&z1@&(dWm>9NGqP77FFFj(_b8N_6u^NxUVx z^ls5}Cu7VcKPmZOuOh)P%Mv1)~&KVPPTtT<%v;qVxBT|qN0mWupOt3XCF!l{s zKZDeDCEG@w1>3*%`VDq8q@yk5OElzd<8z}qmzNK$OqmH+Y$)R#}>D+qEuWtJJ`+Noj7F+wHxHDNH zxHgwmbH+8KJLeUtW^{4(gzhc4Bdq|`$~ZA?!*=aS!9IhVxm!X(WFbO|WG7+mXQ?^L ziW%X;nEeU3;{A5pYDsu)1i(0NiYW~qgAl%vYFgrQuD<2uOge2@)p~e%Y9J?{-O#Dh zsi$6@0=~^4NYbbk^E#Wequ5=*6W_A23?TZvd20HvebUSCqA^66;&TtUq6+Ir8(EkR zRmcMf>^OwzOT%f@L=_?Qj1gC4Tk?)|Up`_03#`$FE64e=7)!se@3~R3J-s=IKwxXq8bJtWu_(+#=?JQ!T6|kDoJx)wx+a{L)MkE9 zVy@OPj5>xE(-VZcLvnIU#G|ZP?{HzFI1a(>mq1KVI`4_l8I(j1^A*2vGjY z1LX^n_92+Nl)T>lcu6ACGoG~nN@ z|Mh25z zP0TFuaV<^JVuXp2-5F`y^FuD5M?9qUX}+^P&OLVL{BSa@R_%kr1%{hB#x7u2SNvCS9_XewO)zfNKjuKGM+T_r6hVtJ&Y<@aj7@bHrP1f zOE!b!0fRkuTFh_46Z+2yukRX7z^JEfZ0wVaJl#$f@~$_mUGDPi&E~t$M%y$1^mVBC zIZx*wNfp4~e+vfz0D>|2l=t-=*n4Hh!Nogf-lBoSWpjsOWF=xW#kHVEBRe6IFVqmx z5iw*y2&8#R4%{%08V~+HV7aEtnDnF-pEEi5B#I+_ZJtTSii^Re?#jfzl+m-{q$ZWu{$#)1Hn-RVte*qqr+rgFX0Ri&IiQ_h!={J1O6&ubLPYf^ei$TqbT*^f^fYcwaJmr`2-3R0yyl&nB z>^a*6KDWd=dyn8iETlucCZ`~IQK=a z7tPJ_NNI1LR1wD^JYIlwgm)SG`Lhoen(z_e@_cX4hRx=6d%QfNVAN8$$-|t{7E+HP zKGW{fQOkCW^3|M_(L>Uk4s;H%0qA>idGHh)*SwWZN>y9GTR&trTeofV(<82@*7>BP zOcOSgeY=>JavlSInqfsy& z!dtGBv*6#9uaM68 z_R@^&$~CS)9>qnZY9xmQH4?=M!d;d0c08Kl5Fu zAjSs;{iDZ6J$bM#OVOq#efUwcpFek;H90HvVo6~|dzkjJExkU^)gx_pIdf2<&&$64 zoO4Zz;bG_5PSCEd1})Yq5rWsHW7N)Al&7igf zp#i%ZUa=*OmzN}6^6$gObb@>VGv`TwjPfi_luZ6;2}!b&DbHj9JawZK69+m`BQ(De z{yV1y%5~|68h(7!gcu^L?H|h z;q2IP&+`kubf_&jk7@U_IFk1CSB6L2g)R`tZk!8=GT)34R;at{(W8pJggaSE790HF zxa?M-(vYCV3BB@Ut=j?FHLACa??Of>jxmKxDH}5I4Vk)9RyYu(kpHCN3z0rAi8&bC zG+3r<@U-w0C7*;^WaocVK()u;&gix~_@s>a1^w3Rk`UanE&li;LJ+5{b3nDduvs6K*+-D9$|V!S z(&40b$kO(D?%Ri5W0GX>6MNB2JTWZ(Te_CfQGH^Szo7E$FrJrDYjXmTP;ZaSLjr>=J|3z z(F^?zbh4RXQ;nOGzmrfzN)wS8D2b3m)A?kP}lBSdq9<4(Uq)lr!>ych!y26U58NTiE2iusc#(vPgcMnwL-+DML=|6~wj zTne$>u;0X5@-eaSq&WL$B$OJ_8|;x5UuX77CAh4hQ1@P;-(GYYaqAdeSy1O4U6EJ3 zZW>P+pAy$+eB+?;|2{#}3nS9E5PSdhKlDqByJC#$7HE7mf3})hYx_iWzt!Z$Z)L~e zbmwQ);Ptkt|oCDjUKXf;VuwGjIO%W3; zb_iY+?o;kmtK?x?5XwVp`Z$!92+_T207lZ7U9yqQE z={mAro1V?9a<23+=duLPM$5NQPLk_mw;B;ByZTL_G!4h%(Cpg|nBrOex;MV6=giM9 zaaSn;Cta(x%C~IJ9L1o5NKIJdyWrFX+NlN^SSbRws{QgiN7pDdC|rmwvewXFKljn(P8o+Of4Fq%N{`-o5_ zH?x!ga995actD50$AwrPHag`f^UN4plCw!s%~_GLgbL^H?Wa>+0#Yhd&fV+!uqY=z zaClol(~z$ozMB`Lx(7pTAv;Xw^O3C-@%G&h&#%SW60a5X6?)T$RZBf}28*BFd6_&0 zj#j&JcM4lA_vw+_;GrMNUB%2{GRb$D^*Gq@KlVez8rf@;nbOP>vpn%d8Mromuk;v7 z&F3I-nh9Q^|frzh`opo3RH2X8DHT$}I51`X(o?)q#mmcV@ju)Q|l8w6SX zwKLStyq)Q@sx;>AQ}+%Khdp@y{votpcLtZIhnK!wvNKqF^*yqGHag^$njhHz)!tn{ zih5q$t^aJ)Tez82_gu1j>ln`S)QojGEM}97jaPVO3B7XzqgrAf7wJXK2pegkIw>Yo zJtK+0$_cQXmLSy5N0u+@x@S#+TH?X{jTF=;`z&oCx|OybT>b~dU^XunC9qTA)qlyW z?-$(wM&pS_(?=TItU$>L81}3vk@J>Nk6neXo{LGJ{d5+*Q?6nSs@Z88jKkiHj zc;iGdsvIwqhXRj*oJe90$z9(GNhx`mJjC46!H{_joysaF3|z09ggQcKGU9H`(9x{# zL?Pv9lhjJ=#35FV*TK*~fw@ti0@9w_+8iZ|vLu!;!Oc+(_x4b6SO9EufWN@gN+x)4 zdcN1vOp#Q@P?ys_s0iOBU|Oi4r(1jw0E@^C9r8mLg0J&0Ugsq2`|9@10Wd2 zT7qN*c>pB2V| zk(w_ljU9p+BCrWBplUtBqZcAk!v`QYMdSwmA5l7jsnbhvT}r}bZ%ImYw1-E4)?E6) zU0I=O+h?~S!4G-{!Z@uJ_$txW@SQ$0%n$f<&WxU;d^ao>)yHrCX)ZF{a=>1slk)@r zql4%3A6nYqt?yg-&PNF!gT8M=>8Iv+=c9rQQC|kZ>HEiTrY6lb+n(xkdv>tvbC^*( zAMQLXyxI7;n)@Nc|G2aRPxCW6+D7%o1L8Jm0gHD9%lQ<#0Xw^V&LES+@`^z+nG|zt z(_b@^-&xkv)`L6)osNzy3 z&S5UO)p^BUy?Dd^G^&j%QCtI7%=Xy~*!xe-^Y)N5?Tg+$+zHNOI;11>$baZ=b%R#}z$@FAyoUK|^ zK0P_zYT-)$3I4F%9GL95FoV*Il^UtOS`T)6XODe^G9PcnLqq)N`eF!s4Fs7bVfsS^ z3v+*U5~CzbnVY3~kq>EmMDw}%x_o7)XHyzK;g+Tmv@X9N)+b0y&ju@5<`=W1ZI~Vo z+UdD6Q=3HF>(fbIfdJmF3BzgeeuzhD!?~Hj%%|lOB$ws}sb_FQduKlAw9x!{eEPbc zIzAw6{GiX?0C=~zZn+o&ssnl>a(dm2yCJB%5fgNzL1N?XH}fgrMa zJi06B+;F~1VXrLR|3rBC8rs1zyISp_rzskXZKX3R>{dNLERS2x@s-#1 zNco`qp?-CjBUxI4F0V(n;ubh{t(`@qvvf6YEi9MsI~2M+xTou|tSFEwyJywHMJt0g z8<|fu`5MmtWMz#auX3#siaw)f+j5?wm^3pc1#Dw0xa8r!mo?MXN=&GFGpX0KN#3ao zNNq~iDvd64d#JoRuU&h^Mrjg}N0a>EVO3pOA_fP|V_Wm(o?7?}4pyX{D<=?E%yLt6 zHiC}i)8k9UEnPRc@fNXDqL$I__2BDV*k!NJr5BM$qUsc%S|IPby|NlvT zz5c&DhLNjbw^l+?^*Q{$W66Vud-#?rbfgzJGK&9?y=!Z38#&hR{1sDr%5H)1+%Gvv zs$`0`S<%HM$-CJ~r4(Fk?vX_mDXrI=KYzLh;GG0W5SDc+qIbm^VlZe7rhB>@J^k&R z;9IElxA^&BJ%? z^VIv3=6E79sddUgKvQLzHt=AxD9NpgU9PK06AVNmqaYb;Wuo1mG74Ofa?M1d^NcE( z_n8#1mZUCINg7r0Ck`6UG(T$fQw>q&TM#Has^~=)M|!6m-VFTWS>XRky^jAUU-18);`8nDe-GDzpk6-D?(-DS zzlQ&X(Q?iH=k&$?e~M3?{l6tYX^ri_?X2c@zh(h9xIiuLvWk#s$qS;TX~8#uuaKw4H!zZoIZbmJr$AFCW0kQq<&FZI*(xJf_&B)$<_|^= z?T1m<2<)~bIbk9b+H%c>q*3l{ENGtEEKZ|D!^l>UjKF^!Y|L7FXoK0iLh>dN5Hn@- zJd##w7XxcK6B$^g^8^Ms;gya`2Sz3Hv~gNz`EKyB>_VK8+FIZjo48oTk)S-`)|ki{ z>r$#JiQ`-s#OXT7#0_To4#edyrYwVzvW_d2M2XWznmnQi#U*)_974FsV&sHq-~rl! zI3|?^3Zs-VZWFM{8OXg@DW0e3Ijxd6Di8{t+CvxqzUeIeq)^wVM>)pDXoQ4Jq+%(4)VB?1(gS+ zEh&6{0Hx2u|D*W2|A)Q!f1cvAMgC89qD4T#LLWLAC2zC4ci1kn(rM--2LoQRJmOi* zVbughE{b9o2{T^{QuV!W^yRbh^Ayj&j{m8o%lRJ!HAcRy|4;FuR>xp}$8o}_wzRwC;9w$ z;D5qYE?&jseyZr<=1Vlb!wBnT&`-RTS!^idxJ_iXk<@6Yb{2M?hLjTj2btbr>WucGLYnKYNn z#f1in?}BxrO8Ll5bDWWikoeu0P6;zb8RE*dfHO3U$4|3bsofmpi?;ysWjH8}ie(O_1L5^>K8Vz>>hE`+z?!~oAbe-tik z$a3R#=49)-OrgWyri&YCyy%W+vR{Wa52fh5rh=UJ|-&65O7{w#H1 z|0|QnI@K*hfJvz_|FK{9%5t$BYHrsmi>-EAAElC0Hfd>v^dmVP$Z&6FJz$O8^u+GR zqa>S5JUG~XY`Z)G{o+}*daj<_h;y|z9uCMapBf&Gn=YRkGkM5q1s*n{mb9>Z;uVoe zVg1ymEc#27zrzYTZ?b_)*D%3Y6(|_nf(pjgVZjZ)0}SZ=s*b7a~X!>>J#k^}b^ z1h@&Q87;pK$I%TY5Cj_^_xbM0_iI>C3sbt5@0+1PY3sb&jA@ftPis+t1ga3(Qm~LC zNT5ROAWelw?~~?mI4Eslfi6sM13fzzO5tl#LXCRiV-Tu{EVcaZz<}*U9=3_n$qJw; z>cKe6N&(Sn^?GHg8QlrDld~yX$o8Q-cUP(frBejKHlRC~wzNKT96<$oszFT|7(=O^ zbg&*Hcp5wop*$KM`Xqz~^+glman)S$&@sgsRAeYD)R;&76qpUp5n+VKeZyHG4~6+u z%z4Z6}AEDbtCGZ4ND{kQlGyeoN$wKrC=XRuK~v-w7e%lS+uU;PtZjq<=zX=LHiWNM6;&Q1MHzH2N;fp zB=DH!Qqj<&Oar;37?B>|6ssV|K&&mcT^AE>RZO@FG2u3g3D>@uNV16HR{boaIgcHa zF$S@M-lj8~gHh44n4lhOsSv7;y%6l&?~p+@V0h1+$d0gGEy*eH6?#GnY*YbQd=hM)0eaWV!7IFDG5|a?&a< zC*9)Zq~Ab3B{F82WEfb_BaxegG2B8dRW6P5IddkU4J_`4^22VHg?w7YcvSG+ zse&pG8A>uKL#@bi<8_&$Rz-@ckSJ=iKvBEw7m>nr7@!t~D(7VOL^oZDI z>@4sH%9hgoD4I%%MHi?a6Z})h8FFcIt5wFRdOfgmY9qEl1Oapi;L6E)k0A+W-(Uf)-;UfOHz1<1p#;7_@qtHY77FD7_^OYCENy=Gy=?v|0rtDt`*T4c z8mkL8d%b*EW@Ei70rbuiKsT2FI9Dhb&$7o{@k$U)dnXBl1&{hF3l+!7R5qp|JJb>A zncVknFs5fJ0jNR?-?MyqC2PrY+YL)zwHQ?ugQ!{%qX^oAOODbZ11SnZOn^ZkHAmkC zMkV1JSgC!aY4L7O7tu8SEMG>L8{dV&H?y#^%VJdv*`ekN1KI8uLWIaca*?Q#g!Ld^^mua5I2`o=}l!%NgmpWzAlx57C zyzLh_MO2j663a5;?I^Dou2vRXxt-i9LeDG)*4(9VXz}LK2Q3l0)P&F#+S}!fwm|tMjk_`QD@X|L?O~{s+cm$Cco5 znT<~7LQ9uQ#$u(YN^UB1J=f-cV|*q5gJSH3|DWWuG5_0an{YDDFk{>Oc=U0M`;a^= z;(ETf%JzS2j`gDg3=`QSyW3O1M8M<>7*K`K2JV?=b=&>3CI3^w_l0eJnca`hM-OjC zk9TR`N2%T!z%wvqr?mUKgH+2B>#(N{Y`VZA_a`1iy2^; zVOul6sNxHE8$II$Fd*Z$rGMEvJgsDafeRDnor`7RS?7MCg*O1cG`iH8-vl`;m4|k5 z6WD`2W?P@pj+r~kh(X!hvA#MPimT#)!YF4O&GilMjAx_gOZA}=Q^F63bRpqM=e!R^Zd;R90YW<&6$2%&_zEH2S=JC&Ni6e;nVzB{P3cI)WkdSNt_g z9`F}zo`Y>a`hvHXjPBAQ-qGaGoz68JisI34nZK9f`QD8{;1|Q~AHeBTzASTEDdaJh?!u8+v$<@W1>z|J=`($uM-d|q)G&t#> zkfY-(s2>I7=fU;6ix1ZXT3jBVU;jcb-jL(-U&!AF=O+Q_|Kt5-|LTfdTy_R$?@tGP z_-%0BJNcizvpxg7o`I}3)O8=~XejUP9;WyI%2`c33 z-SO!uUaE8a0jR%3`bh8M{V$h;x9_gWyNlD4KK%H)50o9hKJ6Emf}84{9uLj}a&mlj z{I>7Ux`19TJJ_tCj{N+tk3Zq{j^V%F_2A+hZ=-i{etikm0PgbgdUop1gR6c(jxPsS zI3RB>FV2Dv4kw&(;X8rz&ih3#IMih6i9i#qf4J(;IwU9k<5TGC3QxvcoHmB1`Qxij z$1mfgls%>BIf2FJ3>KejzxEJN6tcT?Lf&1Uo%U}tWMc9k{|4gKEAL?#COBL2F--NT z&_b1C5`G+waPdOX<=ae8Dy39Pz^KW_ev%#EM+toKkdl(~{yc3x?GtVD$T#!$dD(38 z>U7ZSpI`O6aIV*%{dp4<0}1p6EQ0qkfa{aLl7D;W!Vb=X>@JFLvu+Gp+s82)U!YoK zUkHVNpn+hLo2gHN%lqGt7CaL37NrlPXi(a{Z+frapa%9A^qwy1Ec5;r&IIM-FUfG6 zz+*^$#}GeIyuKFSBN&R|15`qBL_kHvXvspyDk2pFmoUupLIV*n+!G-JG3geit}hE; zgD-K#{H_UvQVtx!lT8BSX>>rlD&U}W!Izp~AwZ9?ny7A3=_+!?B(_9!+`ydTpFhYM z516>+0ZlN~1<=62T9*pG*ubQgT2wM-I3k;bJGrK z(IaC4|BWX!DBAj?_-``r`6oE+yIQ!w6`WVl2IrUE(3*aJ>u%_%$BJ$o_Eb`beL4UwRj`K6@OSr#k3^h#z=86n6(J71&$0HzGWE9i+_??qw;uB!X75GesQSar_MB9xbb$(_$>A0|q_X0qDq?TDbBZeHCX-bnPv@5gIt*?i z@}wP3N9A)|r(=HUKakzMG4k(4ftQxD``O65zB7BuyO|7gp)dhPiT51FLF$l!hzc1L zEcXR4(tz`1NNpg%QiHmj{tr(^TR)5f*^c4}IvincNDs4Oz%Ux@6@-@)o)1CRxTGsE zri6A46qtlB)5D8W6Zq&$ja)vX>yKqA`~|&At_``4kDWzwdjm zNQ##ziDc{myB#2|l8UTSRlWNP|E_^u+HarIJuv4lqT=a+WS*PblJmm9F{W)5;JNzn zW^^nFN87*C8uN!VzpW<#-s_)lGLYVgLrWj;QBVN(>ov$@uks*bCELe$@c6FW1$+TY zj1PDDuKAuyK*Omb%&WJJ=?6unr1maPcAGtj7}YZ%`(%&rR|e!udOCjdCXYcl zhYfxg@5)UMqTB~{PKTKT-=>3hnqQ!3R0nde5LC!mT z^aGl?`kT8cqMQ1az0ogTMAzjOT;Fz{T;yozcp3-woZ7#_h$gUY9ya?HO#R_z5Y)m~ z)z7(IZSy#Le|#wZp}d3QJg)egr~RJDalIkIN28RcZmx&af6p5Fzw6uH`T>Z_v(wF}-`gH@p_j&(l#xCdZQtBUa zm+#Aa_|5xovzx2$e*iR-z5?d%>UI^($*9O*A^v&D)__y8o91sg>qP!=6D|*~4lNPC zqvieD!{@(-{Y?)fxCP<6r#EnuN{oVkh+zRKrT3fkzg|!$ETDqF=1Wo4OAq~f^yh89 zf7(9mqMu=w{O70ul2HTxXVK3^e7`F{J}?W>j!<8N+?KEVyouLf)5?Jd9NGE}Vd@DG zO+!oCzSK`5rr`7sYO^UrKj-GtQ3TlCk?4Xck;JIvOC2sze*v$+`Q2RyoTQR&H2cW-AQyCV zb&y?eFMU27#?4hjWW61~j2HeWA`4SjHRFfT#ti?efioTvJEo({3k37!1^>=+hA#F| zAowj55o7CVvsCBL-`+#m@o_A9WXp-G>oM!)(wd*QLH?p&+kqjPa`OOE3mV=|U6rQZ zcN{h^dvD8t)&mdNfb?m%e|%lS)^3&M#pVH_@`OYSa@W|rz+HcAr;HEyHxmDYxuss7 z%(qpA{)~hHjQam@!KLl_|10?C|NVbHz~BE3|NlByTF2cVhX42D<7-5MSncKz1AyL! zIR2`+HGE;;ejNG*f!+&L)C2l|n_mIhyMK&fdQuSPZ};T0zuUh@ed>D*enR)j&(q!R z>Z>n5{c-)5umAD&kDsj28S;x)z?FbFi-w^8DIF2N00A|74*0S)qV!wr3_=rGJ^rVk z(A0s`;`Hfu^Jd?i|Cjh}96oI>1EWcCo?TPncu=G4zIp$T`0j6jaBi;et^v`aS}TkP z`I8!}`~2Z<|0+-<6xMI>otqcz`R2>!fajY({iz~b^;>@2{IuF+EAlAX-muTq?TZ)J z_)SAARu2Rj*pn`$-@)VJqmzepS<C#K3bh_(b=f43`zJ@!#*C;8Gmb{(T7yM#};G-)MoQwNx?u zZ{+d%H7LTz)z1Bmf&uXzSHLI1dmO|6uA(Hr+dPDIy@7SDUO&S0c>55)WW6t*_Cr6e zp7V1UGxBw9`+TN8W3Sxzn4#{iyBc)NZTYM}tAc&dpP8I=^X)Uz5AVw7hPE8NaYxSK zd%zpN!(({8c{p+o&2JVxh>vjs*=GCocKi5l>P#bW!Ht4)w?RqPe-rG@GWU=!n;Q$%`%V0? z`ejFM_Z1gV2HLg4?&^R9Tmt&64u{n>Gqlc+qBD{Tk8`YK(rEwQW9bA}7%(TKj5ua2 zJT%HLxH=tpVsu@jL+}roJC~0Kqo~mYR0~9-NQDk8xM?e4)`G1#=6zRU#cYHbb15f0 z$BLJls;*GmW2xM#0|FIQ+Z4*IoN9Du=X_*(#j&0P1{C?on-vq)N+a*7;+|0G4ivSA z_VZMI;5zZYy9#`g@{USL*{HB-u&Ir2HyZ<_Jf}J?Q&j-y^dPg@Rriz=b>eF^JyLIC z-Mx=oQ65WT>HrnYtbLgv9*)DfhzpCkS%n7}ab*%^PFXy$f`p)4%9yBCYPq5`wSJ`{ zg;A-#%$GeosTB`d-tjtNZaLv8p&fRWhA#TrVM=U^SzOzLKU9Y7vom@)&I=Z2g~@$V zSgtusrS*v^Vy<acdVcpbG6NKRmZ9QPz;ts>(c0$&KOiN+6XQZ>>T! ziNK{LR#1oxmR``F2&M6qK+#~_0Y+YGqOb;Tw-AwIlCr`ZtS>(oyc|cykJ#+0lQ4m_^?;!kwanX^zXt< zuNHqemx>y;mT(?B+p8NXMsqiI9-fxQoKeJ1MG-lbTfi<>BZ)92fLCP+6%J=AR*Has zZX$ThIgit5EI~=B-UA`Fl&;*%ig`AGQ<_5uc-20$I?AmcV^=5gtJ!1PV^#%YCQi6a z3LtzgF8~ysaj^#y$P&vICVdLiqzcO25SkvFTKjghF#wyVnbj((D%Js9lv#x>yO>iI z#xKXI!UFE{3q?)QV^!t(bXQDdR`sf+yBv5`Ab>U$0HPHBwyerX<$;Lq3Xgaf)1f_+ zp{9z|K;f{CG_b195wA)zp$DoqJ6$;nzf{56QJGmm(Iw%^1?H5P23)p?+JgsxxW}xD zF>X~HVOPZk{ObMV-R7Z7PIHwMUWy`#i@YeDR0)e&s$*#jtI{-En4Frr{9VfyL6-9B8O2 zI}ry8>P6kdBvi8O%_XJqE-XnNXZ{qDP-(Cowy~3gDd|p>fD;-+%x*UW`b>MZGU0Gi9y4-ur zF;wxo@b7G1Hzak!6hfxvb?H*o+%0zw>x#C9_Tg0aDu>Fk%AxW|#Mrvo6Xb=0(Yu6Mxgx7AlW3o^beWJabMLu}-<>sYsK2;UdD^in@$X z*$(A>wCc8-W6mn|!-MF%V5y(Wh2RG0&d6NarQAUTo(9opNc*)D zWr1i^7?TDXAzT3YE*v_a76sDg9r9FL>a_2+oG<_8i zRadgt#;*ay92WZlXmx^I4v^V)ltw7ni2{^50&OIIc+6;7m1bofA!>s~p)|nnY#>E4 zUS&RZJajM*Q^*pIIx=AQqvp5)2<-vr7etrSp9V^T06=;XE|h?&kb5h;%0ib1Q!{f&b=!jnv|Z!&bTOva z7Yo?aRq2{V+s)S+wh>pa05v*~)*32ahL&<$S;{qm6r2nGN=wy}E!oP@itf+?;1HXk zp`42qpNlT>Wt?pCfV3kACuztwF46tPp$r8**la7J*3bb%dEfVO)cNt4_v1wIq@%s4 z&?eVOA&t|i%F+ZSlO#5=V(6FRR9c9o(WVdHLWmW~Rmc;rRPAPC06RxGF{nr&FD|jT zX7PN@LIZ888C8o9Cj{I6@|VpvKGTBUNip6}Pkupu@@cY(Hk8&4&e9R~w2s6MB>_HF zq@4>zzJaL`E<$KU-!Win_*}_DqoPuk6C@DXs;m_xG=-!Kv!O>6liq`|vzCg+p`t0H+3im^{F#;b_jT;M9OrFqe5D zNF;i%fiF40DUkmPFilvNw^4iWhb$pH2TrwSGSfWu0Gp!ViSRz*A_EyjCYj^E1woaD zRbVJRtAMlFYz#2x=niT)m3Fy0!gJtM&QLnG;dBq%c+!5}fwF!f;W7Jp_u}^GwD@%3DL>5HMS4RJ&HRmdr4Kx?{2#Me%x34Jn(HejB7hR z%Hw6;D)4m#Vr2{HdNg$`7^?H=ME^7eB5JApk!y?W4M%B}q5jS>P99-e8&tVF0%APP zB?MF~>WwoaCxgPTTuB*jit;cO{DWN}sTQwMbMSy#Z(JWR=9VCraIXg}CvCZlVr?~f z{oy7G6ImnyCTyY*rGkw@kgN|LfZE!XbkLP((a>J37=<{Xgib)jEvEj5p1~j&CpaAg zav=u9ccDp2An*J6r=my$go*-V;Z!tT0MZ*sf@V((Aw^PqaQ{?X7dyHU?C6HEqnnN$ zc~K;ZH|Yj-_t|NCWE+Bb&ktx!n&>_|4g7$13R_tT)=qiSRHO02`p8>g(u0*l z0cN!%`-dY2x`if5bZOUUxwML0gCtUB2YpW^JDy1_Ml#zn$$;;bWvD5~m+KWTZ=Qs% zv*eU0;WtPO+-{EU!){MGFs2(gq8hkBGtecP3WN!%v~kV@S0f7${{fU!?nIobST5}r z$mn!UD4a=ck|6+IyY1$fv!n^U1iz6mfz_eoGwJ04c7Jz{h z44Jn8>ee219i6PH7kTfAbqqbuIMpu+-P!O5FC*!|A-IXMbC@V}P1GFN2fSW9=vX-D zk!a8hfISf^2M!5rCphhf{5IhE*L`|oXbo&3de$T3YRsB5 zZOQdja*L(y;CsKasFN4a;gn5`v9H1cIeO_v?coEP-t*SwW8S*_h_^1EoF-||4ky#N5D7CP%cM+r!BM}T zS|L=yio)5&ldi!2pu&|0t49!{4vqRNbviW12~k_$KB(<&XbEO+j7~7SMFT(wrqJi{UMW*E|KJkmn*^SQsZb4?b+6NuF&%tV2At*O zR)ge6b#iOK zBHcFXOQ|v!F%-k%uN4U`^$$KURo0+~H853}5*B z{qkf^!=?uq$Ml%g7J&y<8b$8NOF=9uzF;;>>Sb_D!Ivp|HLI5j6Z^0>_!9Wh*4QEU z%~QmDG)Axc^hAAoNDYUcY|;@iH?+ALE@@;j0FV6Ku%K_SWGjlubc}_c1{^pn+?Ij& zh-u-ul33IxEFJg(qljn+Hy?vLgqCgNgV)boSg4#8$f3xSle@BkJwVGfqk}?5gdZFm z!r0SC(+7jmz^v}mvphBMXpqk;JvEe;A<16w)KI{U319ypg~85t37-JE#&9YJPYvP; zcQ;2N5VFtu^yYSSEhdKdfgMx*RR_vu*|lKeFfu0sgB4c8$B|2ABQ6nc&<&2XYact2v81pd0-$TIW*KMD zka;E+_L?UIEqu+`W8%+}-ETA-1E_g{K7ju|IDg5O3U4V_b!Ljl4!rf_)kbqBcb}dt zrjq~++>~0|O0}oSMr}>WlxlS73WQx!s&nfV*)XI+ohf;&ku6)PK)zMrWHpg)WPzmw z0)+7HNF6JIA#ezyW);SY`H{d5ra*UlNk;z20i~heA_6^vPeplg0WY=(4}t#);X;h6 zP`Xb~G#mNgFo5yZYwt@>Xw;yf$wr6F)l6UlKoBTwK)Z}Dp}ls&7Xj@;!N@^IDhbS* z3UguDAf_e66g}Ifmd98mLO%>+da1Mk;vPI~_`eJI zQkh7Bz)uQxi5^Kx=n}Ec<sH)WrSghs_NoAlvoL8wV3g94C9%WAqW{i$EmB7vV{@-C6<8x8UcyNF}j5Ebc)gmG*#JsX-Hk+u}a4zsoGSvTiI} zMWf}rcS{HZ8UmX$v^YoE##bQB-X*A?A=@JEtyL96GeTlEG6n~6K~evT4PTTnQ{;{nCiB`$%rqf0d1#bSnshn26UJTgGNf6#zFRA>mAm0$g60SEHr#iD=KHuC zE>F-HC4B$+S*%FYvemk?eD`kbELB9fM@`3{<5Z_AV0xGUr52PiLTGXtj_}NikeVGQ zGlIYbQ81BPMWV3aWY;3T7Zi?zmVHK`qk<-KL<2>g7!90`rgUh{dxfqvFB=D#kdHcuA~C zNdMTUcubsQ?~=?l3a`_mI{;Bc>q5}--MfWxqsqc7mDQeWT>hj(gH?wP^|V|9l`Wc4 z+=A9~6bVQe#I2$$2%<@$bDXT!O!plb@nNj8>Out>X=ojjOu(ALwrLp)*JEwcEZkk; zD?+GfUEW!~dq-#sNf`!F6;tk<5TZ~sgFeCyL0jP5B%!lf)H7H#5ux(v_pM6CX^{_2 zd=9E|?kR)H4X0PpnZBYT(bP!^Z7?c#ZuO=mOyB{D!-%EOWRF%m*Os z>Jb~Ddc=;!K zw15dT5v$4q#?e&_)1~sL2Jh`DhI1o#QNxBe8On0JP=gU{SXXMWN}6TYu{^j%y{0RF}a?UFKX!TMAXc%vykyzz>{T4pDX%mgxBbS*Wems|Sr@ zTbZm)%;)w&jMh7`>|spSZ$|qv?W&aAW&l{Zdp~u@h=#fYQ*K?|(dJIw(XyuQh?si@ zO*5`a7)Qc%REn@)I9u7QJt_H^um)|`M$xQ_Pe-Hm-f$S$t1PeV&^QQ4;&bY(oGe79 z%8zAHjIS47GYYIk<%_nke6b-eU)(E8^W7*A-ppRFi~`n`(&|jRG&QC1rFX{a!UP{O zr;I+ZIE^+es4q$kTJ2-zP&8HZm4kXIzYV~R;&;rqM|Q`xLjYFZ{a3Bn{t29?gRPQH zil+0HSb+;rZHrYackgDehPlvHX+h;VTKnP=OvaS*i1Ix$T3@E6Do#F_^Q9_GRYOZv zCN2cQ@G0X;RWx0o9U6@XT%pN|Qn=y}LwTueLMYRCo7`7{Mkf;tmFEZ-ClUqoeaz=W zmNZobTyR0I&CSAVSboKcOtd+Xi49I8lb%Lbs_QkD|*ZJM~Yfmn(IpVtAVG)*=r?N?r7o*uQ zTy@6aiKP{$73VS43N*ib_l{sMh2M-L#(G>51h-QY~gCP!Rnz2cvpglUl&+8w12wh{colPea)Qj z$8cvpemgqr#bnn13nd>Fx3m7k;ppMx&Ual8M{8g90FXd$zx{9&B@(gKyT)&39WR>{ z(_*&tB0Be?DCtcy)*9O3*SzXSEc$5uE2`OUG8w=9>1OE_`Ec?aFKp-?k|jbtUi-!$ z!srnS8jsg>m+HHkA2YnJ_cQoedt-Gwd`%K&v&k@hGb{cA^YK{^?*%f)aKB^t(@W9< z#J9z#4T#3^Z2^6~80E|7-^|w44!r9WuCBeXajJ6ygt8X` zXS|H(Ue1r#w$tfld*l6x9I{ROO~x~9JkK5{wWc)5iISV!lK0u?(vszya>5FgB z7tjRvXix4M4SIt4c9m=6&d-K9@k`e?Xzj`u-<~gv@;>}2>{5H0gxk%{dGZ-?D1Pbs z_N-m`qS~{00FqR4J1pLQGe&VGVF?GhP%i`)&e(t4i7b-cyaS02XY0vr@qBs%veJ)X zHiXK1_kDQxH;@&Q>jGx?8VU7obAdHg?;q1FT!CZ;Iy(F|n|xbM^*Rhk7l9imLG5ID zsnVRQqEM+Wc%BQ-jFqmu$Sx=0=JmyRayfucu4$)fm=?`06GcEI8hXiW3VrNOvlEoO4wvXBEq|uBg=Xllw zpMYGCA^+ZLpP;+HlAP&2T$Dlzkx0bvaMqYUs0yGnD5;W{iA3Bp=Q!^ZJci-M!V}k> z#d8kY#Py|U9=ycYal^QjNSC*uVR?AUy0eI`54ye5eOx#JszE(lcMiS^GYmQHL?8Bq zQ9|&9%YpFRfQBRVKuD%Apl?l`{IXPe)7ks0YGim)4JuEYwNDE5CiWubr26;Oaf5Ae zIyn8q%kk*)B{1{{dIvNrGfL5a*p~k@uEk=X&U5T-UnMU;5Iv3U4Vs;jS;$qqV9k0BCE9Z3ne10}4#!kep0mQ_;ZxIh+&=6!I9-VEOJhL8IrAb&sS8`?%5%ZJ$gHp?D7f4EtFM+g5KChQXbYc1uG|3Aj|3|fp#6}M}s6>&CYtgBpZ(>IU%N7)3>hA6@x!4x(RH4l;|bV{`BwLC)pFJ7g~yx zEA0YEsHHUMB*A&AHKW-5O~ipj+qb;Wfk^lxI%re(r%mR8i7e;v_1uCqmKBDTMr2Nx zSytluTPtlkl2#$IY^KcIpEAdJ$pU6X_i1Ul<_ulHQ&R@6b)i%nWz6>l8h*HNeaU3Og!O)X1# z8B#_t)SIX^KqRy=`l)m`v2LdoftH)Z{t?bRua27}t5W4HdzYV9v3259@=PSwlBT! zI|3HEK4=@oH!MAk?$NC(8wS<1! zUC-`dH0OEXGRr_8%)OCH0AImOWkqUaV9d64V(lc*4E1b)X4P5Gyh-zlv8u`Xcg89_ zf8HDrl*~j~LTy_vR0zryu1G4 zX42<5438#N&W54{5j^c6TAN6;5uHTK!x5bofnj>aqF^P+U0kIsbzWL&3Rl7~+(tAA zf|7IS(z-8QXO~t7Bsxt$av+vl>&3M%h!&od$BWsnM-^n+2h~Z}k@DCjC(jjaq9o-B~O9-tBJ)TQMA$Wtw_pd7c(RN^6-g zt`K={Ofa@=YfY>&E+kbNH)?+~QX>zy&M@P>W6rSL1OX&510!&m8pB{bZllY9?9WBt z8rc`RO9kJ-psjM${G=w70B@7+j1IaRYTjqAL z7&yJXq<6H>{{m+H<@p~}0(G4KKgRa#_wTN+lG|c39gauQnK>y&F!>HgmuJ17Uj6aJ zp~ExGY~gA=DzIbsevd(xFaGQN)!%;jHbF1-AAb7g<)6=!-pT3dU*-Af>5Eq{lK=jn z?-D-Xr>EckrS~A|y`If(o}8Y(efxIsRu0CK%hT_$j|{WvDU>|Ll5iJ#=5jvBXL+v* z|!{bz9}yLuXsOAeh8Pv^hv@OkHbK_kX{vuuHr}WgOS70oZqY09LOI~mm^@s)sGd> z(ND>{or*jm|M_(Vx%d8*u2Rt_G-{mn=8pXsn1RVW&w9hraE5Vx=$ikG+@h1&`x_Fu z-px+4>9qH|XaDx|`HSbTp8xz{fbp$QUSpg@LeA;`ten`NB$Fb4n*6I-qKYJ4Dnw4# z^YVZH`|qBe(rfYc*<^S#tH1vr;Wosxbuw;&)9^jh8l2T4+nC&?px=J1R?9X_iUcsl&; zZ)2e(Sv=+E;ok?td@y~J!goDlef9Y4>>*xxI4_zci-OZ)_Iw_W^5`KAk`Mb;>8Diq zUk~tiUKRAQHDB|*D5q<}J+k2>yQ-osF+L`Xp{QAmMV*}W?Aj=i=51oleR4y5$>k!9 zlwwm`B5?K#;8{H8UV%LGP}-F^o}~+$!g#88ZVKk9E>oAsxQi3jXRjT`>Zn`SyJwUS zg-aKclj63ZuxYyQo*`QEu-(tF87RtlZ9CMj9JC=mMGGu~;kwBDq#=D3v5VmAjl{0) zF5=$(<$m3T$Xe+t^|P(rWPLAL3e}0@XV=_9Qwj#j{T15+rWGyp)5Xa@Q3x2GW%1+` z$Jq5jfgUY9b_VekOX?Uz58FCHk}YM(#*3Qr~?4V)EjF{lql&IC{c1p z3c9*QJAljzFi{&W(FRze6;z_#yhxNU0_VzG?Mhoh2NZCSOKnqhARsTC10oV}L|8#k zbK0S_S5h?g78kckX2*S%81z87ueR(tZ?u z-71=NsSeOvv@=ad6US&Jm313FfAiKI5zqVpVL$mfW*8tKQl3y=P#1TFig<>5=j6Z_ zA)F88?9tT$yr4Rd`1?t{&??-~3Y2#nlJ^E6?^PV{-5B1oTx2>JB}E9P6w>8^m8H?S z^1+$|X9Q-Eqgln`9P!)l_Nq(Uu)6!SjP4G}=EdkWyrH-kpWB16dFSlZV9wQy;BCNM z&0BZkYmVs@3^6u0Isy*!gzF0Pmt)TvaB~30#y3%BE=6-rbpS7@&J$zT3mx&aj(A!} zJgp<1))7zZ%WTjip4Jgh>xifId9>%3iKq3!7UYi*TSthkBgEEmt8Y8_|8yC5mH_=a z{eQT$a@qe!bA9yx`54=;+yAFwBb(cv1 zAowRRpUk2Cf)jx}t+a!zQbuwTLup0s z_CM>@N?N2uN@2%h3bAN)uI(-^)6TX=Xf#XmPiTeKYWMda$PBII?j&q&i2ijilVaux z?5DJ^siV>gX=A@$hW58#Gv#WJZgikkQ@KYsI?%c)NAZ5&uKZ;!onjsn8OK3$j@>}} z{)wwrJ1`*%!(89qQdSephvN56M~&HM=wZ<3Y$BMU9Ol?%nMf#I9KP2MtWBC_R~J)P z@;SDpbKH>4aW$Faju;#)XQdAX2+@+uAh@iSvrb;{VUy)ATr!WW|EC+8JrkB5~rBTe~yez1Xgd?}+LTW~O?!r?oT9 zsJnp`m)iV@tn#$&tWBqDs;1QvLIMdPBsiiyaexB{4*UTYZio{cxFPL@0|z8P;=1C! zh)g@}a@nr3yQz@`jEs2s;=LCyBHzbNnB+)OO>JCX9fZc{bcYxxbzl?FPA|ud z=TbJ3)w%I%2^$IbnT9|G3H3fETq7XO8D?(`2a{SZ^j3yovw zh>sgMBkmsKoe*GX);!PJa+bB_0@jxESzB(1wX>L$#L5i!>cW^%Ttj1gk1XVIMw1Qa zXeHXz+Ndjf9hH&kVxz)p3M(<{hE>)v1RGLX0pnMj=hxC$L6~3%2U(H#y`kSyBfn|U zAZNvjTv@8fD@qmZY$pVY3y>C(OMi%%t3`q2{qlG-%-32pK8Ob;zSl zvnY4@G#&Th%G>K?0uwVf%Z(~VuEd|JUKl$*zj6Ky*+%#i=WNfLsV$@K3K>?Xc#NOR zqP{YF@~g2Ynhr}pmIBz5c{^YHR>uPdiiC1E8D`{Um^>Ysmm=4$%b%bmQRO=hQ4%mW zPrLOxaa}RDFgCD62&OB~$+5b4T_aXT;?gl9aQSOtRRL#4br?Jcs~5WNri8?O4uB8@E2n`Bxyyx(Ybof4 zg9vmfk);ZzD$WsvixJHiAewIg(OhdMUxeNlp>Y{`F##>$iV2sdTjT055P)ekWK|$p z)?M#`(iU>JGBL2=1Z`4CzXbtjLV3&)WR|I#bJlx{`P?kPoZJMT10&(eTVWn!;Bz2U z?$8B#9>t4LJD%MdQlYz{(izHES-z+xabv zMfv9CCU~1jr<358h1tiw2u#!NEHgkp3YUwT0>83KgLQn(sllw&@Tg${=c>w~+~K;? zZ9Vscv_&?A${`YM2!jDlGq;x@B}fD~gMnIiECj5GrEnF)vqFUDPo}D^wtK-esa261+rMbQu)!S+uLm{uCRbI-*4oAJI#{)ru}lY>mJ@1L z#;BD=j9N=J`~3^l!BF+_I|&STiN`0PBvHPZ?F-kIthXUmIojK%9)tu{8bJM0b zZ^W^3{-+qU=q!u4=F-FxWWI`2Bt(|PG)yRo7KHj-6919GOh23diO6tk|8*V5y!eke z^2t<8MsKi=HxBLK;IOjEniJ%4=5#K}3Ruv(St>|kLSbn}VrooGCx$u`Isf3L!pMAOw~~8I40p)0DB8 zWCTN#CW=y?g@E@((d(5lE>0vc*;4*mAx`89z)B%Zq-h$)nW9P|35zf#Fo~tirgTw$ z00b7O)A~_W$|Nrk&%#;p^&SS^R$*@`nCLT>O8&&Hr~T#~*$6Fk9MU;O1C|HF@e`E=*4fBo^DzxdT}p8kvYU+nwwM^7I9&4)ky{TqD!ul%vi|MAu4 z|Ml`eEK5waASv|rcq5MM82@Gbe=h$wCZONO|Gt)k#$1IajZDPD*s6#Nn^|pyRV+yu z$!;3H?eTh#H)H-M=jZ=$JO5wDu^|8ZqWy(~h=@32Qj3JANh}gLjU>nrOw^)zlF@Ts z;M?O(Jg#H>7xO>Cge9}{KjmaQ|6j-P)$soxZ;MuRJU&M|32(09Zd~m8FNAKo{u81v za{WgeIQStL*)e=`UH=K1hhO0Nzbd*m;`HwT0jy0G{~x&gyQs1fe+gRBPfGPY{9V=C zU+|5DoShlC)hvHBZ5aMsIq>TO8o2=n{MY-R3Gw(JM=rZgW40Xaf%=d%#tN=rZ z{`HNT*X4Qln!l88n&~kxxhpU%Ic}en#y3}qTR!HyHA084J&iP(Zv)c^W;t^L0PuNP zN7zgG+L2Af6PLm<8BF=gbE9yU-IRK6RL;6w3da}d*n?*5YcnHpPC?L(AdVTGIXRli zyKbC;yGD13shV?`aWU=|IYO}w;EoFKz5$R+xep6J=i0$B^guw-mJ{&GP2kAOl~_of zV*nOGVMK32E;=w#GEliO;s@VAFcC(5zyxTE(*S)DjI3aUGmcIMa7)8Uv*L9*FmB4m zVuK=$BmJY)as?;Igb16Z@y%648YkgKMVd!UVUrQ898c_uHt|ZXEzpKGDw3mv!)|$y z<-ODv%S0Jl?60)Q(~E7wUr9>uQYX+YQTez%coHz+Kum$+PjI^T<#jpDc#cPhy|60Q zJ-8D(DVk-Dap%yr$ODmY09~9@=ZWN{7iZjgS$pZlQ7n1s#Zl*UvshSM!z2X z&YY3&92a?FheNkHSGxhO(ZZFz0V(G#W?EdUmJV0;2E01S*PeD6PqQpeIHOsVFiV9= zjZkSyEYT`k?7xVPV6w%RdDO7Q;NphD6ts`J<-54vj3hj_Zr)O5 z*Kte?xp8#oT5|v3fl(i|sP5xuKy^yBub|G}B>Q>nv^)V&k?+8EJD^=w%tD2^aJtC{jC2itaHI zN&}XCVA8xF>_2-Jlt;F2gDfwCw0bWb<#w7UqdwHd484N@6D0+`yc`C379{TB?w9`7 zaa6#dl(ralE`niH^yc8<^BlT{de!T9y7_JeK|Au8Z70Lwu5T2_?V~3TFC4YWxRwAb zKr?StD<#TT@Z+;LERvfTqiIl9r?Bbgu77arahQ+grsG39>2=ThjKK6)&wjy^dY%lP z+RPSqkTjAWqUltnkd;w9>?EiK7q*8cO=mqjJi=7bL3ws;E8&C{cIyXS#cqOV@m1U? zq6NmUgM6$ty^nD^**bI0XHTuuJ(9>+~Cr#Zt7puV^?9P3- zW~xhy?73~Uhuzf1QPIu^y|axscus__+`(?8KF4`_R?UjF>QEl#y?!)s>Va1pK%5q! z;SP8GBpFqZ)elta57w_$qIrtY#5J+m=y;pqw?QWkhWV&~=@cgJN8R${QQR;{j(gGI zMfGxn9Mve8fd_ekGj9Rycq!x@G$$^YK^Rcs{&s4&O&(5sHnChKw|D9iOl*4rh=sg2 zD(&5%%#Zhi@NN+2MGDFa77KjPmA(Wip4!vBz?i!`K~!|3_E9%Y?Et+SN4AE?8IGb^ zXxIvaPYA)UX95Z=tO}gA;4k92@Nc~_R%v^w~Xni z05fxhEp0loS=`6mAW)`QgN7Z^QW|Saiu+ibwiHwgFs}%2DcNDoBDA5POC5GhfQd0g zODk7nTy(vdmQmO=8kAyqK&*{+uPsdF0$QUtSWQMn;iiNhu9Pagj~!IoIpDSn_=i@G zPXiLlaP3=Z1;N2;Fs#$Y*#1;6xlS ziSPp=pl5?c4Rv5h05is82{W;@w02lhh&=9U;8pbOg&JJLWx?>W-~f#v*qngD!6Md> zA>ff4tbsASTktd>3|+8V9P^&;H_8NXPg-b3?6ah`goNhyiDqzFxIqNm)0QM1@7Q5l z5?^eepe=DrB7I;URnSF;E;fM8k%x^nqa0Ur{Y zqak#FMQj7g1kgvJO9}%F$Pbl+#E~aKxc4z{6h^hwNDI>4pzei)a)ZL%J7d-kH$qSe zUJ`ClM`{?w8_EdKCoWNCi#Q+JeH_?ci2phszgGW%Ycdh3@W{~XpjQLlSAn9LHs!FJDPI16-y?fa*K zF=*9uxX#^atR!8XU8v;x*ez3pW4A2)Pc;qix>v!1tLPAA2WfzlHH-nQLrTQM`7j7m zyG>Q3g2gKP?stRtd)>ssf-Zoi<-nGEzj0dL9~FbWxa=P7r7Sg(iKH+>P?8xbWhAWO zNupVpMzLnG6w;XYqW* z?Nu&Hx9{8yUcoc3mX1SB{QU@cAJ!U(GEc(p#}O>>{xlP#ChIEKqIuM9yXBGN=lbsC zl4sBQX}pC?np)ACz22_2lZI7=nJUAxK{D>xoje$`=M<;bg)!8}y>1B#_*f>i`}vn` z+*fN4Z4Wr#iBHg6s$S>4T-%4h-)Zzv|J*!%T}&M>kv5)0C(i-Bw{KnUD-jSOke{Qj zr!^XC`dW>)0IqsW>rgOXfC`?&s^KVy(jjgZ;>?fRdb!(E98MG5r=AU-xncSp_w0@z zrF_uOVF+K>vfKkA2^s-L@w< z9y? zyBZc+-uDGm=w=yss&T(*{h)cHx^(GHUnk^dC7$nPjPI(8hFGdK7k{H~`>_R#COvzhB<#?$G?;=C;L zzI&D0S#!MWJ=gekR_Ne0ADeW>1QzIH=CafL=f3pN;?{4O7w2C4S$$_`YDAi^=o_0> z=^WqI6yRBLa=jtoCf|hIm)0!LQK&UPgOCoo6OXGoH|e@wttY-cHRIu0XX0rdow#$~ zb2mk$dthw}!UB822^4oxf?D`{{TsMw)T?I5UboQ}NU944Ywj#j4Mc;@{227Q57uh; z!r2E%aGH(B{ms6NN8!$cDfRl?mY46eliHJA0I%CWoO#?!&bl^!!)`oLEehPn8yD@X z+L6Vx%&=sRn#!*Kul41AT87M`A2<>IDS8?3#u+7x;fHwk}7br(W;iV8!6h zm-hdpT&k`A=d~Ou)tJM}=rA>m5gKPv8gi4F|6}iJd)zjX^!NMyKN3-~UOl68?BY{!5@}LA`S#S1^Z(*#Pfjfj)&t3E?sy7`FuOa-FGBg>|317JUlrHy?tcm!VQ9C$z~5ZGVlP);w+p;n{oxOxP!u)4^26%K zc$LR@A5-|dUa*Dw^3|*7_|5aWXcRRC?~41^_xHD}^y57=hYY0Wi>mZXD*S(6;Qw`3 zRGSyITl_V+-*@Y5^KrJi&0wf-0^P3OgLVFM*t`CP{sG^bt_1FQO$@vz0|?K?n_;rz zH2&+=$Mx3O=JWN(yP^Xy^*d@{1&68_{x|Y^^E1$KQBwEZzmf-vzws=(zk%Oz4F7u; zrNz6|b!gWIXjk0q#^BPEZ+!9be&~;D>ii1IjC|dk9A2me`^kOB78mN1do~E~(?Php zs10?*ej;ccaPMhv=B|2gsLK&MXJj0{gLUHx4#WG^^_FpHe{GE2 z>)^%<_Wb3*DO0;&L3w{jD7NscmJv{aZg(KK8|<+r==+-;0NY#bk>h}CdlqSD*NLYN ztnGXN&&CiA42Y1OWc@AvI~7_R!xfGUii%@25nJ2Tn5fJ=i5feT;%pWTwp;#a7qj4L=OYzVow#>*m$VO2Z@D7aT#^WZccyGpZ;cK`kUeDZ{|;b zUY2R)0uc=I+?d4JGI;skf zx7VxdokSsBsWJNi{q|lxNZ`DV#gdE)&{Q6TPlr%g%n8&}0{$)wvgmot4^}rE!-Ov| z(AU7!V1$AUmOR#hR5K34eA|UKrOfrE%#BEy81?oBuo-8*j$BTkM)4aBY-wXo|8_=M`t$aD>VfUmsHv~=dF^mOe{)Z z#+^tqmB=I0n5eberPgkjw!LJlz$CXzJ($~t5%kGK-KM-bmER@ivzLe?FmQnNL4+FI zGQ#|~RWg#GQ$(FnJW!WV?m%(F-y%SNaMzTm({(MB1G}|VYE#g3U(oc3py^>j)AI$* zi%b^En4EjCZ?%K=f*DyPS?P4@OLJ^;jmmjawezH%Y$uwprZ`XQnSEU6DM;5O@2N|@ zp!XrU=)F2`#>2wGamEXSGakGrEvg($dIrwRItMw{FaG9C1U|Oc8P*R&L_l3^#L_C0MA&*Ek{t{`Eb!z?X zB!5Xgl)p4fshq%JG95v&eHk+&GS++bAgzM*l0m6ps@5r#u2l*#P##C4IMXPUrV7kh zAFYcFcuC_nuN&zrcLbXk4Nj%k99SkW!&Dqtuq4R9f#qx3D=23}QV6g^8wM<4W1)}4 zfF*+;i{voy!^kt(5MT)zn#5vfqjteT5}Dq?=5_LE^)5tHw+L(3+_WsBO9#y%rqF8O z5c6xq!>db`qSS>CFJ0W=y+FkBK|7`SBY$TY{?|Xi#Ude`B1BVEADh;_al-~rZt?K7 zKGw%*g=gKP*e2=%e;%|l{=R=!Um*#XLBhqL|ALYj&9ivEx_AGRa7bo&*K07p;tw7NIyI~KzR!F40=vhR>kgY|l$ zCmXSl32 zc|3*fjVGd3Y#+{xCnTZxmky6->zmJNJiD0X^4MJ0EK%N-GZ3{eRcaY{R0_828?O-m}|Nck{bhau$_s4_1ysv zQ>*FnUY$6JA`bHjZ%EjM+H#7u!#fOtbOSm#1S$S|y( zHD)1@Jku+wqPLN>;8Hlp`GSL|pbT!aEeAiv&zzIshe*-Qyv6E}p+QP)m$!}?55F?> zDYy;ZTMNDocqSZLjptYcpTS?{VlA9@VgV^(ln^}PG6t8&c=#K1EF@E25BABgz0Rxd z>Qm5qwb;Du_CEQ{+r*BXmfr{gX8culbB*^q?(Z($2ZV_{ejU5+{|Rfm_|IH2&Cd6K zPVr!1Y-a{UufF(!WZ{SC+3Ual}zeUiN?kovAf+hDZ)j2OSQ7UD$O$0MMNu*Fo zDGLVgU4Oi~ihf+wKltYLzkmCue|!D?o3Wpj++;d|MYK>#u`+c+sLW`kGMR8)u7CE6 zA74Ip_kH%ygWvyqzmxw%NV|FePl&VppW+$hf147XKE(Pq>Ai2}GkJKq5YjBT)Q3}f z%m`TC)-cJ~LK6qwPEt3uf5Rq(X>KJHaSB=7G?NRzi~Ypx-?9l2bYoq{g``g7M(t>u zI~m!D@L-j4u~1%s%_)yS!m@vW#@6|7EKD^1Et{%UpoQ*jH6bMUX#18}wNvi~L5UH#7`4Deb1pW*<<+XVzQ^p_x8E%(6M%fiX;g)h3wb6d zJ?LrK|2+=C{3dJL`^X!s4QGX7xmURoX~vCDg;q?0`ZA5ZzljF4KmL!_%AV!_6b}qc z$rG1(WtnqUGn*HQ&Ptu<+^Hgc?Dn0XhkefczrSty-^Tyi+wN)jU-9!b|7*r&A&nD8 zNX3%UyHv6=cSV{fnbF?1K%gG`4?RDF&nd=#T>im(G^)SX$w^-Ypl$T zlZBAShCrfgrFbnZBsE=#qf6DTWUGJ>Q;;fnjfJGx<00J%!sM&wlRpC1-Ck4cv60J+ zjkychWO~Uh5@v=>#GPuA1Q1i@4#r^;F@Y;6WNxg|O)Vj(qE@L#hpLz$j=N&Yj(o+K zi^YW?!qAXZnAC_p(oVJta5L$iakv(DA>{l!z6Xn=@~##~#KSu+^yDMMS>Wx|YE3mu zsXc)+AuXvzObH!(lvJ-`Oq#&uds z<8-F-EY%rg6O$;0GUQZN9vd}-8&qDTupp%sX))eTt-r<81Z}2*{HXaLNL!Q{_SfFZ zO!6b>GU)Hi|6biDm%Tv28heIAmZ{pAaN%Muu)#5nJX;nLU0mOW|ExgLR*omEMpHKz*g2G z%29s>xosua-&?tl2>bc6b4(F-^S#ur2xIKvED7E~>*Zr$IQ^IBNic{2VXT1!E4u_w zKjvY(Di$JAprZ*N59Ay*F)Yoz5^sC3c%3N`Ucnza3O=ZuFDQc z=mzK-A46T^TVU7t9=K~0BvflAbImgkQYlKF3hz@ca_|^snmhgwDmLuVge2|U1QBf| zTLmU<;xt0~0Gl|or1UtOI4Gv~(2du7O6Ue69QV^DbS@?wh@`LgaHOj+mtJf-mU;s)p8h2 zMrN!q^6(8C18W@BY!KZnGO+YY8D@&|P!$3UV9g#ufxCqVwo~WhlglHx`5H92G*vJ9 zrAE#Pn)Nn#&gi~#1W`6Ax3)IXTv=M zXpm;HLVRToehg$m<}44*@Ysx2*~bSoe^lCldhMc3=sH82)AbV9$#jZM+O2M{cSqW< zK6Jf1WV?DIG^U&naW0Pl_ZSWqa4Tb}y$w5Um?KF=bG*tyPq4b=!AqTt6|Sl>OpuVS zYoVNQQLEH|_0Kk}e>P_Qvn|#?`yAK=Twor;fQXRPnDhj;+)B0zU~+fNfs#$s!Q;^i zc;=hXgA)=9bVa8-olwxmO#J@4Gc65INd9ypW0$!0(VjPBvGNjKWPaCtYwga3(3J%Elpxg*F4ag`XVq`DrNzoK&?PAChF>d)G_0 z3QRKdU4@c*d?SA!H0VYSAKu1)WWaSaP>jO^C8QXz&Xd7MxyUg?tR7Vk)qkBkSnOml z*&PU(tkZQZl(RN!m3nfZ>!+m|a73rVv3o=~clEd+t`p5yQx0F7*?r`r*F9(k9vK3i zPOZ_g!K1dN^@`LDj&5f7bhv zS?`Buz5iUO27=lk*C`~)r3!kbm24H5uw#DK+F-?XZknj@Cc`WB=`0o#&wQRORRxvvgp5 z;$9GjO)(QWYY6e5gTC}cG=m8+k;!hwv|_a1#Ays5tBHsJUq6_Mz$+IbSm4J%6DdVw z7a9s#9$E%pI&4R)>_AU%#31vrAY{HJ3YpIiLmoWAl37xUlo^rdQl`A*xSyU`AymoA z(%GX2TP-e(3mbu)f#c&$D^Y(_IX$DBM>VC2wm=++=Z>rqB?o1}#$~X#=}mazOYuBA)qJ$TQy(^UP-lJr4?h z0tUUcT#BqM8V>(sg} zghx2D#yi!t5I}zxcl%1^Mz}K{rGoCiJ##;q(|(eGd9Rk*GqUVaJA;Ja<`z1-817*z z!X;s1dGL-h#-tgl6a^7Um(cdoF;`TNK}%UcgQ8B!A+g+L{fu(^9%X0H$`JX2Vqlh5 z2Yw~#Fl^1jassUf!vcDcM1(eg9rwf&XB`?m4jG(CpTa7L_L2`~h&Tf2ytCE*Aa*WP z>@2OpoOUQ7%j3WS=&^y_!n=EWbH0x41#P@NtGA7@WQ+&8D}xdG4c(QooX#W_m?Ml1 zvM>eKGY^DUI8ve^yt2{<`l}-lURfoHPnHO;@P}DLcx9ytjUvLUcEO=A#$9T9ltH)u z_CX7Rb9BTM)&tDc%Rxxj^lR?$<0T%%--~7?XsV#hI_ZZ3%haw(Ip#ZVygjeaFhWmJ zOr^3*jh8o|qbyhyCel_@5CWJp-iCWY6k=JWt2CzBWD&D*>2(89l3eSX;kg^-=5i#Hu&hM zWDInqq*WCa0Zv&@_lr13T_5Hw=Yl4!qZQPH#uCusp29p}6r2c#AE`Hte&MtZqW~Bc zHcT*D02DeXJA)GtRLsGVAvz4d45I*IXJwe$F!~@@VY?Z|BI=YJ7?F(|Q+({o6yI`Z zitll0YD)OH);@6}XK87{%*RMo&2r8lA&XobIea|0^mHg4k~EaTzi%a51ty(ZudVze zomwAi<{xx!-EsJZVpxc1Tip82n;%BcuQJ%%d4YiUrrTrS*AIGXW36=S@c&GwdZtr7)2W{6RL^v(pVNSz=~T~j zs%JXYr!k(NC!OjE(7Df?s%K8sGpFir^cmrQY@+fmcgB2QuC}wk%;JAJ^FN*FDSXOp zsb%SkB7uPwQX8oghb%v~Ob15u{QM(575_tD_6Z%Q#mn_CkPpOMmr24)X%*)tGb+n< z$(0vHW=mTr2CD*JF9sEp+%EYSw#WY_krv`C|EG8c`CkJzQs7}*k9?fuIoX_qB)rM~ zI^nHv=5xOazu-h?dggmO<}*$I=Vg|rWg$HiK1of^F;KOzX=!y*aIQB*zVqyoe=U0a zFT!wjmj9DHgYw@)Is9;YlNEP&tLt||V!yrcY-tyYBcZZzyP0mqIK3oZPQ6U7ldE5T zEpG9HKd3L$2?U1FsOj1S>m}4}Q+{?P1pWm`H zk^epUc>hzI4Kk5ln=Ij0`CJL^iiGExDRgQelM2;Y5O&Bv7s~eazcK7A|EGAy`QK^S zo7`RUskqE;iyTz>D!IBFrGVe@>g=__A~UyGaK`My>>}u%zyrU1mRGBTbztu5OuIBS zrSYYA#_GZ(KFORiT92&`Qes=JQoEZvflK`A=H2SLXL-=9lmB?a0;Pf^h*WGaKy1e2 zED{+@MPkBOy;>*!ZIu7S&HW#jp}&j&`zUD}`ENQ)QKZ{K_-k^$!#)q?DSj8ZZ)>Y! z>GM=4LYpuR!Z&k!Z z50r&G40hxHG15GcCsKK7B+q|*clP2rVFOCe@C#;+F|yRi2KHPQ*YoVB;cKkR1@v^6 z{i;*43GZneTp1aqqO4R3K9J&#o^G4p)0u#|E>7 zkJ1ZOPEB>}LYWSiRq~Ji|2*rT7UN4*<;kd9&-dRP$MZ67`a5?KNm1Xf&G&Wj`Wl`C zlH%GVq*I`c{58+-K45Bdm8bRBOpjm?PY{j!_S^6=Yh!PH_06~6|3C^Dopy~SShH48 zyH%RB?ZBS<(v4jNk7&;>kG^^jRPHwsMDe5ig!~2&l2K7jNs*D%7S4ZnuP#*y zM5#Zyb>HcuJV3R`J$A76kpP82dcQUgP@xS_ssNE!*!lDUYP2kN z_i7yG`ykYsa-tkOIMnV`mDA>^$9g@~|5j7t6bSK^ql1k_eXu0&*T4rafDg_b8?4Ot zV?&1LNQITzzMmua3~;+L-x;E;e%tA4XWUNIRaF|Z{m|V46P_B8#OEktb{pd@3W`D!PF1 zq>qo$Slp8gt3&tjc!@az3V0MT<_G{M9+XC%Zw5#b6o5VLT%(^^=3!hdg3;KZl>n+c zWswh$r6nTZo_hfsM1-N8pNEd=AxA6#jsW?C0YySDgr*33v1J~5e;}vaa!rILf#|Fb zNDKJtUY=sW!_bSNDJW=B6F_yGLIZe-b-*?ATwoXu1P0{O&_ZI_)0z?kunY+S91FY< z*cUeP3A(aHq6ph(xQQ)=AQN;FUU185lG|$p=()8d^pH$gt#9e*hsf0M0@zJhc7wl> zy^dh$EM>SZC*ia=XCwAbTMjRSW$*f2YIA<@ zRzQYmSq4V!`?p_?jm{O>AFJ2y1mRFp7*Pjrw(b@x;J;nWeV^{X1;ko>K6$G1D|xKq4Q{Wqg|vBwkjb_&tTe(gtV;J&FT+FI6}+$+Euzds z6I`r;2CxsQ5D)hGx9+sbVQJx*$)Re4$UgiF`Erz}1~zmAww4o99sc!obv!F4he?%R z9BN<3DprAvrQ|G&gCJ1S#3D^2pK6sv7{euqmP&1)D-gX(ofUVMK>{xW=W zr2xrRT!W>U9Fqww?=PGC{a*X3=aKrR=k2)+d)}TsTHZT2>cZJaR6xyllN@0eGP|eH ziAC?Y6MFAx{nLIno7gS*{sDOdyo5WL7Xaw~-kyhohnK0*)OdTfsC;>Gx!2+q@JYy@ z_M2mqg8_^neZ5elt*`drzJG8;-a?tT8|lz6KYr=$!(IbX=2+PNScZkMzc`3dlC_ze zsd<+7?e@ry=jQGFksF>(X?%rSnnuvN`Mh7BBTZX#m4z(R>q*)+Y;R85;khtUn~N6e z%TZo|0N&0C{c-Vo9}m>}Q!|2*Z>LX?TpAmPC7tU#)2?2ph34nO^Ve$bc!Rw0gSt8c z^zQF%_jw4I57^Ff)lW_L8@}3(rvRRYmc4pT{0&6!0(J`*1zeru=^(E7c#c=tL&WJK zqrGtK|I(7@e{I>?hNZT*!<7)X<`v*^K4}g9d(tiV5?b3oxKVIcZ7la4Fmk6H$OO*3 zZ$q*FGS~a&3hB^mxx@87w=%^-?_DLZnoeh!))ed9V~CKe_xhO5lA{wLK+l z`R?$l$o0N;7J#qacE~QWtsRd$&t0sxx1=fC7uQOsR|r-;Ox#j8AL`8rodHjk*S*g6 z^Rt!#q1N^&c8YS`&2hU>w>zXh>At8RZGXsXC$*b1oU6XYb6t058fqjJ_hM|ui2+Qe zPU#6`k`9e6li$#;7 zs*17geB%+MJr}>PPFL?_K{?HC36`R0YVb_BD$2u~J$~7|=`E11+p~AV_e~SePYL5U zVXtvsKmNF}zUag0)57`^|5J!{`}kwVI;{MkCdwB8uknq~K4xUwXP+dt7a_0FZ67`g zz85#`Rzhpmd?$3xpLayr`R9JCM3WT-im%--+-!h;$=Ynz=~|PoISF{Ou&2S(thr-5 zb!G2e%els5m5DJL#6oNZw@7$SP8#vvov@%siBY`=8s(k3KqkEljcO`%Bq~RPQGW7H z_1@ZFxaDI`WN6?f^bTjelZ6wLTVF9;D+6t=h5%1KKEF}i3B^rr)JN)+sLy%q_jv0t zq4gFaI$jT0tv*;&xHq&y8EJriIz-gBVr6qCguVO#8igzDKbtkYYdYiHOU$ijUcJgE z7pBB)>$HEju>Yd|qW&KbLMC?le~*z?+J6998{!XcQht@;$J#RQV*8196h8C(IzrdI z&B4&G$s$vK1y7zeFx#1CH6SeX02YSk3G&}X3wXu&UvD?}YNN^Af;VP`l|J)Rr8s~c`l$(J;71wN35|?NqP0|(0Bsz@Kn~EpXA`vkdT23X z%p$mdgC~uAu?RFz(;(&CWHO4fG|ha2gilf#X27VyI;(TEj~6iihzRB&x(UTwSeD)+ z?C8oFTlikYy)cxh!n6Uj@a~{xz7Q-+{1iZpBu%2kPXZyOiZiVewQjbN(v9d4e>aY3 zjJfxSCT0j64jTk+i(&H+eh=bMXr4(Bx}?#8VsRi~ZusjGmCaNZ8ALZ9EF?%!aSvrDVe zcJ|-CRupD7#z01a)gNXy;QN55k;IkDWUaf8>DBq|Ha6`4{7~HT|3i2F{~jkj{p;)T zh+LU+nimu2Qk9rVS~!I|XEce2(i5#l#RNY#7rnpYS#@JJikjHVtVUn{{aZZSwq~MF zmf4AZiwu*e(;?&>Voo#{h1wWv3`B3~zgZr;%71U*C43G0ezn!&VL~KeVUEHp`*)_Pg2w7T+Q=oI7EQfq94~d%MK5FeB`MwA!W}7u16I z@?aiM<8Cf6t_gk72Wge`F-(;NM6veQJ`}C7tBvS!D~`{)Fg`1y z_;iB!tPZC0S(4$umEm+42L7N{KRd2NWcobpUbQc`36{yC@IixR-k{iaQFLI-{m!8> zm$Js%$T_#dF0YHaydvoG?U>8&yayAR&>&}~!snR+K^=C3I+mf<%mA@6_OQ{JsN)w} zGY}Jg_o{xi4I@Pl%0?Dp?cv>)v6$GqM_gS-mU1@P7=&pd{Lk&^it9oLEf&33;2;~( z9HRrtfvoL4>@{JM*+6RU2G%83=X%GWLAF7xH@0RXaoa@moX;;i!Ip;G`P&{02g5I) z7n5_ewtP=A#-{IoOayaZ(D)p-%T)Y%KNy5nZ zObP9$I%R?88I$RHm!P}!k)+3<|Az6;sDH!%JO17Ie|(g*-v8qboz212RI|$_{>UXd z)+yIIf!wD2y}u3eFz}@GB=^1e0lp1BjQc_!qyIuqMdQD4n{)a52YG4aSWQL3H~>jG zi>V5OC<|o9ViCbuOxAr$l3qkT^aRQLox{cdyfhd#N?a}$5M3U^8RbW5f98 zV!{7E`hSEQe>eUgBcc8F3JxI0Pky#a)<2V;%~E?lG&ZX#%c6W`EnLxx&8zb)VWiqm zbs7d~%4N!Z5e8u_;5XGuC#fA-8I>7->`9p;1(WlmVj#BPa$ zfRPjVzDcN3T8fa#AX6D-BJr7ywrLQ3>N)J1*B}{h*RbzP6J}b(3}jB8qR-Ye^I4LZ zB!x}kRupv&I~?Dk=|HeRYMtrCry)~OBskA#gzJ{%vGP|m?d-9!Rsf;}WOH)~0|v^J zhy+kFNNF6ZP)V7kut!KaQ(HBcPhh4QjqHA7izY)6L{Xwtl*WlnluvoeqcBu)7{!{d z;@!n2fsd-j$8)K3-T zfuBgpGcApX_=-l|CbDj`-b8Mm3o;&tl4+VKuF?!fr^!MS!QLp%M5x2IttY=6edsy) zG1EtJ{ww+I^Ix_*|9y;9>;K<6d{{IlogY5n^Ld0>-`B91Q)7&u1fgN6Hoh`Cl+q+g zETUKI!b0xSN01(a{&(L0`^?|P|9PAg1YE>A=0TbSnT}YZK@?CT(5Vcx2!am{-!8r1 z^g!|d*3R>H9{*eh;ZFbWQBoi?6LAy3{z7DFO5t9?)+#kTrD>EU9~!=0dcW!B`G4?{ zoc{~H8~=}ybS7h!Ne%125!%-o)6AqaPJEc|RTO<__;%_2rjKI(ztjKvU}I#4hDW}#&)LUm^AK(kpkb03|>yZx;|6q=(}`( z?;M?2=NZ{|`9J^M6&#Gr2wA6CrIaKj*&;ay^*N z66n`H^~AyP@gBa}YqAp3W}KSpSyh#JGOGX_dq%qF)wz#s=C@Dqe}jtJopIwR_o+77 zbbi}DPV+JaQXvDC`M5{Y*UpRmwf!lNdsdNgLovRjobT)mZk2S*ifsJjXf}6}eLFp! zP0fOF&1V+C+E7YR{I{lfTMZzNs0MRCSk+LhqerR&>WL`+>ygBq=Mx9lCBQXk{WIh2 zqi?;KRm(cpwmF16YhJf8MEb&`7tssq^~F`xTWavJV8PRG{JWuzi?zovW#4*hp4R1- zp&TtQ*3jWaKKU5QFwQ3{=+J%hpoI7k6wrD3tSqe??Db&Y4Kx?}rw@zK)&H~iG(d7x zWp2PaCxwHP@)kL z4v~`s6v31SoN^+d++FUd^C$t2La=}U;=y4dmBLey!`%11?wReLoxh!#>~3T_mF@Ss z-*mrz@B4l4`_bN6OPDX6C)b+z+L}_m+1@6dMXEp69~EkMwko)=X~WC(z{PcI3aF&7 z)&-O5P?8yj6-#6K*)UK(l7Do?{TR*#uoY?K^76$qoXaj;1?Igx$yDKjV6G0~;^N6P zhfDP0j`|bBWKz-+{-qeblNQqwXDQjSqE=rb-b0;-Q`=d^e7o6hLjZuGdW{}z+yZY z$?_y;qkJUM`LDysO9>7b`o+gZMKSDxve{y)0c*y2p3#!~ys$0%uDen6-4Ist?>dNF ztrNU;C;lq)ggu%*C1GvEg2*zYf#~AlvCY$?B(jo{$fhZYY>ko->KliQz?x+rx5PIl zMpdeTc35BA1XU5neB$uf`rNilBQTjFavNqqhJj8X31FZgXb<}&T$RSva?7dIK~+)* zRfjsL>eNAXo;rjDTVRayfEPqQFEx`n8;SyvTACbHdM{81HHrIVk|InNC-19ikp?pd zD1)AT!k{`x7bc1@F4H3ns**6MrU`>;i!fO2i%Gg*C9>=iSpadKm8pVdzM^dtg#_~n zN+D&sV2!IKbifKP+iogV(3Mm{*P#l!I#tk}rwRhZeIr6ng=9IYf_$j*5qt{`fc%== z-jEr}NH5BSV6s%cIW2;~<^VxxBiv7?2tw!RL2(ch!-NADjSfvS;*YMR3c6{kpj%Wt zfE)O8i+`_*;J~*E2##rLp6AHs==FIA(&o} zg$@!1YEbQW!M3o3`0P=fm2`3PKCMk1QkY?Q2{9OL9W~O60&aZpPs5d+3}Ew0oM3fu zqT;8mMZrSOheJlR&vc(tsBwh_lh#v@B03}ksxgDNb;>X192f0I!?N7xGI=y6J!b&# z_+o`(Gj>b5esK5VOyjA*FDijw)B%1`9r#6)EOQ#sJo1!BKth;eT#%q(O^%a7Xrf#g zeII4;~~zw zM+3K2Wr{$J^nn#S5}@NXKEu3h<0|a1K3U~;29bAytTGrL+^69h&V5)_$c`|YAPgc< zS5!|xZuStu;*wClv2l?r994!(O4^gu*D~gB$(Ob<#tdZ_d^DV`N2&B#`PoplZZ(r} z3o?k8ZCo`XVZ}b@V6dsUK2E}y3S~PPwU&4;D{*;GlSxr!Pjdx^S1PqCu!6+I7g${~ z1focB3~eP47fYYIP!arBxu1(oV(W_7xFWfX4NEbA6{)(Bi+i!9U4ArPSdiVBEgNCD zSg>&@Si7K-?j9b^1?&=QS%dKVW57oXJdU2cQE%FEEwAl?RR>Rm(QV+~&BwsSYtv;WrJNwjpW-DlfG?|9LBOb*d)TyMj-=oC~socX1SrrKcbbHUl_PQxgpkpL_5>JLRpJi?r%sFfcT-KF-El)`~IB zXBL)X*$}@5z-Md-DB1|fDKJsqpqs%Ht6jxw#&FQ`ILlVn;Oj7G3#fb?pKS=J34K+sGUZ#V zwUE6GlpN@_R8_CRSAibGj0BYjN=ymHK%WD3(o$vN8$bu)L|9pMOtw@Ep0ibtNyf5- z+APnGzSFB~;hoc3nh2-9&mD8Z|F0YWXV#AP;=gDf0A7ZL9HSA;8Q~GJGN&z2>>$U2 z{6N1{G5_`PpAjk56#qZkjsG(v#~-i%U!8sT8r$Imqrs*qy-8gNiW|pAqB?GY zig&#NyIz4^ufPUJ*DJ8=71-=VbiD#=^|tF3*s52cWL3NZ6|e6UNa@UY1$ItQ>4>u+ zy4iRV&DYAMIqfbunN`slc~WW9rRir?oJCX5SvK_4ov`z)4VrV;Q!%UTmJF8_)w#U1 zQbm%myp>Xhc@l;J;aY_S(P8^U^iorvJ8^|Jqm$?4a$|p2Mv~mFY}VXenbu{~r}n*F zD}ZT^dnlswA#rApeQ4k$oXMjzeL@pqEE?fV_*uI?1Nb0kekqX7*`yM`z`4L^XUIC) zXx0sX<3z10 z7>$cY`nm)7gwL@$!6$B$O8k7Q6MRZHnsb(ef-7G-$o8q~6U_Jmx+_`r zU9-Wi*`C!DMnun?EeHMq9Xr~ z7F2cZe`ezN#nI96XaGKPY<#rB)(5|?M97I49-Acb zl0faC6eslwFjM>k4e=!1qFZOJf67ZrZX`&>9^+I#3qQy0-5lHI;nbK(&opi zBioHa!GMwSd7s*9@t=Ba27Tdr^zr&35ZEZ3O0y< z6>yN|`8L_+lhQ5dx4(}F4>F>(kEoJL`~ob-`-rJV zRhQ*wTZZW#tsiys|74Wyfj|^^l(UQ~5hxoLs1Pay#j9WfVnNx8YNdQ?B>xML`LpuB zQiONq|Cu=68S;PD8Vk+1$A?RcNg$byMk96Peo8WOzpg3wJEr4FJ*VY<$!o~{jmM}n z=7k*Od{sWrX?fp8zaphDSaA$V!qTPk&1R&2s%1yz{)Tp0RbJhO%wH8Wnw8{42TTjg zP&k(?31=;$A#PC9Smopn3^`4gO84;GIFccVe(eKDOMwh$Th^9w%q$SKLB2LJ7Js?* zIZcYd5_v~N?btvk5w(*FirR585w#~9O*JuM^@pl?Ypm9W$|`5a2xG%^pT)EWE~cp# z9)?;&Gal<99JvB!XArK$fFDx#GpRkaM2f+*?U-cN`r5#wG{%>+)aN#Nu4lP#V=7Ig zmu}Y8UZx!W(%2F(zj0_Z3jN{1z2Knv7`={i8iuu1WC3siJKw{IN2 z;J5q#XyFb2cEP%Hx3B8^-1+v+{qNuW*scqo*tzGq%l16@9}};?Fz@C*?}WonzU0xJ zhh25RE%UD1blyuhZn}qGeA)IVKm9kG{%*}%YhT*>?C-Wdd*cJ=tvsyf)WJLFd1t@4 zcKD#4t0!Ln!2}6S3S4oxJ%#iP0{=H@IStC;>!L{_J8w$ zRqtBy%8vZ1Z_ZzI$Qj{}cg{cfnydU}PaS;v7nbbbbK&RLT>kbC7vFrv&K0-z9k=?9 z2bMqe&_~V-?<#Ixe#*(ArpDjQ0XSbQL`8@~U`h|loIqsVI%f>hD+4PlXZrE}6 zQ=3-3FnH-_&ibc6|I79FKU_HP$R}?6)}8lW@qrr--}UgW+wXew_GLF*bnUs9y!`a9 z7V^VhdgQ}BZ+z^HJ$oJ-S^UPkAAj?>H!nZ<_PZVWn*_tf^tQ>$b*odmCZI5tlp`S5Lfo2QoB(jspeDKKdYLNH5()|4tyh?vR=S+e@7B0e<2 zf2nlE{*RPh{cmQDGXGEcuH($-Gw}x2C%Z82R-w2t8rV3LM>F8Tl627O&l|}O^#uT? zdxeXQQ|BS9EPyoS4W0q}k}G%^1bJn0d8tq`%>fSNjSTbJ5JLkd>vWT8?5NPT)X_O6 zsnoFlL>JM4U@+LYc}p~c7fvsZ^$+Dwj|R`c76H#ixqynuvQSgaEe*8DfZ7*prR_MkJG6{GW+K2y61j285|7%nJ?kCuJl!0yvR8n(h8|kG*@ehW`Vl zMT3D9n%6w0jsFbTzwYAyOdKIIvXIYNLqf|r1>P2fMA(95#>!k^X1jmgWA7d<_f;r|qyw950NbJ*&pds2;`mw5ekGwktI2f2kxk zo;?RlDO!JjO=xK{)@$P0hnZzt?LrDJ_Zc@#VWWUjVYM^`U6712sDxbV9Od~uV0p%5u7mD>wEguq?6I7Hxo0TVOod1>Oc2rRE5ISc0)>0Wt>li~Hbm zC$|a81D`C8Z5VI^Q5-A`&2{5-M$vd3>7eREFu?GM#u<`pOs`Fdj~TGFi?~SPQ*GOc zpwaHzJq%z@dyFXOh>9RfFuS(#G5RdgzSds0?NoDiSxFXT9kL*+lLfg?dS^??oq4*V zo-1lsR3=+YHE_j-6hW%QUs|G-{j9ibE1Ix2VOsA(N4&P>6l8238)a+Qhzn{sdUfM+>_eI0abwr$aX`uY6D#da3em~o;1ceYrtm-3pMKQap4o_L%QWu)K-kkASv-Ws28OJW6Lf-e{-j0{~Ihb(CrL?lZZR3%waO;Z)sB2_UyQUZzO z0;q~{o@uTIR0T;uxdu3i5anv^@_Bd`I(uONZUof0Hu)Y`#GLAEIo&2MHzWsKl_CfcHe0M- za8vdfwX`GL9^Nz(3zF7NKd)dZQQB+i-sHlUYqB@F-4xy-$ z1!b8q)Dk0dI&VM%H&&`Z8)1kDI*p=0xNIzkVUfl%nWQ{hPBpQrDg4wW#n|Ebtm7x) z9l=lJ*)eX0(O6L2I8F2v(@Ba@@zd7OlL?=xcrGQNCy#>~VfatsaS$Z5yUBrpc^uf8 zMC4_Nwe8|32uV!GFD6I{xZ~4KU#IR>+$qKuR0J>ExRKlU6um|^J&3KTH8_Zv3jzfZ z21E|{J&LeSzppSd#`q`5=8<80ob))Q@3}` zyri#_ME`Z&|0@%e)>zPhoAj!QrO5yE!G+(${TB}z-T@5H#1=CSud#Y zD^=v9*)JM6?9hT?^`M4ra$S{dD=UW8!Ae`kDjjT=Pw;sj!`Egpd@J5;?H8znq3UBT z2^6iw^$jRVB-oAl!ju(O<_qkrWVW8LGGELObmuq^IZ#AD3fP3tjthIliO`-olph+X@LUHgb#`-ok?%?8~^?Ak}{ z+DGhq8twTTj@b18C&~6oFM$A_M?0Zp9Tu$Z{^h|oj4$;4!hH1o0$i)K$t=c_ zZi(e8NxI6Bjz=pTpO}A|{q?Zd+Wx;H9)Pw09ACsTVv(XAiHYDGc)pN{$7VeK%wG5K z|G|Sj|9_M#i9;`n6lY180?$aJB;cN}0~HhQQ?bmg%l`TuTyD?pefcsUUcQ8R+ym9I zYW(|*OnCu5_i;+`U(U-1!e{3CgOC4G|G#IPZAuwSc|v{T4^H8lbwCA=Qxe4tW~57m z!v1;^*JHH*=KlYDFWCG4ew2%dDCVgkVU)6%^3>NXpmC@O@p%kQ^0D#TUk`gNjsG|u z{C60F3PPX5AeSuE45k8-F_y$$0@F^)!z2wFtbgFTQcOHh* zn~B0XlPX`W6CGCUH2&s2TsLeTpmj>;MSGI>VHcm;H81~zk0Ad&KfELV+1~%}qg;FW z-<1C%Y|4Kk7RrAS;tvr|TK?l^=|__PBmkO_`uF3?|9*ea6#p+@zIp`d?@Qx$OEgm} zrGG>G3c0QLZHj*+K`H&~&)*B>{dMPZdt+Tpt}n#(tr;EV$JTF^m{%RT2U%76@g<*L3B>}_)W?d#q--WH*tpW*{pmGj6@pSrmF?RCQiB0D0SNjSy7-*CN^hb9Q4wF&8g$_UE zP&L4npYLXQuf(9MEM>d#c-*svV!M6w-Pa3SZQ8B{;0oBZwQ3ny&jQ%?IUbMVkI_c6 zsI1?^X7fFM<5um^PUWUM?k;Fc$4;*pT=y*PE(}p$!=LA%CEM6n=k~;P?|YjC#&2($ z+X_^k$M?xSH-Zv1`gs6~ez(XkFZ+52C8i^FiG8OV=hwGgdo*MR#bQr01G|fDvx5Rn zOaldkyupu;cTl3~Vw)FZDc@Cnz-Oo|J~%8lD#{+LDEUIk7XDhc#5pv?SGFBY_?l-e zuwO$zcm@67t?dR2;l8h$0e7!02756j?pvVkLb$g`vhr=?Qyb%UsBVgp*6R=5H7GvP zIE}kUQEk$RgUldn)f1rj&hp^HS*y#w=;Bn7NQdMGB zWhiwdgs=3bHf?EY+-eqDpH=t=D9+9}pNwMdfOP*`R(v~&nuh@U3L|8hj~nKwYk`O# z<|CB6BPhpmp}WT?2{ZrevwuOu<3nH$@tKokMyCS7cI*IK$orE*pEyN+ee8HAPLz)l z&}c9@!i*;MD{%2dzdLrMJUMXGC{x|5EJ^ebt!I48+$lrKARTd6XDX1?@5@Qo%=p@MMp}PJLp=@>j>$F&Ez>cw}Ui6 z2;#Y{!v#W2ljjIcIvl_pbc`2tc<9n*63XCErSM$opl3JM5!^u3NmGmLNRCBQ&kX@T zAE9Xgg`h9OIy6l@8I6oc=;L&%q0pJm0|G+>1yo0`Q z9DuVxY;pu=<|RAn6g13f}0j(AW3Cb0}i`#?SdRT5}m zAil>9CZ>D(i1#@8iK#(>`4$Qj%c0K?!U@n-A9RTV$S>Zr3?&o8>3RDV`KUvXJ zmxD3`57?QN1QV?>*8M*2Y&1(*xRL_**D6WMdtk?36js_nVpOpoD+!JPd*n9Av%e@3 zdqi@S{{(X#)z2=6Qz>B!?DlnvQov<;U~@S&YGpp03?DS6n+B!_K&FmfksuzuVq||x zG2Ansf(Zj?2&IRKgTmUxaU2y$hr4TKGbX8WrE9s$-usL5Wj~8GOz0e#S`Kw_{6FuC z)5&Of92MEsaY7TRqzaj2jQFVx!%#6TgE$t{OH?Fi6tYmt&(z@hBpIIScQBUR;$7jq zdhyozORtQ*h3XoJV&~Kuf_Q&Z-5(v)uMRp+d2`S?v;c>lLt~!Cu!{{myGRNsc{9xs zW+9V%DxH{h!7ll9L>>11f8;72xuCC*@80is8ThaFTrI;rZ9b?2~Dm9MX^4{N%b zFqVHls!S};To^&g?M#WLybGK8=-G+$0rGrU*$!3b#|Wuim}?-(Y!@~^ro+P6pB==g z$r|8_HBYjxnI4((T)mw>vct2=jjwP@Qz=^W&%33~X&L}?24s9YjO&Wc%~?G>XGUt3 zsIk88X9XzWHBaac@?X1XeCv*NA4a}mpP;!^?gm;uu4`SZ95iaEem;KxTHHI{W8e5r z-Mj_z9v#juB|#^H?qzz<>*_PB{5#5Q;$$#T zquYbVH1pH?%mS49U7bdK&H3z8P!dlXupo8113idfwt8^(51f@jKeVuOV|fM-Yvev_ zz9=6pwDTIiHqYd2X>}8nMKw54rL5Q&7Slw>efw_I#0uIRFam8P&QY;}o`hlXuE=zc zNIto)$Osg$oUJBR*;Gy9nY{o_3SN;jql#EXq)|U0mKAz%Jk5<{DAB1wUI2)7JY}>b z3{-5~#NCv)M%$~4z{U!_6I>zFGjdsWV9yf zHzmh5q)!z0m{4gfg^)b;I8A6uBN0iT!5jJXNWU6m3k@pL==Q>Hwp@$so04K1vQx#l z3OFZ8;0ur?f-(}wI0E7AB_dQ$kL;^4w$N%)T;-#+2)-#1wjnr+JmJv*{wYNw9ePkL zQ6i!~OKC{h(*Aco?TD2*f|f-{P0Di36;Jprwc8|I%H)mLL|q5Jvp@?ulc zZ%U4>7(17tR=yWYDPTH~cs!xf5BwlaS;EN^?C`5GZYTXkX@|H#TKKLM8{ocol-+KXaOK>?{`ew_M=)h}Kj!b#JsHku<7D_f2(^rNJounV^XNoq)GX;wjE$ydLV(jfiXBPCVk>k0ZHbD!ol6CAu&1Swjr2(6VAny6%Yq^BV#mO zgP?=^xqb6W*iG6sU`vqj`JqCV3>DHoRLC9o3JZ0ENs;x(<%B@8n5Hroo(R1pR78`+ z3;l$oQ5brPrn~jHK(I-0z?p;@gEWxMRQ+6v_NhBx?^va<8H2VZVhh)ewHMtUx{>1{`v zwBy~EX8XJ3jT+1inI>h+09#Hjx`bS02jn7wZ=!Kq)gB9vDM%|?6v0n4;QGK zvp+6U%2~`r6oqLhQz=5ubf~0?MG!Jp$ACg_V$0`$s0y=r|Gy#M`~P~B>kl^nGyS-s zyIy9)xk(?CfFYI5jy^`F6TxaP`$3af{*I@32zqP=Bc2+uAsjITCo0*e2j*n5zOmba z%~tdIbDU>i{OO1Dub;nt{=+9O%AxW^kC8L)OKyJbjC6A1e3*qOg}@w;38q)U|M=tC z^!U#5P3coK@XQC+Gj>j$Y8$x=%HTJBjmhy>w{O)YZa_Ucyu`x@S?U~F_|HDG8Qs1f zUKUsOXaibBkFd<_)H}((XabyMpMP$F9H%bjhwMi;OWg4!g6}%=I>EEk(?fi7Sb;iD z4LH`t^D6M@(V-FNhn*7o!~lQz1pim0D7UNEF$5Exj#~nI#@Q(DmvOZ*5^8LNj>k6Y zIB0^rH6G|}Hqw%hE{G(0SqBU^QOK9XTHP*GYhBDnAzQ1U>31Tw&b?R^u(hmnQP|e< zb$u4J8+5!Yfl*n58*#84Xr!LBRh6Qx%h+v7qZi^FG*k7ujgHt^dtoGXlQ7S1(BbDkj6*P!E<;6@s-?e7}6bB=GW>qD~x~Z+u`qL&7y+2qO|={ z&Rtp=<7gCIe{_C`(IrESwhuA7{t&}iW;w9@ zP*4#OFG+(a@dFJ5jcGqgi1b2E#g0wuFmgg%$08WKz@Pq_hv8}$#v!Y^uTOU{kPIF0 z&q@|J(%y2rh&zU^0hYc4|t`>m&^Kz>%IIP5|uB!A?{rfuUpfGilv0GEN`d{; zC0nn*q34=Xj7SF^+mNzgM@qmALz+O%&J0|u342bDAF7+|(r!&_tjtdr;XTKks;+f* z!h#l^{R<2eUO}ZKWm?)y-5ed8pvO{_arH-j8hZF|e!hYr)_P!#2j%0i;rI&DZ4(uo zYh;bd`N8bWqc$>FNovZM2h|yQd)nQKz<&cI8m~Hs+3@h$%DT)1w52kfNgG9rtW_7x zN>)^6rZ96A)pIbciCU`Bu(hh!2zu0BMalnh>iPHUxhm>8X?yRWp7Gw_R^#_-c!d7u zpS4c$wzMT|HYqGW?as7t_W7cT;X=#76PS$8G+w!5c6Ixen{ED|y=U!i+s5*Heg)U< zG|ns~6AyxflX#nP+iA`wot`GUJF{ODkOXbDlBlJq#BNXi``!zX6e-h|WIK-CkWCth z1i_2@04{+0kS%K)CSVDSol|#Z!4`#M+a23>$7aX2ZKGow9j9a4ww;cR6WjK=x%U^` zhrP#osE0MiuBuhFXVv^h7)vRfy5B`)7Ut}&If?i^gZ!Y$R|9j%ZBa3fK=Ld-Q(U+4 zc87A@(VK1$`WF^(haBV-aI5Cf2e0(x|Ml~KlNPMF`0*47G59wG8Hdiu%how#TDp7L zt6I8We^@#n{#=V5#&<0?U`E=y?`~W`;=Oi0i6z`Otb#GlAGbb6JA%@05vdxo21w!l!jNC z;px3u(t22hyKe&!BXowTLoWe^)zu_(qV$R99`)1+dV$#FaCZQuKE~-xW>Xx}^Bkit ztg|i^-3t#yVGMl>Jc!|~#m7S6M-2;UBM%4-B_<8P>b%#L)O9fzSv+8+!YZmxfJem)Ff63o%@*fXs#v$llv9{XOx^5czCsVsx>+XRMB zhH;u!Y@yuz1#>_=nn9!nna%0RSzsX}HF1Zcis(`4u=_%AC%EvLZ}9!m9I+4%cnniMk5gK6v{M{ z{LcoLCV_go%^$5XtD~tmgNJ;9nDa1-A?^89_zpE~(uC*tk#0Fp8P@~30kB*s8e?i+ zQ&z)g=l}2%PGVVc%QG^wfHf{%!E?9<$-PEhuc*6Bh1tXP5j0EXL}6C=rN7R_B$O_o zt;o^xYXfjXmN7RENuc7NxdNu_kxg^%$mI&t*)l8AtS|tk4nyqzk|Z#RIVuRmF2U;F<&R0xB4lHcD5B z0B`4KHlDN6x*SAYDrG${uf@|OaM7#mh@Qlv1msy^s8g9Vk9_DU;*#vk1SR*z$%!;t@w?L$tf44;C2IleAG=lW^gw~DufuQ}9ZCwNl1M=4fzgrCP7nyN&>%M+JM($YY8MJ*Euzsbnu4e+`r@NOh1eHnBf~4fZ^B8}f zU{HRm6URO1}l~U7nkJ8TCDcfw8xOL2f`M`p5h4uV)Yk#IAE0o*r~lmxwQt zA!+A>iMSD?gNg9aLP06B3<~gk=7E91)_?$A!_sLrX=Ma4Yx;WD->9l34a}2l5sk5N z(_809gGp&MuM}XcsblMzMj_W|9C07{_XogtAUqxPJTB6+&B>sFOhQ6KPpq78mJBsS zr9TDsBT_YRyYgr6;SJ8n1jg%Ja+MsP^HD{UcU1ATdG{20D;{a#I(ybJ$h{?>Y~yeH z8hPdgG8gD%d~}+y9-2&u2+O1>@qw71bQE0dlEY!-O@oM$wria6EvF}o3uU)!3`;9o zdh_X4jAA0>pcf%x5Q!z)!&WDfteCBnXIjYzJJe(NGUH{4%HjaY-tl)9Hm67Bgb(nry%zR#y z2;?k$C1VPjPHNrx=2)~RJ`wcPlYBwbKMk$F5*;p{ulRd7Rbx3zE&fZ{6qLKsnbP{e zYW7S**O8kV`2JV&{FD~VW;@AvV(X;HzFn2-aTJ`!7dvk2+cL9cS`InsEF`ciV7LX7c}f`UDt! z9T>X1G>*8`nN8_iQ$gKldm()@$mS>IFI?9_H{kzzY?ZY2zN~v%|MNUwsc`HVQ8hu> z;wMU{jb?>sE@`Ew`^$G76RxYQ00qrQK`JfkfD&c}fnFO2#cE{Q$G=xfQ_S*wYNp6; zyufAn6N+TIB)V-C0PtMV(!wb zvF8tjNuT+^aN2m^wa?u)w!+UqJB-t(PX&OUOf#k)d;n&!xQF7Bvw~Lt{IO%=Xl}5C zonp&z-P3Omh0Q3WElv9?AH%Nmr<_E!&5k3%W1P|{^P^Fj84=$WJ}X+)CLH5mgj6f& zx_-F|4|^EZi7UZR_^M2qQTsUcCY3nG1r_(#77ILMEs>_#2WNw;P)(fuu$&f*Uys04 z9>HFTiG8)HkYTrN{iH;(!(KVzp9C0dZb~?mS3+K*??z$6?hYfyetFC`SHHA86>r?9Y+}uaiVxC)fTGfoCd5MkdV*hL z6;uRnz2E|#h(0&V4gJNBel=qO$4O}#zuQHwbowrfAGb*-CQ4&#I1k)QwoO()FU39J zWB$_5tn5CbrQ1-_)pj&InHM&4TAm1J;Cyg)Zd$))-n8a-c3~Im+Culb%)UBPsPZDM zW!oVzD|r>&33L9<0(b{whs{gW$judL zvJ?Z1Fccov^2rVt_@PyYc`}< zlz7B*N7Y-_ndxNaen^$b=eK0*1W^0Y0RNyKU8LKgj|;15HZ5IK@Dzp4I+2fj;gVrE zXv-UDP~DKhzG0ZHo_<-&D;F_=D+-dV2yjXiKcNuV1(0EsGZ1MIwt3@7k`gDtim)rl zU0Zpe$LFk1O1R^Oh3CdGNUTELPojum@hT&*bjL^zh@GL(*14qwkUwqEeT4r5e(45) z>>x42L^0*Ho1hsZI08^m9ToJ1!}1YTFW@d#SrYMgP{xQLsL|R$eI`P@+WM#KBkXpd@}iCKxHl~#e3+OMaGr)hdSU2= zMLbN#MAA!-(b;r7|@!Zvt@D@5^b(gosHXzA>*>sXurcKr(O%K{}lV z?Qejy$)YIP@?kd4Xh^^5)LD5WC|P0=t$y0ZDw=6d84U;dm;IpLH?Qi`si%b^TKs+a zGVqrXzZ$CyfY@Mmd%FR6XqR?IK2MUE7VPTHYwR=lD)R!?38Z{V?dG3&bLROKDCGDY zD3V-M2=U#2?6<09$D}k0s#&-T?#@07736%>yR|wRyqI)8xpe@YFiD#xyiJvrQ_52e zZx{`^bHQ-x*72C|%MN(Q(1wWe&!1sCAurqjMt%&opQ@5E&M|1KOiSBihqwE&cssrQGlc zzWmJ&KRGN9f46PgQ7W>!+0GNwW55m=p(*bQs$u1;ThsC~oNMi^(%-mYl}9h5RLhml zYwlX7eD2i#YfW;hG7>)Sn|CgW9t3jJYUkPU2A*`@r#^jyJ{_*SDp#t#!`>~LJ zg~tElyOe~EUYRu3#^kHxIU=E8&feK)l2wVMuBh_dE)i&m-Kj+ z2|W`Dx+~o}s&HsoK0B4u&L|wm+jM2lHh;JJORW$_EIjU2DZZeeA#4a7S2-r@x_2TY zpgkHzkptJXA)c6k&~jttNce0)DWtTa)eyaR=3|~DBb!-TSYn{dnTD`#D=NpRetcKk zYf+osP)`|trLPgR^}}D|A$w zve_qrv1;R!|8{(TzjC;F3w<}DaQ3Mqv@oLM`A~G(7admr3}Z8m(s@cu=3ZS zKmcP-|J^Qo@I0(NVF6sghEK+tiEh)+>*kbjt}uO|$uUa!Qe-Q617_t2p! z9~IgNNLO^L*x62!kNGe@PooYzR$DONs52iLd|u;T;}WjCsn;XQ&}x06ZQba;G=Jt1 zFncrZoj<`0Qk#g)ephb*blA1##%Cf==&Wq@a11WJt(pm{lU02vn*>;G%m1_Bm}1IL zkB5hp3-%7~)KFczQKb1zX`*W^ynw*5%i7GWmCN4FZ%_R!n;CpKSlWCqGel^mlA@h{9t!S(U~#Pr2B_8Q=g_J zve&#saM!KCF1pZi@i*E~E35KlDWml%$hSj^KbK9AHfC`g9`5o4o#G|+e{guYeC4vu zuFKAqawl4PzkaQ_-x6{DaIeYoLkI40alQh*Hg)2GeOeAcH>$Ka(#$$`8L)qrD3U=F zeHQEw6osq^ug77vy#kkRf*=0l;y{DiXJB{qxx`nlbOB7XiHI~QT{Ndkzat!Qjj)~dpeo~zy0jh(H#9J;D@ zg#>T+Gm%`0BRf={DJB6>L@nCA-Rt4jhbXOh_~y37*c13z+4Miv+RaQ*BXe$ipw1GX{cRQeO4VIt$6@m9b zdGSDJsx%oG*zz0cgW>Yjd2oJ8M70U2EI3s1T)dvIwfd&sij)k4sslY=F zO)8Tf?$1a2zHU6nYpBgm(C7avyvbcde0j5w=;n32M)HBb>YGL|KJ0j?{8`4Jf_Sbu z1^<4}3a0L?e{Ka~dm}nNH4;4adPFzNl3TOgB_KQaT=zL4eYxbRw6oll`77%#@^xq3 zv!Ph_9?_%7VWsiaS#UkOuM5v(-Dd6%u2p;4wW08$v12LKx^_6htU+uPU6fbR5w8m} z0!&J{Hq2%BKm~lUd~ug92<-W1u!?j9mD?TZ=Jwz)RkOc&6Y=s7w%FE}QT=#`fh46g&!KQ8$lPR)%1CXL z!oNhYet+!3FCQV{S{rp-v;PgqQM^LAU`M-(82XDsuVz)m9$h@2Sn8_)*^?afM*3ul z{{<^C@SOrg<686la)E`c^JUb)-vqiiFEMtibe$hVT#z}$uxiX7C433>&pYGaXlBEBfD2nkRB+Ku!#}IZI+Fu#A8oF1ccbjf^Tx}zxuMkkWV{YM1 z1GK#&O?7RUiWABC?g|uH6(`)%&jbVgy4r&^5Yg9c&8y8N%W)M_+pof7!nsU+D%N}? z=h`FFov{|!Lyee-lj(*<3C_llVQsN?t+_tqsL{er%c#xcL@)W1as_&)-V#n-|yhZ803x5R5l+&@H+AxYY^;5vo}{t)`tl=^m?uLVbi;$Rvd@WCD-qXuz&dxf(55{H;Z& zj2q9v&%e+&`jqpp3;!mplD6!9i9xmKx1$Bda zS^aGN4lR54&0`f@Pegy0VU_ACt$@A#QixZS${`TSM|*UZ(SG-S*SAX1O8JYGVKWv= zvvN>5W0S0oWZ73Rdmaj|8+iOmiQtpU!{q1ZWt&*1n-}`eIgBwfdSJ)$pXZj4*9;1;>3BndYt|9&24g%O)a zPu@BS5yG@*>Ua&T=W$n6)L~~ZN%97jNDOb#bCX(+O(aCS$M3goPJN)j0{$50^S zMD#e60jE};BS(!=3hTuc@dW85PgyRc;|@g;8AiZ)d74P(b=wm`b^ICYSez^IdV1P` z25{+87f!Q(Dd3~z9Jgt!)BqQ2a*k`>isef^Ub{5TJ>sFR+|KwUn=ER3v!#o9d&)~S z=VV?ot)}_mQJuI?Af?=pbs{OQj)eP|p16K?Uf12&mw^gOn^$iH3O=}rvnR+}E22|O zQo!1>acw;ds3v~`@8QkqhF&85!2_JxZsu&aBh&F;uHE^!tjDWH7DWu2;JSCglXRS# zBu62CxvgLl6=LpLh-x8jbunJsyM-tq6otm|hcC`{?huuTc-AvZf`~8kry;u^X*EGSELLG#8wLFNx^{) zK6_+8v-MbQ635yoSLyq-dDflyaq)+&t|%;I5qw2sK;@XLFrE|kOIsD(t(IDYxHjH{ zv4%Mp-I%_$7VQ|rk;Su8!sncWY69KjGq>A;45t7IM|mQv#;tQssYeAhNTJmBqRi}~ z018R6JCDjZ$bdEvJ=on_Uq@2Q;pmyW(kj2>`SjVS5vN%n;RhZEX-^H>`qTqww)|uj zAAwO+n}K`Lpdf?B?*eb|)tzsLf7v-(l;LPIc7|n#LhDdld$Z0h3)#1`a7;v@xkD>? z0AWVu2j`$1xFx>%WT;v@aR3f&FlukT@!|8$gxus%r7A{+l1fSv?Z1V;hsm}}mz8Y_ z4v$D*soplxW;*XD)n6xEXACBeZ`>TIiGd1Y8hY%%%KX1>CS@zf{IM_8T@{U9#4491 zBxBTwkRb)6`k{U&9UX=w%4}Vumz)W#!8{H=B{4P9%MU=BwmC0tbbLd| z>uKMf068#fC|p}&?NA1Ppk{6UbC|_k5z4NLA|p>N%ke0`AYReEh&P9!XavNqd8R~B7oEd9VMq=uNJ?3Zq~_~0t>#;sCQ7;5qB z377YLVt2Tu?Ibqb!YyE!XykG|o^CHzm=I@n1h)&=qnuvqef@P#_scYoBqzyv02k*tJZOJQ4A!X^@|zV_$?o2?y6~Goh)#cu>umVaF1y`YHhr3dNtRkj z{RqAEZaZs5U7=E{0-8>Ip)}UJbVJszX}Ie{V7*N6&27ER;&WtX2E`PmkGl>i+SO?mwU{>-^uD7eGPnHuM-TfZl}AR zDh$dDL^J$t%+j99Ww5NHKBG3JX;Qp=?cxGnPX@$Gnn_5d{(Xtj+c7Z|nq!>PwNh)EPT zR`GkOQb>?LVG&Z-9q2DzdOd6E0=JjTaZ=T>X}<#z`J_(Zc==D#+Dao z@`8-`TG#<%rS({xmUWdF-t$ScG$sm^NbHs%^ezOfFFRa!@%Y*FW)~)P1IS#vb&j~j znWR3P;NthuMrmFnt9(3n@iv;`Siq0$XHAlUWG2xaL==;MPm=VNx6-ThjlvIIJ-B)o ziY}01>TNUdi2nQ}Dr)rXC{og9?@Js$RdqC*N9bKGN>k1}Xv95)Wb;bc(Xb@3j2U7v z08@%=!U?N8=B`xDHo;YdpimQ1;l)$c#WG-MR~grInrmUCP2pNGKBLHC-{xn&kF~0r z*K(osQ;V{!f%5iJ>9#G~={_p;P+u)8Nt!<8FyW|T(Xe2q{hVj->?lZlqHQR^_O*09 zw5dcjo_U&GJ;`1w^M0}M?}DsnSZQyLup`pjV*E1Cb|11^FXA0?Xdy8Hwf#-fhs3gi zqZR2%5V*~_$JzL$s^vsvz-zC**}2tWI;?XsxgC!AEZGZBr|-mmqr`HMvYEZ=96w9d z;$uAd{YoAn;@9~aTRrmr7qKa`(WwS)W(3{bpICq46Riy`c#buT$1fIuo zv~mG-;8>(;F7`x})MIDmX0+6!1dy53ZD@o3jn%b4mR}_IWImEH`($1T&Oh_-yGngA zhl>lF$&26qgq+J=RRK3gtQBfnf9epVROGnsdh}1|Bi+;^71X1I7I3O$^WR64I&+x&m(Yz^`&;~DvZvsEhS_v%8ajzMqFI0XT$%ppa(OMr4X0DG zw(!`?nrGIu@Q}TU{gjJu_C3fdnaMR8wt6EVx*E3n?%HEkxZ9-hNyF?7j(ZIJB6yuT z@hefB9oPF)LWd@gp2M|z1B4FW@>UB`C`~Mum8lCKx%T>b!e6L2>81Mv`az<1PUz|; zz(32}SyDm(wU)BCBGg?&C%#it95h*nqOvDS#&)UG{ZycO%?UGcF=@pNn0eYg7~EnV zZm1y>Pbn__2is4e!tbP=qbUc;A%_$#7b$$$Z@qK|n#n>ud9F#GAW+Uk?O9#ypXeg5 zbFKP8@n&o#7cz3*lGx-an4nr+(dD3pV61-5T5`rS!^QfP+&OBDYSmvaUwa&3arzHRT z!(Njmwp_?d?Ws!6X?c)<5u_iiU%Gm-8ojQ43tUvnHZk*@dhgp>FtKyIR7%pzPILq> zWV$12raLXRf%xS^!us3 zxmh5(e17=iTw~w(f&FstOlV+(Jc*4PRG2$1jmG}bnfR2(9#eW6QDL_DXq3S5h_Si7 z5H7e5Afa`AyX?Ly7h)V^k1TuKGYAu{v{Y{Az~{UYwL*xtcthR(__9na+`5sfaPWghZjsK7<4T-=%-KtzmHPf{8Q)cazs-fq?qP!e4JA+#i zj30%!ShWw!Y_2aRuPY=3ds=CAPQB~frgP(?)NM?_B|cqTmb~@o{<1!7v^v=B#}u`7RRq-$pBK-5=o) zE}xUbz{3x+{B|vYJipqOer{P9MmJC`S3Z*~>}wW~HdRr%fDD#6`p(2Z)P0vpIE8=% zIFx3U@_N!b*lVDoOV`TRN1qwHQB5wyyocyv2kWgDtGWplhRG=GpZZe9g@K7S>7np{ zC#NTTgoR)4H`k8ep3VW@;a)euNO1pRPvf8QN+7x1U!kL;kuU=RP6jL`1?i)4d#rZ@ ztH=k1s{N-gj-$9A2F?9IJ@nW7^Ecx^vkvUBafY&nP zh##F1{xgYGAA%#d!vMh6FQ+34=zmb=-IrNf)>sy>h;koKZyQFAVY*JKJJ3fMvFaZL zGzTld4$seCL4OlrNF71o(^4f7V^!m><%7euG5g!w;|e!*K(Y(_+fiv_p!h?9A+`fQ z?_Y!1p24TYkyjXzIA-!Lj-XYX#w2lP_1Q(J=6p)Gv@fLzn|97;+fnZ$AI>t^8ykEc zZ+jm6*7~1m)ob?bX76{b*+wRSlF#Y==MtT;*FPfKFd)6YkVe}&!5WwmB(EP}UUs7C_6}7c0{v@Y0eav1Us@*E#rbPFG2bOzoL3JXD7n20o`3}PN^f|=|a zPd_n{`imA$qZ?aSPDPA(zvTl_y!-=uvdsWj^DXle8_gC1lY)H3k95n$USBv9veLqGMI>nbX&3wsTwYo8CC8ms%`ezSup0 zO@8)$z6m_MAK!;rR))ne*$c_7Q`^{p;GiXzfrU#M0={XWx1SRfbw@a>A!tZ5<(e%^ zmKfJ5#+7eviHCLK$eb5aG3N&+m2fn%*IT$qMeL=OubS`|$@ISmhk5c0TC_e%8fhqh z3)E#!xNHHr^O%|mK{dOt%UWHZuhz=pV>-9WKXirmw-suw(;Bfy*bFt%v{`}L73av# ze4<%#rLt}C(jPc*8}R?aH|s^cP&-=i214u13?XN6yey5zXJL_TYq?!)SBgFGt(>gR zwbTAow66ta!n#K*wUjW|flJSc;F7csl4{eLy6-Fm2WXj7%hWL{tKx+du+Y2#wnBa{tnm9FB~j%rVTLA&|_ne3$fFEwoPP zng&fhE&d`OGQ(izbSf|fTmJOiW9!day&tU468i-+{CYUzloP&h;927_05rjmQ?|zs zOA3I5HSwteGc-|-LuZOBs_jB%0GxXEh6e&u5d(NRt-*g0T^|5Vl~B3%%ySN|AAR5-_%7|1 zhMzb>)VeMR0ipdJ!XPlxCZHsYze>sS3-3qJnVrEoZo!!ngfW8J&trUbZ$Td2i-kaS85=elw@Vg9 zL@G(z<8;`ucorDO&{ils1*xGkpR5$zrqdD6jYQ?H zuD&06Q8^I*4NycBAyi%F+>Ns3n*rlM4Svuq_>}##Xnx6LW?FzCQ5YjTny)s6F!rO> z$#Sr?nU|N{hZo+>vD^L(FaDP&ns`0JNPPm~^XBakrW5g>RphJy@fvRWuP)}kK*14T z2py;0{ZJI!#{yIYChz_+0xgk1>D$1Yu}@`)eq@kQ-WOdcPk_CzSwPDdNuF*isYw<_lxAIQM2lVy^5A#TBD}wVy7IzSqJS+!#YWl zu9}@Peo^*|ksBVe;tyly&ydaf%Y+(VbnXZ5|0!97aj={T3mF*E`ox%N=`-%vIJjcV z$QBx^gdR}5sDVGT&PR?_C_Qj5CK*&WM9`?(lry(K-|C));TVI+NByn9oGQ`>rr8~V zV6ZN*7qTJXjIF4CwQY$p%OIi)S{%Gk>N(5-*5A^vs<&aJPIf>`n9<0Zx?_v`%W*k| zk{f!+6l6K0bi^19GAEsU>hU9T5;J{3CdeokA2(@u50WSU5kVy6NbAw@Z!@Ak4xy{t zxAM2CN3p2ZkaZb8W)4m!W$$pFIei&8!q~ufg3vBG!dQS3tIO)fZ$PKfT6R~*?s^Lr ziMZB|G6r5GV|Nr(f8o`F@Z92@{};+`S9*xyM|+R{^Nv*^XC58%03L~k6Ww|pCY~Z) zhcF$I^{%%QyVGc#YtqpDi0uHHAZW{3htHl6)j1JXGbuSIisl$6X_gqo+j{4khh!m-7Sz(xjm8_9;-K13= zk)`d4h%#e219>~K1ldIeRDvBMF_$ICS~ci_Fh@YhHY?ob&<_QlmFL78I4V%uJ&GI| z-D7@Bki8n*V=*g^r}KrkSM{kDiQVvnW=ag?5nK3jZD-q1g|(5=Roq->E}y+Vh-I34 zTPKpDCND3@lOg%`4q98ij&t!nZiF zn0*Oe_ElL<7h*4gfr@oF9p=TGQr*ye-c>_?O(~$x8{cSh?BXSi2Z#t`wy&^!^*9#j zWy)MeKA&F)18|xGacmKX47rFqdZtB{bFvIznB$~VL=<2iVLp`uG^W1Q2pRSbQZVz* z*}ntG@cGf`6hANnDfFy<&z4FX@xCKTNhipO6tLFu%LbJbhICX57u3}8ciiYrBD6+n z_r_}bgIj;vFTQOQrlz7`-5`ix$PI8if}N7HI%7U${h_!rr7uSJN*WwkKo+)=iBlYE zOjx)Bv(H&lxUKSUAv_MSvR>ea;d5J?QtQe(KFwZ7$_X@>x_#@MxyADHMO5hZtxHC< zeYMk^K&-Rv?m(v(&Y1T>>|=dk^s!t+s~SV8vwqF1;TC2O=s*Y|fKnaa?je)+Beu&` zp%owphYewmhl64-4nFunuP(C$vliGkZFcNH%?kuE!v@L6>R6NYLJcS%vueuRzX}79 z^GoCLgV$Df3bKyHJT|g~wyX!|O$)>vuwi$C>fPPOBMkr+VhxYA!8`rtObg9(JX}>4 zguj_UST~BcWi&B~aA-~l2Io|KN$j%Dn-BeK2A@J0=atNW!2{9a50BaO2ShnoAkQ}6 zkT2D4zL*gdN1x2p;I!JcV|O{URi~8hXOno1Sqk=Qqmh76uP}H@A4a_)_$cY1SZ?UN zJ5Ki7EVHBWO4=%)??~Ct!Oq{U^0}~?7C~)!PHzYvD447w6`)seL6Wnac%Xpy)a+nF zn|XfFmHbJ1=q3FpA~ND- zD7K3@N)(m$>SxXQScI?TtNiFYKM3%gFNJ_UHs=u-^t0g<80>VKy9^YZP+~e5rM=c2 z2NK;;Lx02Danqbj*PSRBF0Qp#fNyDYyfLy&Co83cp||GkUAbtwodWtyzgHONh^wN| zUfPwS#|G*|9|30G&wCdlzkBg|B&bS?bNL?npY8JvzW911xDukVz3B$a=>7l^{D1%K z8nf>+lpa-K%OUFVLS4SLgl-*%YqPZvdGENZ$6oLH1hYqLn@$i`-+inJ65A@S$DN0K z8wH#;hhvbpHct+j)f|Z%;+x@m@$KZFhkQjSr2nD}WJ3rV z$Dt0vMIIb75xrt&$!N2m3hk7K8(b?TnS=~r@2qF^`@|&R*)9t+5Un~iT3{mgLdiCd z#{Y~Sd2oIU_cQf@u*^o7d~GVk|6&R*BGFCs<(>ZT@p(IYJjuIGe@OYY*h~JXqjwVC zoN=CesV!5^l%l7Kt7v#~VI6dt#XreJNfZ9P_8>mve`vJiZR5+!onAl!B|QEMw(LMA zhY+P@=0&*w5K@hDeLsEXqAOQlXa><_0ozBbfV)bBgz%N{!V-XpUC*nUF}l3&5pS&_`5e!3DhooF6nCqo$&Ic`0+ z0xj@Y@oIwdzJ+uoI`NPoB!ME?)g=?nJJib#!A(C^KNQ_$H`91PKZ6GLZymB{^c{Dz zc7+Jm*Os}Zk+$r4c!ZG7uUS3t{U3uV8@vfJV8M4+R|ZUeYbRBjA_58J+gFW~)tT2Y z{&*cr-3j}~{4eAE^YN3y&G}>c+M~=wlJt3N%-NJH&-%NFs2%R$(DM*!{lAqOQ;#H_ zawzk*+9FAksUj8-st!JcsMm)hhUP;C?uxaVr_w8CS~=+mP}+$e91ys&OYiATA(DYi z`+F;1v#Y{zXgr_vyj*f~7~t@RndW6)Y=o!T;VL64J&!;23s47-fExL64AqGPNG6SB z1^S3>exE!3cX)ke#8n?6WWaFzI3l7IwLG1O@|}rp z33*2wfQpZSTV%~3`mm@)?#N-JJ&vcHAuMrHuRd{yA7rJ7ZU$66z5B0-G|kj&bv-_@IVBtUwK> zWvM|C3SUmFtu666kW?)!XF>Fh2^_1z-w-V4LBPQ8IMPH1)>I_hKs5>e$12>p!G^j{ zxO6Vi?3!`hcYzZoIU(<2=B`|W>Xiua+ovkQAV*iXapuWnWaa1rao_JTe_7dIAw54wa) z({x=+?(tux<9^1>Ea2?^O{2I(5x z3w+xT5jT-}qI{5{mx!@Nlvw;qYwiqv=QY?UzMlWA4bY66;XwxN08Ji8@;r)+kpn?U zd;*2L9Wvqr7t4$$MpaJy(BRDlUHQRolI)-#S;S8-J!=vu+0l0?+?G2>{pXoDE*>ub zk~vm^#xH~t2lRp3&eQdsbWbh-YY;+<{YS2x4Fd@+J|(>bL*BYAX%8u;@kWGD2Idj&jETxguyC|{a{kVF z)tu}Zce*Yx0od0K{dTa%+5woT8XbE8{Jdaz8zv_hTk1fP~H4;O|J3RLX3JriM0ue!@9 z_CYM*beKx$di!c3n{tP1hy9-v(F9>yRTCi|2kUNfVlZR>x;&Ft80pmKARB0`(^|o= zvECy1x9X(DJnws2ssAh}B+Obyp_a*) zGCdC%gXBze@L0e1BMP{elk`!A#sBirDk=_is9*8YrPF0$eo-6xH8nw{@5KR}Rq84t z*;%o+tBytA7l;|6n&_le(K$1s%j=7n{xCC~oBnfbZO#y3jV}etdw2I@+DIqlb+y8)nYhhC|1`gaA{vcInOqZ z<_Wvh%pc~%UGu}&mN(@!${X&n$5~uD&29s4x*TjAj^=o4LE2w@M%|Bcj{i6EUAL6P z=B1sm5H25i9EK{i7;1k)F@EZ`au_JZkoh`POlA+G5o0?} z2mPv?uE&Cl3ciEr%xaY0LcHA|oE%f#uQaVGXM&X&{29}**W}Z+t=8rfn!&foQDsL{ z3okALuHnlP?X$Hbz1Wd8D?=zKi4!5T{*qa6uGD`@w`e+(5 zT40-`OIDU>{2czhzv0(>UbB2H1|ti0``urasyLu+)vkDac5VT6JZ$9*Zh)K!r8B@M zJ-=?C$2D;4-T(Ou&<%WE{sM?3RwR`@-(2x`{YJjt9_;-8LSQE0HvDhtZUc|&6<=h( zEj|5ZfaTItT+Z6eqOYmZ3343W&{GX^{7Wn87ug7;K(R`uE^wUn2efibiGl3(%i~6y zFA%_D>&pV{G_v{p0(!hYz5_qM{Ck0bYvA)cunh=s)sw)~v=(YE{u+a=nDPtm1?*gN zy}ToS{eK~F((VS})>!roal#MUqZHEmW0eja3SARn`N5A6gf7v8?*Q2<-0|D^)g4-& z(FAs!;R-O~6<9gTE*;_1C|=jr$tVDrQ^>#N?#NMx@uyRMS1QAeVblHn_XhLzF%K^# zpvlGoVUv>GcH$XG=Lg@&F5Py?Dd*t)!(x;dPgcGo`YO^iVX;=i`})OxYA?7P*b4TX}5UD^)&SL|{JM+$0oa{)+?L1+hq9 zAH;j9Fc_qiXp~FS|K~jIpFUm6`~aBx@2l)2GB8U5-cddq31)J06lNB(nYRIEbmH0` zFRTD&UEa8YKGwp3VR;P6K=dKh3*+ z5hiv*U$6@LX=GKuEU#Dw>g@?Jdmq8siUfLU7^lW0g#HZWO_zCT4QHymKt>eC+3 zcI(Ngt*|}CodKRJPOfq$J^#P}a2GgI7#Zp)Iyqmi89kjA7FB&GUi+R?1uAu+T1bUE z7`XJ>i7k%ouIP3uV)ml!fM!y%7B`jFK$@~EUQW0DF*Av=0KtM%*`}+U<_M@v^)RYb zR`{IJQf?|;lVrPyAv>6owG#WVWL$~7PV+I{4VG@rXs~G$1XI8Qg{H@hxfX5%-!XXA zw>RB!LC;^+zXc9>${C>WW%ew92wlsmm2w-%z)DE(U*NF~rLq-QIcE2#l%x(Ss&=BO zLR>!KnW)q{(@Uf?EBtcLx>Sx?s~imHN`K54-t#*x0HfT6ad_797^lo*efIe=tjxqDq=J*D{LvHAs-Hr?^7SPXANVO9CN-Qz+&1_sbUCR# zjF0+h7@}m9dbJ;yBAAg zSX$;u9pb>zev)1!=t8;Xh*pyRM60rljuDYjh;#yY@&b!aBU@{d1+AMYukVC{_k9EgU0R*# z4luSVmlp((Ltm#|QmQm@eoB{mB~FW$MLE_o-G!+kZ?ng%+#SXfv?t7WD^Ou;F0aiF zhNeOJ%y!Q|Lh`B$S zPAqAK+w`8iu;o(=4E-te?fvF#4OzmKeznOndu!e0*o%sDIAj;#unlU-g8&p1(dZ+fS<2k&r@>~##fLM6@ToCkYr+nGCD@udfQ{N*h=D6rEI) zMdwK;qNGh)3voR^wWX@E4N#j(EhURb8(5+%<0r9V#PH9x>10mGj=LW|JPSdGXiue; zV1*rvteB??B`#O(B$P)E`g=gF!)_OFr3_0?|&$Qr>5C?ghU;D`vL!dZb>e8a}sE|cHHU5fE7VgOKCz?_2 z-fN^coN)HE86=!2vaq1gb5>rc{u|b%C?qI%hw<>QD!_qE=;-`{p2!JT9YOrbaJfg2 zw02GpK0Z5tB!Az^3#>ZyFhC6>;EYi7nIq>j<8Eop!G72y;`~s(tK_pAHDmFnXYE{ydzfqqQ);p-S+MFKb)OYw=O)asMj>UY1_7K+qP}nwr$(CZQC~1 zG~Tn$-v40Vbo8bdP1+=*P4e*J`fh}Dt%u+Wu)87Uw~_hmE12dy4YESbYrbQW-giuV z96E-Y4234~Cju)TVi7_F((45bYy>jCeEw`J=|?@AY3SV`LK5nPi4gHz#I0x$fC?8z zhOPx<(QAas3)qfwKS8pA%!ULUfg`Nf7sLxV1Rupns)7QE398*LJ#Y|g0PX$CVG?rN z`uxirhhc&5Ht;NU7!lO4gr|||JfX2EhfAC+g#3po_Qo|z&!wF|yM&lM*+KrgSpDc4d9xa7fzhzdy- z6ej(cjL@8!$lLf@fmdLA7G znrTKPmpl+51vR^sTF9!S7pD;pQ&=6Z<7{A2LR92OP2IAiImL}_%R<isRmS%6ROw zVAq00w}Gl}Z~3b3lC7oMX|q~`&q?P9Du21P^XsPGvco3+NVpJxwe*K?6e)bmLu5etg#RL8YqAlS>@4#V`^t?LC)KN z{|NLL`U5f6LsYV(+@(*G~eTLO- z@#GsaflOs(a8)Pe%q*RJ!^EKDyL~+2l!Z-FX?}FV-oe3Q+K6Q|27JIZ!qbcp-+V45bwJ4Z3d)a=RV;8~i7`F$VC-BDL=let zUD1O=!t$*T1SS8Rq(Ql$smFyWVAocE)>c0HMf5VfGnXts@XRtu@Q>;!sA~|DZFY+F zXfR9}HF$k@YeM%cm-#EVREUL_&c|DMb@$BKj7M-69Yv`h;_GY7#`=F?)1NKBMN)2jBl|3^j+~lsmFz4^C!w+=U=RF5sAZ z&CMhpj9ikXR2uvTiET_?d>#Jh9dvzg5)5r{#CR~$`-O?a7p{8{ig3q6mR5HNRj)=N6L?`+C zW9)RrM>SPppjnbJhQdYyz#t{v#hKP3X)ER5QC4K0MnOvnmfek2{BW*IYUbd^T0EX> z)`iLg*rC599X}l7=gXJVAzl9q>0%A(f`D|zM$`g){P?H8yJ*U6Z8gp3l4pNzx!K+b zBcB!wKJ%jF>*1*)QPBn`JPuf}b@@qrK>3^n!GK*kzK`U3VdhTS>Q3hjN5ydrm?oaL@?+}gJgnq?Z1P4wT{Fj0Kn+qzQp}I!%Lv5; zHb~L&Uqd(&Iwv*&T!|-;rCu-#e*gN%Q^97d`;$c1@I*}UF1}QW# zP5D0HIM6qAg3mxq@UYPEz6a>w1AVTQj&a}m-f%Wu89VcK8V6h;6+q`zF&Wee&n^!> z69GG=s`yIBa*qb-uO9^s=x%t4m_vT)Z4+mEc6A3p43=@Vp~Bt3)7i@Gg-riZAf80Z zkhh(axDyfGTn|T%-aB@gh!KNRsVVU6oKTff3?w)#8?5l5-d)nkJ&jAuQ|FLkL*=_iSU2y_rm z!v+N5r-L?FaCr?G$E!fGcP*&PUgGjz-1VGkk8QOEpTDM{TRxcXd02IqqRqUX-5=0= zzu$HK%9OX+Pt*1H`E?)8ei7{}Ncm-H9f?{Eogefu-%4m^iL3f*-e^e#^((;CdCYCC zYG#ro_que=2NuH;<9C-H&ooX-IW^$Jk3?Sm*;*&niK`*LglplVWKzo6tu3~~T^r>4Pd?7yOJ4fQSQrxhIy}mt5ye93aRqS2oJlUI1=FJfB^Y_2s zUP``UWfBhZ-A*kCyO`(aLp_|SB;RdX(?U2oTd}PX{Y_b|VJLTyYa78GfXb;R5fg(B zMUL4L!J;#~9{t#w7DIu4B;>}V)=>CVe&X&RgJc*5;)Du1V@_8|v9F}4S5WMe7ybCJ zqT(g?wpUhj?PLpfM{8SgmJcRx6y_62ncVBM!LSIUL;c#!k0CoOSY0M}Vq5(kL^c=W zU+SxC(L6*J7Z%s9!R3keoQCq=UQSmovr43SDzgn#pu?n*iDxAboTtw|LWCeF$;~Q= zt_LC6hi{)!SkI<N@P0WAz^CVL`{(-GGq?=9C9S(Ef|V~xS@t26@wr*XiDp{b#qT=;rCqsIVnvO9m6wa!x5EIojQuZkT4 z@NrY?-mJb(4|+~*|1(>ez2{{w1jQIc_i;0dFWy1m5&O+)p{WU{8^%%#nmxLJzO1~6 zm|#_z(-W_D-{k?48eJwqBpKr$&lA#41?}z=RT*(nLla&Djm1OI@4os{CJ_o;R9X4d zlq8IS&x7)q%C4A`@FX4)&XC_DvPd-9pLXn@aHMbc{zl)k_CiM%b<$HAo`Yo`M)xAC z-p&Y#iv!J={eaL63_Tn`V|V&D(iest+2!5SP!da;OGxvbtsx zpZfd0`eTKg6k>X)YjvtiywvqoK~xN~f~molt+0HMEydXwDlXo-%j8m8M2)aJI!sCf zP*jukZ^tI@Q4>^KwT%(SB5D@yjv|+X?wz6eS(^zNW25s*^pi)#h4l*uTeH+{ip=MCkeg-ErNVrb^}#IW*Kbsi%)AuI?W0m@)0Y6-H)aR_M!vd31d(H-Vr z$4E~5n*Nl;mcciCv3J^Zo~BDl6hdd_|J;%#jhd^L_Uh$emE5$dFS{kjx@TP3z4yAv zoh|jN-L5;1&^`;MSFf<7a0fn8M@@|a+)BnW$>!~#O%|Sy9R8e+?|+|xpiG@GU&WLp z8N!q&|2_`TUNtgsTF`bhb9xyoGUa4QXN-ZoJP~O5> zo44rI?0hSd-d&-7a|K5P>ZL%$@c7nku6W}Obi2&eB{%R0_JU(;hqxabl6WCHViYb! z4M(UZwBTo@61vZIQG>o^)l{?4U3XryBk;ke!2|hB34uG~Sg=C%;AA~JB1%83_&(-* zbyNyBTd7#S3ZQ50YJ{%+?9uH|F_Evwy38;(%KQvG<&CPES!*pfaA;iKur6jAmjp{F z;Hl-o*W-sW60}#Bwfr4R+o&|}yOf-=_0X2ZnpxZX5SFLr0mo4GS7ngio2G`TTXyq% z;8Mjkf&LNm0U>8%Fj=pEk`Y>uBLXL{S9;i20_hj=lT>4igW#6Xda*8uqO4Iz8HUT7 zC*27;5n47`MYDYgESu-8w)7aHjjSgemcuW!)?WzM8HV)@|b&F~3EgnB?L}y^P(2>}> zx0EkmZ)|l62gMY81EOe^B!NVOR7o)YHFgoST~le1brK_;<^|6Zfj&|q)WJfuLKUL? zA$&ml+>JTmp%nhl+Gay zRa0|@lpuOEGs+2T3{~Z9#A=vEQ6mo2(l>&}F^z|2@9wScg!`FOVc1GaV;h6)gqQEc zb^x;=&p&}jm=kI=TSu{e2{f7Iuh#Sm@a$!@!Rg{{)wL2%zchk(gWiTo*7t_J@4Du@?uD96xbgH><+S@OMr4SdqfR{}ng8g^xC4`57`@<*U9BP)+L4)a z?Gnz>hELh=tL={P32O#@`ctdY)#&E-%Yre@M7)=Ux`UlKugl;F=qXQF{GS~i&PIhr zXLhkzNb0HLnpHXv)gw_A73eJ=Dz!KbD6u|JDhQv*4Ft=2-_j`aUaRnLtiKCe#uyyu zL;-W7VI>N)Ln|rL2 z#swuBg%kY`18NS{7_(J+EAh-tKxHq4P+Zq@8d9~^*3|Xt$iT3=7o*zz7#Rp$sWP`5BCl&7KFm2X z9%Px;|1tqByt&>q4D94D=K?>@zw$^u7H3B4Ug^7ey^FbV<^JTfLd(*2Hv^AcOm9Uu z(q}nMWW0Ix3jUXeU~;5Jm*0Z4gwbkW%sD1ZQGEl_IBt=gnF~fGt`!N_V7S#I(@U zD1&monvqFInC%OLy8yW%3~5#siXl!>n?5QjQM!uui`SVg_xn^yv#r^+BK*AF-0pfd zxJJH(jkW4<4ja*iK?_-F_V7@!wo=pXM$>~^+Tb_lIYP>Kqu5C>4>#j2ZU6Yq)p1IA zEAnw|Q$>?k(O$e(w|3XFg`!%&>&Tkzb#6yz#Mg@cSP0I5x3$}JZ+99FGjm`JU30fZ z*5a%&zFn*wC*OzDSMEH#*!o!uwU*zxbYKe9vx>iFdt2nFa~ig_D`BkP@hIfJqs2&v z{azCi_*deDSd)N%2?xx8GM_+;q;;UhKweyo|B4xbsOZ|VA9b3U??$gg>E#NCXx1d; zts_;@qDHGO>6iGTd}yKm@7x7m3K0reLj!pgAQY4e8La2g@hLBt<#iK6)3V1#8YzYG zF}U{e_SK67>U9+@Y*Vw54^M((_5myRZ~Ac~lzm`i@a_M+qM1jZ^l0BUdwRc`O*Y#V zn1SN{=8PFR;AoZa>NONa7OGEO7$6IV^$`5y8S%aB33btV zxLHGoZzs2xVkYi^g%?1)b8c}cWz%y36^oL?O>&lC;1cs=u=2$1a`^zoYMD(ACQ#g3 z;Z}DI>VN)+;tDdVgktl;ogr;{XUB}x1ZGl!5G=20sA&&Ig-i-G`ZF6b9$rE=+y8Z@T$VGOg4SrKWsB|Q{mPc|RiT$d{CAWK z1R2`drDO_q3Niozq`jLUgQ@y2A~|9V!5~f51uq<|OCp_>SfoNk8@mR$BPsA%9JC2o zCqv&tnRr|exOhCJK03aJq)af zg;pAn`(moXClB0L6RFfO*E`%c4U--V+GA08CcVE)eEiH)9Vz0T%MhJs88-W%uddfN zcN^g&ldMj-<6~=yHUu^?B_Q`y;S9^;{~kSlbXtYXK#4nzxnz0z8{~^FM7*_Sd~BE= zQUJ{Nk3!KmXtiO1_Var?7UJwXgTLCBHys%FC^M1cG%RUO@wo<%2B`HR5hs3NnwPo4 zhHDn#Lp6(VA$G}P+@?>s2y{)_Eor+&5Sz4KcH}^f8+F&O9a;eS{ghAx(Bep6maqsf z`9{XEQiGsLTVrm)Qcf+IG}%qX|7dB)LBh>;o+gft4A^Ah`Q$xMt?9C!2y^Kj;iqYN zettI3I+m*?wz2j7c&aNu0!aV5PDOBc=^vqeR|Aggf8qa`yL^C8Dm~gIo7Sz@zw5x( zCs8VvD1buaqsYaHux1r#NkPSM6hbTU*LQjHg9v(i5PhRZ+8vs?Dm?f%W;*mhfo~N2 zbwp0*pGI5r*hEI)R=ONRPqFRZZ;EOw!~>s5>%F2<(4l}F+(bp zsseUDj8SNmIvCC<(&|laf%^RA2&mS%dUIS|6AlmRr@St-i)GCBIZvdyvbU)H4Z~a6 zUqD~kXUQ!cRIpO2yWVkI1Gkb*{%V8IweGHWa6DcOrbX0vvHt&-1-I|u=q!J5RF*$5 zdYW5zC%$J$8?epa4>(_5{f7{4p%`$qF2##(e&g)$ygNAS49-4>v*TMBoOOm^pU2(d zadvq2g;=N6>ga4mv%3@gkNpjdcBhLFUSw|7?!gv2LnxV>KVyK9waLN{Nd4WVG-ydk z3(Dw!167^I^5Gl9f8*$lqR!!Spw6QX%gxx7#$P+<>Y%{wW_Bz}xn#MG2PU!Fwdg(# zO1bElsD?_FUftLfK$H9Jd@Q#37XMd$#y0z6w(6Ul>!!)mJ9N}M zB-|(k0jch$X~5UZI!IE0fDnp=cXHLl>8ij55cu=O<>mOgT2sMv!zQqx$xStww2rL= zbIzY74)1K!VtxdS7bNH-X>#To?* z^hVrc0Pq9u8_y5E&$zyPea!lNBhj92FUM6rYqLL;fQ!%I*Q~d^H9U(EcS2GQ0f{5N z2(D(jP$!~+Q+D14TFAu+%_0U;FrUg4CL?`&2x=lG0(zjDmXwO+9_V#;w;ck zHt4$o+Cd;+=;P04nXx;(ZJ{tfsV50k6af_xc8DL|h+>Ww^1C@4=YI|)Er?!m(1}Ji z6Jmzm(_-TR!fV#dN#?HdLj1i8oRm*;?s8fw>*6FE9!Y)e#Wf7RW{q;UfqB7m$Kyu= z2IgxaHIz*X&wl_4jcs58GfJzHT(rj!%S8g2FPDS@vmPUd#k4~L&wJLy&fp;yR!|4A zG{x}@BrF4Zw2`QItO>6qka#{&sjA5y^F_BE(-(a1n7#wLV*LZUVdg{1&zg2gL`zi? zM@00{)v`yUdROCIG(ucDIiB+7v3aVkR`Yg3KklKow5}o|79ElUmSJ?sXF{&K%WRgt z8q9VO+D~s^zmpE(fRtq{l74>IB~QJI9eU`B%pD(mEmGSqTfAo1F<5{&E% z$oDu|0(zGZaxfn1BZvdQxctcLxMWRHEPZ!&RFdpSbq6H0{+a10V6(Jg|^ z7@h^kZ2_5~WIRU}hz0XmSeHa4{mZ4bi{gL$=W*kW;{x$^u9ydPC@u}y2V7hUQkaqx z=vf=GQ6{Ar+zCtx8jsi>^XgvnACH)NEmi-iz9wJJNw0WrlbaV^cvSwbl)$#yfvtJQQutM zFud*?6|Abb)ebqPXtlB))TRyGlZevz9KVP=| zRp4H8pAiPu(Fc4Noo5Oa*MZm^Dga8!ljdkx4{|c_d~Y(KaIC=v&WuDDF#!}fH%CZ} z{Ags%v|AOrBBV&RC)_w>{&9~FJw)zykPv$zS&HQL)jTjZqgzU34-|MYm%~nC77-_= zoA5CDfErFW6-eMVG|W-H=pWoJ8-)mdftrL?w492C!w+OW%u=oU0M4#pyquIJpN$(T zwhqzuh?jQ{YGBD1NaIuBPuedkftE0C^?-?JkqI5h{BkGyha?87ARajtAM=!0?m94( zJv%2I2@|VLlYR?bmP!uM8(1X6jYE1K^VuNet+!k-BFughPPrY0aQqC&ZwUW|oIu7t z`t(YruM!*#*Ak|GHZZY~@FW=sxC&J_C`MxYqZcPF-VC{%sCm9cI)Dh;03AGB07kS# zB-#eP{=&ocg0CLVcc5Ar0Ii2>Y1TYMWz;T4riizh;OEH&SHqH*F4_-WZ@~bxYydaw z6nqkDBlIKO0QJ$gIfB_a(s;C!?7HW8^Wd%8B5w^ZH#c5|O9FTmc6<6GU?m~F5=si* zV6>8eF+%-k@y|5Q{YQp(%%nj9IWS3^Tl3Qi3zv%@d(D@j2i!GF{oj8r5D}7w4u`~& z;0SoLQn=-gel>X)>fwJg{m7Ps|IrISR#$(#`ZRP$UEE}nC?HMKPNb~46sd4%n`t1A z2xyL~J-u{C-PzSmU3m-TEc%Cw@sr{|*nfCFY9nL8@Fn(%8ReG-Rec5E-+Tcehd*ez z4)AvbBM_>Zbzc{G-2nN|=ga&3UAhrrz1p+WB#xO7&`_Vuv`rt+pR1#J`(K7O4epVX zBQRQ9nuqB9;PRf|`ps;>&mpy7F|FVGbNaq7H!}M1m1t-PxN=RdZi>&f_0~5_G9>Xq z=NrS{<+9#jPOq{&kBM)O;c@AO|Hu!e(u*oH%PMD?Je}1Rz52be)ug`p?}UAG>gh#o zSjW7q$fV&X)#i!z951Kn@YO(# zYhexUKMiXMy>QX|fIO7<`-VTD5%3-8&~%dF)CAk3yFU*ZE;oU&R>n6DxO0a<+)6hL zZpN2fgm*^Vte?G1Ty#smcuNpCCE;Ta&Sjr)H<3>u$yqyNnfR!cP)z(1$n_B=N{$|O zAyyzi5klYuhfxa0i48Vequ_!5G8BoA#j-4b2ZTJ3$M4#i*Is0(k5TrZ9)BU2`Q-Fv z*H<0^SMC4SfM&0UXROt6NxH+N>{#Wb=7SQLqZ3Ymm%(&Wfb4)qOAKRR*Wf;_f_a&A zI7HDPd1R&nc##5nkXF1HNQEMqYnQJw6bbyvnsEGcK`n+dg zvXk_i9)a^#zckynsawVb+`4AApptWjR;V9DV-6amiRZixw@1i`I2KTjerCk$@dBY7p?lOL?uD5FPL`+!h=Wss z*99b%yKJKXn`kVDWtElwmvuJil zcL{f#u&X-O^( zZ(jv(h=kWTuq|&Oa>}BWXr4--pWG{o>82g<$VS5)bW6iz{m^8JZetXyaXz9^KXOGyZ_|<%thvF-J-PMvR{SHQJobI#v59fX1%4q6ed3=%{=iP81J4?b1t5bpwvySV%ewR& zeC8a$y$|4C1HS>YC7v~=i*B8Cs#lOCkv$?|C+?t~v=s=CW^RHO-~8zn>mcgxe1uz| zVT0^3-bqQ_$-587$CEQd-WIz!G!IX2j`W3982%}Ne~fhMoLNq5I+TcW1tuA3)N{AR zTYl`k79Fxu$DPT;Ac+w!HjB_*pF27r#LP9(*FW{nVOtJFTtYlODRIZXJ6^W=&%I~z z4M?ZWP>j#}rp>aur}Ef!{oKWU;QUS_y*vG(Y=wl0eM!u)#7H-!G9@!g_!ylmW-gbc z5KWpSvLw4Gmd#1Jd4quAm6Rw3Cj4&C9L3NCp+_B2?DO1M_Qs1{An1}~=Vb`4tr||b zZedc~8Alm%K`}whV265;_#-3 zvb*FjPyo+$NhGua>QG9_loB4%MA$08}goG37FiuBfayIOk5J^oc) zTzk0d5vxE`(^j_w0zHwW@}rp7ffuM$i)A-*9|*o~c;2r+9&YH|Uw?O%uXG^Pz@)J0 z>4>r|>L+aSOdPS^7c>7AFP(@!hCr|zTn6Q|hkku&6u3n1pb4^m3v@t`e=xVQOcBMZDdaaS{G>pD|MXu{A3vcTOJJ_9XthX^VfSKu1oJM@zDhxzG$L zUIt{3c<(rV!Bz33F9= zL%L>KsbK*w#$Fde8`)8sP^i`$yduO z(^wEJt5c!Kd_V$mV^`5w2jq+8h*AenBZPOwMWLQsqg{Y5oJkN#Eq-HX{yqw0AC}GG zDN@MY!y@rUvk?d1bmJ_P2GNsXx(@4kAJpr2#q;ulH&2;+A}KQ-EMZy*Q;C1PKq7fT z+7y9I&(}Vs+!+#$ST9H?>^rkoLw-sIJ0)JTT+6-)HCQ)m8U=^bCG~TdQ^YF+l4iaR z(K)YQr0o6h6v8#{l^md6?zShYI1!CpKo-E@JUqQ8Z{RDn zTm>Nn5C!<5^>YjC!C34~?D79On|<4d;(Q#z2KAmZjEzOd+32RPdz0lr5w*zkf$*&dOL4TFJI1G8H{kNokURx`wT-P2!R;pX``o31yq5k0Mn%rXH@9 zcv{_(wQpF&vc*&^sSDYpPbWy~^%QCDhKlPF>Ys-x$Si%JKOIx88j}2lnHJ{`Bm^2ji_9y3x0u?#TPI z8jku>fr*cyT*fuWrmO`9{Rk?3fnPtJlj>}q^44B5I2C3*1Q~YJOozOqWL&6tgpoP` z$)39+zlWk;dU8$F{+#rIxr6Jv<}3sNgMZ|%o&;O%vN{?c;Fqr+pNy~Wf|b?9J+3-~ zmri}I-i)R6H90bWbY9+wh?2Zu{Y_fmH^#=QLE7-+;(e!C|tc-o_hRI)3 z&BO0^iMM#H8b^E+P*{Zx!pG9{x||gouY2m4x+k++-|XjfJqfbCZ?}6`U$H*wc#FQ= zo5~)26-wiM&pcM`nMUr&N|zoz-pt=HEEMlI*n$?D%;a6;-V>|Q&_{{h{+QJ6M~;BN zT`S?GE4vGhu}-_KQXz`HU_X-UD>MfeQTCx=mAf4J6MCZCNOfP$g5E;u&#Uk6yzlZQ zkM{Uv|1wT19U;+jN+)e4si*oEXFL=m&K#nHml zp8eL)6hVb|ZvuH=@-qIypUR@14uiD_FzUWChPX8aCjX6Z#zE!Z<_$Vy;zbg;M{A~Z z6^TnoUHu28nq5e2&CHQ3vD3%|l_Fu#6h%wnCW=|1T2aCTSWS}|Iylk}?Glr)7b))s zI8DpnM7V4N?Spm^638Wp&k8BV;17|N?FC`OFM%kqb>-4m)e)^>pt8d5y*5XYqogl) z`EPmoPA~G(e|LMnO}WgbU3BA)uHE(OCH#kTF1^6ajC3R~p}8T%Y*0@98o%9w=hiy~ zZbk3~;bQz$Ud|y!q*z!;SD6zpNHepdE-g?FhRp=lU&MjV!b=dL#0h()C^!gWgklzC9%~98Rc=tFg#XLdEanK-*XM}3 zP+cG{<_Gr5c|tG=p`a`(Xezl={wvjir*J;JEZ{%}bY~i|<5I+^ZYOqbJyh zo&I*M&j--{)i|&b437gpo!`5!81LEt>B;>{*M6_nN7;pW-NmNnpRVWs9YqM-6(`{B z15BT{d$Prkinl*k-<<(Ne2l)Io7qtG7&i0x(2MFO#|9l*lZ+-`^UNHpvjCISZ zAwBCMbN82;Eg;(UA&IacJ+~GZby29p_0;Z3{Lb3)Zl4>>M^y8emHOn+I3=D%gXz#= z2Er{6xcH)*Yx>IGyf3$I-&QEtZp3dx(N(@2upMmX*D?En-5T*PY5qeb)~9#t4)Hql zO#F8PjLhHf+B(u^>B^g9NRL%6QkIE?*l*l5w-9&P<oJud1dQw?emX5<&|Jn? z;5>o#vk=;0ZJA`H)8&`w`-y+_JjyeBDL{T<(K)l8-tYegxY50I-WE&CpZ}$9kfKU* zr|7sRZqmJ`*qpuD$gCaFekM#c0$>A5`}F z{#&CvuWSSD@pQ`~-XK)x{tq>^rmZF9zE`84_kOL&Fesl#)(=Em2=)w4<>lnFBRpDs z-h5bcgR5Tkbow=YT&7#dn|v~zyv6*)0tV-Vf1Zbtw;s=)&%-P27w+x1zX8wscucdW z+`!r}Ndy(1FVHaX^(+&UWkaD8eRe%)$q*0BzpidxPUOAjeoV?@X(ej?_-%Pgm8AlP z7A3f+!UdMA3}aXr;5Gqt7Ez2 z(y`(-?92S{^19X4JFMk#_|34k#a{BUwrBtm|65!jC`jm!2D_-N@%AG6O6}b`*3~n9 zL0J5tlL!AVM38gPPhc^B*X`J#IY%aW7keVAAGGevo5Q{0P37Z-5zKBxF;Ui~vc+=d zA87!a)&4tj&+WUl0#~#j&kFEq`7LeuI1*mQ9f!EK)0i%t@!!`VIAc!cK3r!D>Y%#;Z+F!j+ z`*VEnmJ`)O?IUe1{m|7a4Kg@y=C*up+}%m~ZS*STTTCd4_(YuLFtqcZRzW^m=<4^V zvdpUUc9N;&^K|K(+UYxXLCd?t>#Zetmo?vY(nlmpv!Q-x8-Zz_H1{Fg_ zA{Cf=MQO>VLxi}!bafCFgX`1l$(J3Xzw{MHFe= zv*^Bw99kz@3$v#gX7NsTp)?sY9Y?81MREGC9|nS#$89-*fls}l`JO(kSBD~Dj*Ndy z)R{YcftxXB&Z;o=+GY9RAy@VMM&0q6Dj^PB)IqoD_}uR4FbLxAhpCJu$4h9XEF$+X z=A`Nz&f?9*>8jLq)t|?BKn8E451A{}Mh(5aj<5_GhSP0h&;KCh3f{(ZlF|F8Cb zzqjG?%^-If|EL| za}CJQNuOg73iyksb5I$O)RN(@R#|^0Uq(gUUK&ZI9l>j{J@CQK4L||<5VrTD>Hv4% zyu49>H`G|vS6z--@L@?(i=Bc@vR5asRaI_Fgl|Ip_;5*QFDhmJeWTvf=S#NKM`o?i-4CJH{hTUF6lYrm z(SUgfdYQn(eN13bMecmf=w0^fBVoZTJMRk=+X-%SpbHH;CdiMF!=yn*iD{XwCd!aE z9c1(^M`z!NqNMM)V!sG071sRb*QLfontX~7Pe0j#*# z$TEq17z+ePgB%y?O2h^wEJvg%!e6!O^DUQwqRc_g>w_K|Ob9+$xk}w?+P@WBSfP4)Gn{!0Ck)zM3BHiykFy}*XD1aj zxEa>(Xn&0j8JH`585UvTP~3QHa8!o{e`?;>iqoCr4zUNfHgYPd`FVod;pp~gckph1 zx>)9FY<3kpn}=J96H-f}DwT-L1XX23@?gtlPd+a+BWg+J^I;(t4?|P!W$w0KVtaRG zDFGsFe>FdE_Vwb$?;WV-aC?n^zU_r7N@o2y$1;G zL^Va~jIg~@JeA6vj~E3-Gfg|@x-Uj*4X;F9zQ68n+fTQApZ*{KWucMpPk6Z&wB676 zuZ=tq`!S2R*j0aPv{O+q{*5+q)f9vCFGsvB)lAalH%zgq1%Ka_IgquQhL|qMIUIa_ z&XLo*NxbB$@*}OtRd~bJwa?Qto$ypPJBk;B+h8O+=X%2cBCvHfb-rSyG@+VGH1eWx z33;YHWG~^__giZ-%|YqHl;SidB3M-}`oRd=p2W@poc7x% z|0$VZ)B6Z|l*dlOJS)jiWs)}`udCNdK;%(A?HK?i$o&bx*EUZBIDaV>22lAdbUV3z z%2S>%`C~OxeUX=W4wDpst2gp*o#czzOnqA#Kn8RMRiO`9Kz_ck`(u@@4oW;F50 zyo{9~cZ@Tlj@s0BQnV8gMP+;;u73?CG-T8zHf#`2;(6Rl@-ud-NDvJvTg`W}5u!s% zXNK{$GF~E(m5$@dasCHMXQWS1lduS#U#bN9qDUx-;ovyIT%a6AG)dGZ(S6{13jZ}i za4iAmAWF4Bjg{2M>iyDM8&E$ZC|K`yD6vaIvkmfUrEb&pk~y>%bb~{njIq=ei}|_2 zDZWFUQc}QK6%x24VG6%J65=Pz7#U1dxs{LX`lnD#z#CO#ktm9U3=?`L{6o+IEJ5x} zYVTweLasRsvK$<_@>1p6xk_{*2_-2%42(Mv)uhT&gB!JOv*iit2587qbHX0cFJFBDE$F|QjE)QzxSqF6yOHw zd6Rr@m?PZ3WjuC+Yo$4*=GmsnpwtJ%+)9;WPFYJAv5N6X#5Nx5LmVo92MJK$?}%iB z{OsQ3H%|6T9z^rdUse?j*qbhM(lQx>Jd=`5na?B_QO-v1Bw=Iz5MHm}zH^h#?;KRs zXFOyE-_=b~^Ck+JfYwC8JYR}TdhDa7-^TInzIFSa{}l=NO1*jq@UdxS>^KeOG!%qG z0Y#xxYKZwl?Fx1JU3|K3@7ht1`RiyeVF9v5$=w41|7{oj!b1zN|L#w(9Rl3m`*DBm z!vWj>hv~g}2%wt^c;$bV!UqDlg}bHA5j^720PeK^JZOV>1fcu%pF3=EN^_*_VPTpU z&13#=E#PHMTCN32`q3Y;5-AsN81009j%V1?>%a1VK{ya4w}8A(bB?}PTK$G4EF#`- zWf_xB+LD=?@;#0^j2504XVXx=kBDq|mtRHSJEM$KQoehu2f`YU(P;PZ+4jOn%`=X| zA=6NWDw;~>e>__XacEF0((Qw0BEtCx&Gx~cZ!|;A^FjXpUhI-JejIs@(@3QyluT0@ z?Yr1Eq5tMF(37w*w6tg(F+`@m?1#I{K6?yA>zu9xTF#eHRiK2TV=R=3Jg5|W6L#Zu zs$3=#ah*)sYj@g)0gpI9drojjf!LBx$-)0B9@2oyEXb_B^G}^a?0Es{fq24QAO3HR zmc~6wIbP*5b};2M;@^Empsl?0Js$t7DC>88)lHidGDrUti2Kiqpl;?I=Q;J%Y3B;fnDE4V1nF5>S0L=3 z>U zS#WO)LyRI$Wvpb5DC(Hcl_DAU>-t;JP%q7GQ?Eb3y35D1tyurD9tESHQ7whlN>M^e zOUvAfTzZ;O$3^aip^ZX_V2~T+zo1$#$bUE|JNbVf+vkD*I0seoA2*MT-a*hLg@Ptz&F`Z|lcb2} z5-@piM^ME6i?w%bWd%lWJSIJSH9pZHm-HL-~DyO+7GLB~=kClF@T2O-d0c5=1^uSFLwp zh*!9~H^7ui10b#l;;cG=7gXmdLguy$b>LEuaobVb&$(Q{e;`73_W!+XIJtXk3P@f&`8kA~e@>46JzQHr5ymOt%i*CHo)iG0 zmpvgy{P%v$QS!@^U(O!7aX*1=#rPlQ7`0|({3jgO2yg@w!Pu+>rskAqj7k_S6mv{v zg)9p*=ljELJ^#b4Vj=#63B|hc|6aDw!~Ykj%*9zlGg3|m6AVX<$^xH1@8*LC{c}9N z2y<(>U^Cxey*T2i-Dvc{UOg=Obr8w845^%yS0BLi8jptK3|=3Wx|bi~9P+SsVR2#b z%jf^{^ZB>0-oECTeh=Sx)f;6foZ51aD8{PJ?P9&G(8 zhgmgnoWb`@k{3z6E&&}u-wjLLoqY50ZT9X57>G`e-{I<(flp3i`LDi;H>SgK^lth- zu9d-=Q78D!!3%OWc-}5>Hu&?OW1%Ezp7QhHmvrFL$#o9jbwYaL>5CV~c;&b*nj}rZ zNjZHron8&{>uJ3@;<#6pJ`06^e}ez&rl{67)U)QFyV6f)ht26?a8*E8ApuAo z*SNgxWB9pxaTGA0H{8aS+{dGFedEqZtVqWHHN2j!p1HX_zn+wH{;4lQ1uKWAAoyp^ z?agDL;gYOwxgSDo7@u*JOvmsXL-5a0l9%rWqgby?s8`x7)NG6fm{j*IYjSjLtm%h0AU7Ui zH(U%xEBc{*<)9t$5Ix`qSFf(F!kU=%)x2HRA|}8o3`8Gv^5&GKGPw3%$8)di<85nO zRTicG^xM*}uIy5BVYjB2+mTDC)(ui=pIu8P%c*3p8J<6j@^j+~Iu!pHZ2LR*1q>_7 z@U!OR_aP_;XJPO@tCp~a>9c=vaPoMDe{@R4@!67q8sobQQa zcBbAbGnjNO>~bm-FfSK&TLqZe9EjywHtF=puHmHps7b^;elZ%%_NS-Jxex^nD<~dy zSW6njb2+6}rCOd#4Hg#$n{;YX8jw_l7?VxGP?N-BmPVXyK|(3$H*FGuPryS%QamEK zE8zY;!(h_F_#UceLS>+ak_LH|BB>#=4jx(rnwc;Apy}E+@~kF~6*5zTvn*4dapN-L zy^>DYOe=EmI5RaYCSqfl?=YbuUOC%sE{C11BhQo`WY)x%yn6HfgzWtOR+p5c_wb5x zamvE_;J2t}ZR|dAq+cyl+%qxUx(rK)NDL=2&>y&rg9JF2k_D#2bYmKLkRwsS7im=q z2dY5un^a*K96_CU!Vw$`!{&IaPG|_BbDmH{V8ZN3oTSzyRALfHq)VL&M9DHKugR3{ zD@YK$OGOzcp{ClViq8ZIRwRfHk}{sm7kI zBR{^Kh`Eu(ZTsAlyCrdxhzp0aS}nD)Jnmw5f;P-38@_kF-J!JQx>cm z6$W*Lvjtw|G;$+YB1Tuj1C$J;vfw7AA>%T7Jy2^wB}1Us13e;v9``p_IJ`K@HZ-h^ zNSTbX!+`>Ax%Y*?-%YghSjAP1JsWNS# z{X}+X*+HUDJMNfz9B6i$OIx_R!Ki&$cXx|R5907fIT2a5LO{A5%jz3$O0qT2>fLx2 z8X#EhTAWLUOc(YO84^5K`-u7-GC+%cc@W+f^iY(~32Garen)c!hnu-_H@VL&a-Uhl zeP%iLnFDcOkr@Mql4OqS+&e|7D;a{1WK0ml?q=j}4auT4RJZqAMQ%B0A86gyK7;li z3%6PwbbaX%qAc*^t;N9}V>W!!^!k>ZZ*Fk@_C83n8|R}rE#inrF+`zLg-ni^`oNkh zBz8ybsqzm<(5Q(>IntR%9|95@j-bHBg2NF{tqL@#_8zJ&jqEQO`Z^WHMR**l(eAK1 zR$Q2rV~nC*_@=O6>jOb-O*69t1cC&@x>b~gcihSTU=EOgu&`(Cs<>QL*WN-yxK0j z#F4w+vo6;(w>W@jor2;P+~kCxQ)qgs!+wDHm-Rjn4vl5@T~Y>bvpo95(8W?8!8@ue z6s2)8S8j<1YkiyPHEkvj(Pn6-1-ls;`W!gcaEnaMw zU1Ha)cUseRVRL-|uQeAoHNg`MLyUz+1o0@MC)nE1iqWS{uuVY%Q58MhdS4mHVHA|r z!w9yTjrO0Bq1kE|G#HH(x^J%VrdIra_O7i*a@{!RIln^KB(N8ll}Q$_NCL!Y!_LD7 z2o4ei$xB1m^#tpg#q7l={`ILUN@}SuYIRH7)9WK0oNY?th!n{x70LR(Iv9y^?3?2j z8Hze}KF(e}Hlm7cidQ8yqKFp1p-D9lMbUgsXZsdV!KztuQ#9JJ9=chd^Vn>Lha#;H z@W||EJ_@$o^DunMzCC`3flPZe5j#c*kuW)U=S@h%xJ^h-NEZ!bMV~K9$?+Pl_;ix;x+9k%ZEl z9`DcIogb<{hbISNDJ6x%>(O9~f9UaGi%&nJJ=Y-ke*5_o+DboB$hCid^Yg!DKmRw{ z3dx@+vS+Uf{b94EmO3Qy5-BA3|FFyFt-nr(^=_YEK1Am4T}039b2S`A(JG|(h_RdB zBrj;8U^Bh^%s+TyqlbL2v3%Exm^|o{*(N4oTZereM^)F_du7u2Nyy!cK+5g`Bu-ka z5i;4()qtXd*0>U>2o9&$6rxju6ciRT1qBLCa+RX3?yP+v{~#AM=;VC@E)~{$oS939 z(=jWp!zUiQO4qyx?;k)7Pu^2;Xz5Fw1p__X3mfn$$F3@iGZE*sc~CBuSZiaCUci2E8T`K{vX3GD-wJJ4{QoVEUk3gk zhjOGN{`B&Q-?|F5{mU5OU-=dAzXJYO!2g+J1^lmo|EV3Z0{&0cb_M)j3HWzG90U9- ze+KX`ZV&iBW`Hb%@K-uaC#!k8 zA4f+_;CQhNRp=7ktqB81Yq{jW>4m(Rj)^fcbnbcAkDa}u@w~hctb21PzXh2(_63KH zRS^9+3?x?Sb~~H8G*uCLGII-^N((mb-5XRb?HQKQ-qGYzG{|==Wd0oSt99)l)JEw7 ze6GP&y3)=%D6NNTX;iI}z&sh)Zf(*-0^aT?dl{O(8xuqo@nGyG>*Q;RB8cWYqG-){ zrXa>mnW@1A#y!=hJ5yfgsiuQYgJO^I)T@nllAZlzpp{;BpHz%)XHPYVJnq!hgn%b# zE2RYsuriDw1AGDzTo8;tn7MwG1g34g*2!sBHSjY}POLhp=nF$Yc$W{=A$01 z#4T%=$EOdMDV781+8FRvEdX89ra^-_kviCD6~j+3{)D`(Wpo83uQdY2HzQ2X^_SDe zFg*w9Gnr@$%o$`E_O4B1YFN||CK+VCDIjf*!l*+bf{-ALsR{zZmzB4<_AaaHqW1as zQ5ewI1g@_m1}B4TaG}DG_AV3#p*LPxVZcHPV@I!1G%?aIQ5gr&xiPPKwE%KXD;zO8 zP7AaMX=9}mP$Pomfd`s{C1wRwm^baLKtp?mc13%KX9a_NHwDhk(Go?Ki86q$Dp9LE zNS%w^2XJ63U*j}kVJ#uBORP-zSCSFP(SO=Rd#4G2Ix2^gZhQ)EEm=|Q2`A`XkeI*n| zlu$UXgu-`FLWRy{rKJxps0?aXNLi}PX;W*5X3TdnRm9E$iQyKbY0^*kvP=Q;_9qk9 zf0&oFP_D=FE@Pm~K=K|aCyobxg>@1xL8I;c>6I%bj+rw6MbmFIP8yVJz-VMY*i_)D zQ+P9e^^C+{!2mWw_bMKJw85b@=W!8!N&|B?+%)KD6`>VFtUaQE0iiOn4IccG0=1WLc^ptOH*!P4z{~mXQPS;T^3pZ0ULJnU*7Ip&_8*sbcg=XXtxA%zIPjyIEgS2^CnctO6~v zI`|w!UHU37v%(spc3YTOP@D8JMu3P8}Y*!%`M5AR_(JB;&=q|N5T3D?CL@06_&ih zl2=&r3QJyL$v^x-|q z=yxh(9RDkXG`36gb(~TP^Eb)+?^K_`@e9ZQHu2vN7AT+U#}CIADCv5;1h&lpO6{zu zstOget7K7DkX5BKrpoi6{dTCRU;Aa(aGEg zB6^&N#tB6dI%1bcT&asz7NggAhZfMVyfYvmzc7~%DQqpU7w^pI=5D2u&^@{&=#~!_y;IJqu%{C zm(RvNU86o1@)c>J=hpFft>dApIh3+mPEr1edwYn7YW7 zD3r{$rx^gx@c&uk#6JI@l4_m*-{Sa1%>QX97lT=9<4cD(K2%RQEr^ATPy))ZQUb1& zfGZ{7sXy-?vr+=ClzT=*Qv%xCFalm-k}R@nE(4)A z0&{S5$$MWnXL1P2ninXWlNhg@ z5P|zAgKXMO5Jt^GU>g!4^GfolT}L3K7ZAr*vv2zqxYHGIDHz#D+SF}0Fe`Ip5O-h# z7I>AG2{nj9P(~h$7=W3(SP(j13l$%tDGDy0dIr=>Ld(yl5frX@wnGU`v~0s&)BaaN zR71=^re!KZGR*wy`1lFiz{b$duPlNvm8xZ~Ldc~erVYqTPxQpgN;A)7LhM3LQ{R&O zx`UH`uHYw$vgkxv+GR!gl1<{BG>hvM%5azX3%2Ij539N!#jlo#7HkX;e(WoyHxzA_ z_KHJb@*6aaq>EvYjZVNT=FOq6;q09)8F#R-trZU!h+&_(5aPw5`q*TU?^ZN8lO&U` z?aO6Z*S%j*VUmD7S3nIv#2kqEX8f3}l24a^8vrXO4vnMOLd^SXGt)xvV82 z0}H2=t_6N%7v{e)foB6gi3uMPM?Q|bM0ZP1h)~jgL~)XPQ)Bj673{UKE{2wD_4IA~ zEqmGaVwQ|54cqg$G*_#QvZ}MMAJ4Mh=yBGY>4YuUvECRIF&CO?5Nr%81ItrhlJLYh znMx*K!^=2`(01mjCVl7Ux-bP1nf$d+tw}7}<-FLB(^zt8BC>oJC%IUSLEc-D<^MRY z&Me(Lca3t+Q`#u|yX5Zvq?zqb3SV+;!L;UxQ<9_4VvG|9FMJ`ua*ku|69!!kWb9<#hcF_fT+O5}ye z@F{gLvcOMsRjF)Yf@zjAkgdECQGAraU21oiQq!eTFGJHfR~X@Xi+F@00*upo-x3I?s+=vXFXzzjJI)biSMwH{elD361R3YK&`@y?Fh9%YaZ4REPYZa^?TL#W9cnQ43LIrVMpa7SaSKb>++2=%7T6n!&cD5P!-(z4nW)$I;^! z{eMROm2hUC|5G@<@_*do_$L%iHWsd=dSu7;?b9>uaD06#-y~0LL@)F-{9I-)RhE4I zV@CL2vcKN+!KvM*Rg!%~W9v;)JU_pbv}yd{0vagpK{f!A(~nVTtg%J;_um?Bz3y3dXc(L@ctRAE4D0E_I%6QMQS_2 zH)5=|(#5t_@?3Sz`RZP{DSWD4UZDLB@*#wP^=tOJQEl9h5xX8&A9rE@>m&UCdbR&= zarF4#F41<|ELYmwtWbF^ZLTxxWTk^uCa*JHhg`QoT2|iwyFPBw|KswH<`1}i`(Me` z{=dob*USGm;-R@S+CFFBs_p+izGTfbWsCvP*p&frWdK|m0M8sN1K`R4IJF~I2EbFb zT^RtcWB_yujxhilJI(+o&21Ty}|D9MOt)(?es) zDs584I7YtWv!T>fkZ+lDbaR3QwAU3~?`66J!oPu-wKSVrR0cp=FRR=*ofRNM>9q0A zLtZWn(v&tZ|Cb|u6!DsGQ7~H5E5e}3^YjMB%+!VM8q=*%OK~icn+@jrf9#8zO)Kk ztjtvDtgjTxfT(>fWL+C@OVe`_T#0#zD8Z2ljgzLxm_*9tA%&x=@zsQ8c-QCPr9B zebZ3$bCrU%Ozc3gF`pRcT9jaLs3JTQl^M--=;u6C3a`zkN~)KznUI3tpiRtLHBdOQ z1eA>AGD453LC#yzM;%kDXtH*i zwb7^lRpn7=8&xW7Wra{mRa)6x2=GQ25sF-vXbXvKX%mR(zc}8ZWm0HToW%FDOYQFJ zDL{DH@vXrU+LT%>HW>S0O;V;^73}p`{9U*7l{%@m3+*s71By>C&l@N&`19rKr_0FZ z4w$6Im}=AlOi}=zvF=W!mS~j)v#;Wr^sERBVVgrVt{_#wXL2r!9F@wX8XAkknXzYv zDkqu!5$`dg+HoEFIbWS8nRenDnaBAK_*{vy)_Ey)Rq5PRvMf~))`4G`{DP7EO%!KI zHcvv1QiEi7Tb?$c`in(oM}fQy^C~wE{c~=}!}avTumJrq1*hfZNhLNC=iQM=O(et- zPTwC+qiGch#l>7se=H4%j7`OmBJCOBotiXJbtQv*M+W+Mn@uO2yROY}8b$#Rh*Mp; z4cZCJFQJwZf!|vpnWwM`4dt3N&(OFQE`gv}fKsOQh;V>8#pE zCpeEJP66swoUskFuBiSM)xVi;o2bVc>AsQwkze;@t%gQNPtk2CTL^Iu{9 zzet$>$z#O-|Lfy+%Mh|{W|Ol_NCo=YQeozvR;qeh4A3ygTo)$P&dxP?slWN^^3@* z%`%%)$kD2-GE=KidtJ*y=amcDNYzk-P}Ovh6RNfY>hcQEezl0DdArS?vXB4wm+FPC z{2s6TwmJVp_4KdQx=qB!T9e)n7qD++m)XHr)|l}=(0%FO9J|9|$bWyf(G%kJwdgj!7@11i2B7|dn@ zJ!s5g7PD;>42q&EV>&V-5s&V!zn^=lhvlbaNg+G3NK~aMOJUL^?MTGUsYTd?AP`_zIRYz#Wit+S2~oIY8fh385%674kp9k>{*04A90{IMgBuxcRr~+La4UR& zC){fB)4=AiFKWESgZ^!PCK8)*cerv;! zi>tsDO)Euv4X9$ouQwXBQ;{_%M&lV@P1*9aT>LX zBfcPN8e@(}P2(=Ny^FcQVa!@hV=1nuY0S28eK8%fwyQ6`9a=ZeP=QDh1fL^H?Vc)K zgH91gji*Icv=>I?g4P#vaTf4Vs6Z@npfuUG2)qy`+dgswG!;wGk}rvUk3y3si?5U* znE>r&+B*$Q_?+>HRQG1=7Dt=smywuvZMyTK$#xIxJNN$hb{RDD z3K(r0X(b|%{GKb5*NU%*ibUYKj95$~GHz5(YL!$m8=2WCA#2nFhH+V|+iITkx*S~# zkrM=R^`5*sGIJTm{H2XPa#~;}p3X*V-{!iTV@_&2yPI)VJD(S-XM79Hy7*&abO0Em zHpn-@rlUsL0tiT0D@7xNMUt+q5m!ty#}H<;Mm&P&xsuT?5Y3E%&9jYBMHD5Mk?aPH z5zUVyOf?pRcu{6@#j>3zZw@_*tUbui0X0|ZUO*F~AT$CqRVIXqNLyjEIK1kd)e*c2 zSxHP3gockm#tq7%AhaO!1)(KXaUBJpB^YwhWi+0-O&p`_$lea2EFxNz!b6kx8&XB)6+CaJsMab1lu(7Ei&PZIf+Fh!<>| zJ;wENzPZlPl*t8}OK}}p#cJ=R7_7=V@1@{H)!s|#+F>aq1*@|fLFb+C(nQvtZUNtg zg7vcVU7EmFuk&4+&|I~?Yv;iPdrz?U1ba`g_XK`Rua+k3KT;#h%5#DG%%LA5r5GmbATBHAm z_&;FY+{b@V$`bx#jdYa%C>PuG^-i3;I zvN=8753T>C-sgW(Jo*21Qs@7Bam?8BelOy@M&ZR<0XE$)oA`s)!_)8WBry5!C(i^m zwUHjCHX1bxY}YzF1HYwUDxLGn6kaMWI4deJ1Xuuh*sB}r*jYcTv7$oTwxT!X()Rg( z$ol+0TrhUX|09$AuaSOS{O<(*A13KI{vUWS@&D}c|1hDu*LC@S{_-zy=!n_+7)~FB zNFpXPCA*jSmKs*`*ebu$sp^H@mm7pXT!N`N0m?eW)Es5lt64#762Sir-=F{I`R%`+ z-=E6A;LQF3oj^$wmm4!Nu8j%a&viG)M7U96KOn-bX^V03ZB(F1t583dF@oGt2TetPPbw5bd-;TpN}qWB8hCa#%q7uI+Ni1Fx<< zBd?np{+E3VkHUi+|M&pz9`sZ@X>3O%cBfOdP3%q+*_~v|Ruk@$PwlHN=uk=hvxx5S*Zubxv@ zz9_1|En(Ibs-(!&5_C~%=>o;j`bB^DH3Z$LqFIx(G~;Y9x4o-|*}kaRQYB1f+&Vg5 zzP~_~N3tYI($+yuX5IS!@{Br5uuHpfS|pBA-q1HBxBQ-S8{xzXH*Q&!wa0$ra4&YJ zLcSfD^VxJMl0^C?C33DZWNgt;DoT0V3@gN;9I105vz;f`qDz^r2&G)XEw{9+3ayN) zm}4cQP7`EKBAPF3hPojbh#7$tQ=Ex@uDdzv_{B7%pV>u@Ut+_x?KX~dudBk06QE*X2JOu8)%HF z_c<=-&$he0@bW%*7Jp@mG78_B!^Eo9J%x!ES*^6nC=7btWJOIiqURD`U`crXjzpqy z85S=P0NZ3)oEf$cC9aFab&jQMH^*mTusCl8anic=gDOdaP|4JnPze@UZ#{a**dptHj7yZw5ivCa0 z|0()^Af@R46#YN8BU1GLsoJLK|Ebac@@Vuw*XN`E_4T9wnUhqs9y4>|@5uCGo#jtTtS(4FNDVH!{Z9 z%X@BU&YFviV|<`#FW_IQ>WkS5jW)N9gm0aT1vKx{E@!S9?R!bYzo1OFR+ z06K8EViXZVs4^Uq$GO2+d}tflPIfU{hh3v{+s*eL88snt+QrB(Gb2uj(_dgd zoEfLTx_B|8JlDLL7^&4!Eiz73F_d1k7x=GSWMYgZ$~ZHkrRjDe?%t={?2*awV>ES- znjfCV?OWh|eDA;r71zWOUg=O;s%5BDWoWRRI&km7*~I}d2zMh5{UAjp(QU4|H3kP~ z7FP~`7`gUrO>GA7tTXO|KDpTJ4wPfh>0Yx1lw;c|P#_kpn*s$z#qM?rX2 zu4;HQ%^}`Ybu*wq)!J^-6FgTs>pz&_G6^n|;4%p=li)I+vqKYHCc$MAT;?|V^T&nD zj1A99aG3;`NpP8zdMV+5{@n4O)Ac`PQE_FY7o{(xhfAlNAW{Zlgs<2Z|Ix|-q;!L6 zjsCw_|AAA=lm5dhNy5U%=u&#cJ@rD7s#0YsO9@L!r@%3%^h2i!`Y)Q4%u5&?oH?f| z#!cyP*vL{?r`4en=z#sh(sW<{K`Ta*{jZUZ;{Rgr*PWkldp-|OU)_@ro91W^rj1wk zdpHIHyzB!eBLQKAtkA-3t)1ba>uCDiYrz!<-82uoT;Z4{EotQ5jKr?j1Q@* zs+kq73PF8P6*M0w1!d?zxGl?yh@xV?Jlmi;_Pju#91nK0B6BMR*e^tiE7Ic|c$`LJ{L4wjDnuC(s@J;6g~r4#f2nCJ`K4Lm+>HfNBZbsCuewG;>X-{5}I z{J%!}bKpOl;e0Y^<+LO))w(YU%q%;l2@Fq0X<*B4S`?TW^UHCB%1|RM0#$+Hp{4jX zbJI|jZLAlik;zuso$Q2YFG5xi_cEf5?ljXG*UyfNx)Rv7(BR?d`QBm6nywjRZZwbd z^alKrJwASG)+SSHt$17Om>XMbNoUl0vqAXxX7g{qjAFMpts2RUB7YAEQTz7Iz5H=m zsWV9Zzhp1(PnVT8BY5&l){y7dlr#u61$T<@z{{#IJ%}=fGG-gtJwKJrp14=^s?e{a zi$FXZ-dzIzC%n@_9zH-%@aeTTCC+K63$oo<&@nVz4E7Z=ziodKUYy3iOE!cQ-Ol&-#d;v)_LD?ccB6y0@Rs z#DDMp{6E7P4B0=^V%Po|{sNHfe~pCpKXL^0ok9NyqBGPf=SS22Hd*&l>EihB34UO} z{<-4&_KzEYWdCanYcsQ9cG@UbqN`}fklh30$1 zobvWQ<7<0o4A)Y!5*%SwDoV@1P!knpsSG>P=J6x({QK?s@8N02nDf$GRK6-SVU?{s z(}9JcOJ0F{DC~)n>rb3sYyg*ES>?6m()bFTkSwi&Z!a|CvN-jH-(OCzAP39jp7<*G zsv^v3>ER0#ScO<8tt?=`9dUtmnXhM-yu)8qDoR8tozq1L{})V^U|n7mLJ@AZ-fpG! z?V0`Gq9BgI48~#B6yBEyxW6_Htp6z6|NWQ2*h|0v zu9A-8|LUIa^zb4-(I&om4D5I2=^4mAX78BdcX|-mp!Cud zg@XB}vPNkcl!H0W2qop2igHS^s<2ELuIdO0y}_zF4zr(kRKuD?Flu0}QhF7@MZ!hF z#JM(A7OM&~=WtcUa8>()09JZ%-`)_TNU0nPtR#w-;473Oj-QkJGn_@iKY~@G>G%7U z({056$i)A0r8EcsH%Pp^*`*!3_IFL`Fs;%5=j|W%HA?Nr|GxclX2V}cIOTvS}dFcypBy&1=UI@y(F9i2Y3%|6qnTYJQjF_y= z3Y!Tk_OrbQh#A&5lVppR(rb*Y<7G3o{Ky(Nyg4&l?AG-0-9u*HxW*b~JZH3VM&=%2 zDulzOgjbEuDS}tD$!)EZM=g&MLCs%Toin&25SUL$ZXqvO)TUuXEFk{`^P)kYPjqgO z*A^%4`qDBeO5_x$0YYOfb{@W}LfZw7!w9RW6->iQmsXC2f>n-C5u7WmLn~ZX397+1 z!D6GyN}7pAtgV;rJwVB@;}EO^l5xATYg?$wQDi_B%UZjLv?C0xI%WjP6zBa+cZ<;zHr^ZGQqs9*c3S*2 z9==~T=nrJq^O?Hh6T@NgrE9pH&Mv*vIQj}(*sCUTl5;k$FnJp2Gn{ldghO2xH zyF8n5LE=0`HOnc_MC^(9pnzFdHXlLZ5{wL0q;OK!nS>24jok=aS2fd;B(2@NP&sFr zWKb~`2L@IUMrAGn!UFGYvzq=sm!^KI*Jqph6zk_jY4$n zQC_bxxymifH1HnYg4HlCf=$#vgeMrEJJF%V!-R?}FcXIn%Dh46z`O@eNP`<-u*k(4 z^d3C4O|x&C=8SEcUMi;vWIeCG*&zf|Zn=t!s!i;tkW}2Ij92`R9CIn3S zI0X}v8`ysmm>=;L?tCfu1`{0$?vTw~2LMwqZm_LtJPSd2WtgS0m|E}Ef`@`S^d3C2 z<(;lm%NJNM;bt-}FXJvjpp&BQie12RLUkAD;p{S-1pF+e>P>=BZN4ofUcn}z_taW) zwWF6bmU$k8QYE#N5ozfEv-d15awO?_)+{!{YgpsM;s>OA@k(Nd-c&6%pQEO!C?Fc2A_8iz8DsKFoR*i z7k^)5X1zMAvbwrd-O^MvUHOWP_%h=ABEI!@A#<7MS?092}bbA zlhLDP771Fam$FDGba$6oC5Y9d#ELaUiG`I_ix5s99qFTH@iW?o&1zHoizM{bF83biox<`*!f@M1xZ7Yg`! zlV6;7MuDQVmwf|L6sKhs{(_B9D<)yHcoMb?+RLnC5+*WdOK^=3lW-xW0G@>kMDl#8 zk4t`7`9ofYPXU#AmG7%F$rx}4faXrMG>Q>K%VJfG;Mz$Nl?zkwHeOC%*32)O_(x{C5cj@(&?I|3<7}o`Z8)PuGYtQ%!*)l4> z@QkMv@0l1i2vRIk=bd7jN}xR zE!w=EeR(xr8wJ<2ATz}aN&-$-v`YL}i1cbLB!)#DIy9n$xAQ|Jug?zOb}%{O6QXNv&}qdg>r1jw5R{=T_=el8C60>*uZE*JVzd=>Hn~ zFGk7C{LhKr`hVL@`r_Dsd9GyEb7gVum%GnhG-Cq>rG4D%9fncI1(dR}VHh$khatK{ zm}oh=W`i%xdc#xZ{!Tx01D74UouJq4^g^f}{cc@z$3t(%H5i@%h!}VTd9oM7-FN`( z*3IAf;P#zck8gc&rG;{v8&7)xZQ#W+KPW^bH-gM1d%+KSf>UI6NJ^eeyUwcnIUswW|kL zukT%Hr@^&6|2Mvozu4-y?!oZs_236rf*|c>!8I(iy-)VqHzzafwcmU*&lCisQa)&Z z*lH)O!BGU?b&WK{_5J;;_~dGtH3&u-2X1(4ILzA7(GbA#i=?ZKBKMxp{KG5wUp9sR z*td#Og5YN2(!uz0bUSWmF?1CoP}V*K78mUY;c(&)+5V2_aBE&;74Pv}EOzS699a>K z-|HM94?de?l=EodrUbrU_W%~Aaf0CAg4ajIK*I%L*>Vs4G6Bl~_Pz(@z*GT$J3-_Q z+T9$kKETyF>_PR2eK`Ciryd*)t3Ga2=Pu+~@Ytg~${CxYL7tj-Nuw!_%}%9oa!T6V zETe#;4AzSeUDkBR&WjQKdsR)2g2Dy;@UC}^a_PF^u-%>050g*U+7TDg14%o(m1Vu> zi@IR0DvLv{qCs(H zX#k7L>9g@uoLy6JCgHY?ZQHhO+cqY)ojzoG6Ika_mocz#h0}Y1@}O`X@IheK=kxrtMGe z8rH~fvkDW4@zC`|xk8`F8)c50q_U>@^X@@{P}uh-6MxpgdR=WoXG+CDP0Ni` zRkLL%L=+$mnph+E10nViDT*8?!V!j?b|$)lWSBE~GzC|JHJF3UO3k^1>R0${f0}d1 zWYZk4|GoXAGp?aRmHfrmGI+g`y^@LBQSH$SWqK@9)vVJP=XJ_N2QH6)!O!p6BE*=T zYYS*xf(Yp^H#{pQwQi$G7b-P;TNBs$rcbVu;clqio-)%{%cT^4D@Ie4>Ygh$Jlnig z(cp5InlTfZ+2rp|TbC?#e@7ImnEAp#owO$qZsi6TVrfR*|m)(hN0;Rrx&C2dhc%)u$8*)M%H>inB`XV(V*=1+X)*A9Ie z={dpIq`mwt`mzZ+?zXmyD-UwV&@7y>qlx1zD#~pO#9?A847nE?`asV*k4sW&UA~u+ zscuc<+-_To!CGvueSXHqT33Mh#WF=jCZaGoJ0~N1Qm)X3@!}+Bf*Yqz4Xq&v$U$2W zs}-A?TgMCJrH4bRd3?9mDk@vm_$?RElw|?n7H}jE8#3ZLTCuwvh=n+OKSV2#Rc##Z zi^jjSs7ozF^QgURS_>^I6_l7KRnvd_X{-$av>d_Dq{QYrZW`U^vSbh}rd6X|6`7at z6H9MrXRN@PpmU4&OzX#2PgW6`uGlSWVmyG#RsCKrs5GM(tQtj90;8(aUU@b8 z+Z(YxQKu~zHbd(xkb_Y9+M=#jdiL>fDB}hhpCRJOz3h{iB$j^GH>h5a=ej(mIfvmN zXuJT`$zXUU+|tEOP277==nLJoi|{2otr5u;%#$<7P&^|qp8Hz1Ovrb4n07M@%_ImP zz$Um@&@XoOwzbwHfe~Y@w^e|yY*hK3`&%UI^DniXNKhW)+>5a;J82)kr7q7|ABa-j zU#&jQQ}Fsnm@k~mn;vg&|GUV3dWgswMCxu6G>3c>`8>}qIX!_O;2D##QD7HRc+SGc z^RO>+=$Yby+6?~wD#$y6A4{=Cf4PXc1@k8;lg4k39BVdqTX`PAW%d(G4%L?*U1M&W zc&%>=c~O#}kYQwD{V@a?CkC>+?M?@V@DQbvp+(dbjPn~Tdcq8_oZl4%iW)z|xi;IWR2yY}ztx1Sbv3Nmvc}kj_q4jKx6LB0hpjHa7qb3f)&o&MDp-xGRqtOjbO^QPKHUjls zKap{{W9BWLx}Lt0eTcUHWtP}kAv{1TWQYN^n-<^u+^d1z(Hyhi=2E%-(`Clg@L280C(*EMi6|qQ zARE{y@ufJ!Ku1&0o}^H6z!?+8NmPn;lAVd>Q>pl5&89PDWV7*lD=dON!dKFIidIm> z>|u4%Qn@%7NL8z{R{s7;rf5h%fc1hU=WGz0B5QbJtX=_gz~Kc+cE#dH8=(kOQ-k*g zRlFpCH$-gFIB}S=ChTx^yIX@{@ZoXLu>%$Q-P-5ZyCC*aKuZ8Xi%IPsXRDH^uuoPa z#W;5aa(ugvM}Xl7ImWhl8`Vb-bKI`Z6fvDl`X6L4P#b2|;42Cx;RN@;r5| zyXuc{U6>XJm>7}8h&d0D0v~Y?UtEnK{dO!pioaY@!!@L|1dzrzOco2V$^(-o3`pdY zB^=939UAzKEXQP&tkE2(u_momqP31PVt8>meEx+OL(rHd=`x3<`>e_Ye+1}2YgX1# zWI9@mRXgr<&kn zP(g;p|Lkg9u7S$Mn#3u@M&FQ;BBf@ql)9L+HAg4I1{=$q3|9Am!|XO97=%L=#)kgDQ_6BHsn*2tQzXNf8>x#Rmh!QXBL zz#=*`4xl~U9tHfB@eTOuyGBC(=!U-9TP!)1J$~;UAb;&l8&Q6!=zinQ;6! zl5n-%%Mq8XMe3o$84pq^OJHi+1sHp{YU-a>_WNcQ`jhWj_PUvX&mG_z0-kb5%x(@P zJ?HyS3GS$gI81Bg4rwu|3Yx9l`lr{KTp6u5Q5%LOt@ zDVEXO+`=uaZTK_7`bB@}dhaj)9A%7TVgh?4H3JtEde#56O$yH-;nr?mEftynT_Skt^6W{tKM#w<_Bp&$^E_zJ|Zb-a0zYzU?NTcryetb{+ zc)1n`Il#Yl3Vf5l{WxF_cq`bu?fvj_6b!r@1pp6`1D_H@j5|NpjK3G5`yR`Mfd}ov z{GX@7z^|R_ua(vBs)Dbvz80ak#|P!W=d+!!WAdlK+p7=b?=j=<5A1?*E8*{ynR>u? zyRhvJ@S+cRHv4_?GEo3{UY_+7{^}$Cnsx#_ot^+6-jsowh=F(8t04tFckn>J5Rk3D zkJ}mHp08eIrUu2|GG}U+K&LAJGehs=D{~otOziiZLzTim3^($aNC#g241Cf80@%-< z(ttIj-?L$*(rjF`=S8X0DNizw9O5j8{blLTDrQu}f*bu1|Cchp?1#W+%>VlaXGivwc4|&Sy{MR4)wKecn!EJ#zatbnO@XjtXhje!!xF% zS(2F#&5gpAC67=vF?q7>xirm@AqxIXj%er-^~f8D(DNbD&dEEk;F@}NdIKb`3)VoTu;Bu13_Rj|~k6f{<6{v5JA=na)p zB4DnXGmXrtK;o%$*lsk=$a%1jsx^VepMHVgYp){igqJ}+0AUJd^vCw!h-vbt)Srp% zFMw|3Ha$NR1r0k>fLnfvI{_$jSg=F~T8@5yuRVqmcK+6{uL3@;Um(-doK8>5r}u_) zj-G$lJ6}J0|Gv1wtYNK(N9Q5vGQ~03{`K*#`r!>2+aPt1oF1bNh!hX$6KlP|9{N1$ zeWmRpBD_ASLg>~E_iulz)mOwxdf#gx^q`vR1bFQv>`Zj#g&L59hO#HzZ=Ln>1b@uQ zv{70bix36}B8R_}e0Hjd?k8-x6kTk=tQ%SvG%P;yzkIm2fPX)4d0h)5_=@D^7a%np zQiLt^W=^dx&hENIxOnl%6$% zP@mL_B|tIJvym^hPlbz;n^t>C%4sI!EpSl9XQy^m*qBDx54O;#XYQG2(w~U_>=4au z{fMGLZ`gz)yCQ^Y?|Yjzd0isx`iI6v)%>xaUD?k@q$88C$$30NPe4rP&JdwRnGwx^ zt{(@Vs=|N%g*!6gw;T^Rr+Uz>@982}Mfi`Lw6FJWfrVIRw%fB4A$UHBHSSys^{}_E zj(+h$=zwNd88I51o#5Voce0M}$DWqhsHBfIoV{@EbXo{&wBMJW%d=m%lzT)tzrz!y zrs4G9O5E)hWznxZoV!(fKp}+)L{`g>o$`ZMCd+>6*A`^ zZ5wZXtrKs&$YGwVqG0Y=ek(M3_1%t1f&4F9p#(zH)c0`tAPr$9?t6fYRvws()^?jq+Ny-1RKV0|Iom;r(DWzP_2=&|M^cWy1 ziaj+ze5v)@0BspJ@^X?bJJfT(nB|{aBQK>D+uIh#uq$LM#45peLY5UX{d4fvrXIZ7 zX%_u37Yv~sx1lw3%ij_KetZ%eE+6_K!~dVsk9|ctkHNjg6UfCfI8f-7I^Yi1{KS8? z*IQ!EreHyR8K~iJ&>q=?uCTUc6v6IveC1Pp;Lmmjl%A&@k+8ns{IxK~_b7m-V9yPP zgXNo7QnUdd(fb`AbP1`-EFUC3u!vy%Xhl3kliz{O4QBV^8Ny;0IbD85;bN#^D@aFf zd#pd=BcqNcP>4aUAjh*;%7a=13LF3rY7B08M@Q>P#7SW8<75h9TfG0aHEH$8`4;wD z-QMI%I0U|w@7g?@`DqtNbDQvQPxyE`Hf8*Av~X?p;O0Ckdv$iFjusLWm?*v9s>dgx zRV${{)v~7~??MBmfC>5nnG*qm4Ek@4miRTQqEd?F58m#QrbnMsjIgezutD=D8}fJ9JF3Do&kr%M1^UhuPzOH|KuCGLFGUjf&8%G3M6v7&taK<<70RBz8DEui1)>zp zoY)84;OSDZan)5o!m!mV$ayq}3EBm6SWq$|6lW=DI*3JF37WW^okL}5lK1AX{_ayl zXxfg5jgUQufg-LD6Hl;!Z-_?Pe}8I2Dk6xIKrYXUgdXxY?A52#HdR+z zX1VtOj!^~<$N^-OKG*}EL~%ENA(vi42r0>j1K$w!3c)t6zm^5cX6=WZli$$xc?~<= zL^Hmy8K&h0rGMdH$#6T`dzx(D{H!qE?n4fI}3X7g&GS&Ky&8M z=x|4gJXiX`8^oz(A|)^79b#xB%NdB93O?sQ+IC{mSWX347$YYRA7}q*U&~AOY`hly zyzrX;hEb&s!idV+mZlcTAS9Aahwxn5uB3_KJunb#=8g=VO!&=F0`3F%djsEAJ`N@Z z9AG5chB!}SdQY}dx?T!mURA68mu&rfN|%M)VUac>J#F7^Uu*Pck&?k&fA5U{TY!ER z5vt_>l%GClMSVe>uy8h)y(>MoEuBQ!VqzpNnTUkE!E%qHOPM8&pK6}AlN}|FP}OaSH%L9#U0nLd z8NdJ9$>|5_u}9|%y=+HP`sFbyOU$vuRlwp(i!|)`+K~{-*+NH&A*{@7>?J=Yof=O( zw9ziIT{5&RFHYi3;;L1=jZt7UzT|rk;X(VVWAYssZt4Y{(QGbrh7UcNa`W;mJsnQ+AX>f@dbN5MCaMD6(w)kQQPjCHA#+NQ0pm@ZqJ3e)gc zxkylZr{dLSzJZ})Yq%7lOqpf1u{Un0ga;&!MmBa?-D_vD=b@h~zRlfjoH+jbyo zB^O2+x7rD!bw7qP9^X~`%5&t(`T_ot6`ttH`_zjm9SMJ8kId%gzNwJt5|YxFV($)! z`PArHuexiJ1JTywJ?{>kg4{7l)z&?4P!JfWG(jvtqQ<)L4~HcDa}HLZW{vpIyZk|g zizpV!pI>=|w&Lg@wMMUoATbfNkTKIX>M}8 zQDoloH$(MpWMp0XVxM!R+hWw=%sV3RT08J+;L9g){6(e@1bO*38y{IaDta8rUG>h?Q=Wd&5ILWIIray z&*BxBG?J^oQOH{lh!9YRkpFTMW9XwkMp##ND+Cqwx5et6U;uE^^LCKuRtpj10{B%* zZ@9P`AX+V52i6vgiK|Z3ahWvvOMX~$3)XCZFgC~A&EH6u)al`<*&!7VodrPe-%qIjZRzZ!i6nIky^#vpp1`SC z)zW>4iaX_W5u1V|KP|a8O#pvD$in?OQaFidWA#EGG59BXu#2ipH)2$D*(vB1<~Mzc z?yddLx=eH43f)*9Wgc;fh<2`Px$BX1I$5;PcYRrq3m9z@IU8p;?YUy*k4}%Z8_oL= zRA9g;kE8y?x%09|@z?f9=zVQ`o+UYX&YgcPVXYo^D{n=(2WdukqJCeoJ96ELkyo)n zsnku~B>vl^fX0t{V4};{ z%nQJPC;9%GkR(fGnUKVx#syqP#`+~#gTEJ8V)C-}?Gmh|zXqblLV`mN@bdi_>vzC{ z68__WM^#nyInUP}bq4LU`?UK-%*oi!weAmJU)Izp&o81x-5WTsi;vp4B*8bw7G)uW zemYDMoX|yYfzrfyBQ5FDO^AVr->|Un3Ck#cG~_`6O?tDDN+^wkgRWR4*{is+`K2gm z;J%styv!N*YoUgix`c4&9aUq~(OWW%nF-br+R|W{yihI`0~LLjDG4X=luGIJDOwlz zV%tWe3Lxd}e-+kGYC`3;@$f4p3UCNS1fUq2Xr;kla)LuU>UB3VV7`$EZlZNlBm zgNW3oNpdTcL%&c~rTioJ!~3l*Z+;sF%E)rhfe`W9Aa-l85Ro5Y(bf88bo@$li8j}q zwJ9aFN~=MRv#;Y#cY-_8`Fm^cV}JX!YN{)Bl;e`_)U_y9(ISH_jb&0MBgIiI^rJ}7 z*{Ov%9Ze>EPNy__jzDL` zIZkFxJ_>}plgEbdlob=}P!%hu3ooJwm-!QRj)oLZOLXK)Sk%w%kLekRAG$Cj`jKIWD~gbRaeuuX>Eq0P`@e0)wlfC`-OktZ z7mT-Gm=e3)oT@ve4qI)P`^Icm`ZA%`rKO$$-j2+;?E3tfY_$+`&qrKGw;x>fi6vq` zAxE>VAwM@F+xIy2%B3S$d7#(id&x7t*Vtc*ca$SmQ@k9d(4|kLGp%lXoLBhksdz5F z&Xk#co}_htZhnm1jC^~qhu`qQt$)70J&60e>QFrOuW96W0HkL1;WD%gkQzlMP?jkus-#lIvZtb;qEk_wu zfO_+Vg9guG#S+L!5%Pm`&+OQd@rr?`-|lg?;Pa11h&p*g6IUs>O-7aPf@F>{OOf-p zcJ^eyRA)bIo{B)bSNE(Ep7SH@(tF)#q8hii`B*eA7x-tCdTF<*8l3hX9R=>2RkxDR zEqBY0l`6o0ev(KwR6jJi{>^z zr7wy|)7FR*+LFQz2WPe&ppS#rlW<8(l4u;wl%kcy(4^T=4Pk#W9c@4^p$+Bv{|ySA zhf_sNLtX`6S}4aNse0vV{CjZA)frO%v3rrWMpG_nMkUqyMP1 z0oTAaI}wzW>XZJq$hHJhW$}X z3;zuOY}B}l z6|^EL;y`{Xa*@eS3Td5(Z%rZ@tXE%VFHt+2g*SBD=5?jzLeD?;hbtOZ;Nns>8&l&J zs(GJ)dx=i1i~}>;h1rA6y;DMkk_+|7Dv%ufGl#p9B|2x<`2qjU0av3P$+4wuj^JGL z7+KHbpduG~;4-@DEk|pw>mb)TcXk;dE|>d{p?i*q9HXCV;&K%?wZ7bVj;Pbb!cn4! zYt~vZ5G~8H&e4|Uq{5H&{im?XjveQxYDoY-Sk^@?*gK{pVR@$#bEm()ID12sc)4y` zhYLA(9RzyXecQmN+kJf-wq4|<;PbN>tC$;I6E$T6I>kFGub@UKbYdFHmoXpTr2imZU(<}e>4&)PVXnm7iCJ;tNasQY9 z#$Q_WS~mSzBk)%Is+-7A2m?E#yXCSDy1#6~kimS^i?h?ObB0LvBfovS4`~O89f#Qi z3dTyWSrIdhsb=e9+}CeK^jY2fx%a?pSASt_QDS%E$T?&ZaZt)6<7g69us`?A=mZgp zQMh#4`xPA3GL$h{1fh@-7PbqfPb4ro{B*_FooA8;Q9zF_IZjTZD2l?e4D}GiP7Ahg zxNiu)UgDh-5^R#nLKH$b5C(%X4x0{IVsaUjMcD#&5hLbn(I0nf6#N896~4lfOg&j{ zfL2K|_N&`l+3uG|&b;p-CRQYV8GFPNn;i6l2$P~$iPrNrTo9~WnJ{GWg;2zsb*LQs9~wZyf<4|~2iAXva5jDAQU z@Z5H0`eo+g`@7FTt!))J)-f2?$de#RCzijEbjHFqNRbPf3dKgDY}ohp^W9c7c;$faTBE z0uhrPpz!F^(>u_~8A3ISNvX~`XTCZRkQBOmErczBYb1yr_SgDgfFubG5cRdTl_DAi zOD7#_pAo0;;uZ!6#u%z=vPwwEDQzVsc2|g^3ET0JU4L~T^EV=aUcRGa*vGOF?3AHh z74kYMjdPaHG#rpiitLiutxw~%ymO!MFiL@$EG;l^%AkPff(wu95xRr|*UJps9uNi# zPRse6iRL~=KFWtOq38TeAYQ%21WPMn>*iI%k2D~fTzlqYb8$`~?>O+(ME0Zm+JiPt zd2Whz_gMgavt?dVpx6hOV{QlwnaDpM_6f5q021%86b8Gj1E(_VX|db*xvs8?DU%Ix zkVebJUgobNdgZbE|{@#kLzUROp#u~|-&kQ6dl<3XHfE*a9C3At-_hF$R+d}48-kkLYYQ~RrJ$;(Y$?N=i$FZQ7!G5~T#s+Z3Thq3z6Bb= zWlFU;AT*v)`}cmoNmchAL})u~~FXj3p*!PIUzpL@I}pg;`f6SqKEG`Y-xL6uR77MsZYvzNksuu~KUL zdL5`qX^E|(%y_xrq-e&ABTc7F%a=t=)_Qt>2Se1HvzX+-pa3*S3BQRJeoDBPP{_s~ z5y2Ja8n0;Mcs$C6n1?TVTlXDv&wMNi;~&H&F-kUA*@FMfw0Y>B z&dOWdyc#o>hKu!k)_?KqgdiJ#aoQT~9j?Qb6O}rjN+G@fs)gq_GYd;|i(n-H2~lD( z4rapJPl5L0hVTMj7Y_A2*2D^8q5ox@Ycx8rTw0ch)w4Wq{lhTNwpe3vEFZMzoIOP0 z&>!qnS{E@HdC~98v&E$2%8sK{X{-!2#QG5PYgLP*IjdL|NzOv?-@k{*0XmAKwK0y{ z7NP)Jp&ka5@o0IWwddTEisaDMk!ZWKxH}43QGjCJsR{4t79{JOD~_R-I#U&Xfj0MV zi7oHuuDfY|P9!Mo1CpzC8l2Z(MPi6?QNK)w#nbJzj}HG_CbKuoS9Y3E4(M5CeA-)L z&zwitJv%fF?*({vS0jz>=a6^4O5s75AQR6nQNkU5shyG_`ws5j!T3m+^-(?i1z$#d zXo_qM>7=qjWs+-T#c9`4W2DQ@)#m7wnE%mSJTZ+qJr_l3Fqw&ivjd0t6mI$hO{x;h zFlCaFUe8ouV$fSnPYe90#3Qae>xa{-x9fUq`V)n%8T|>R5yQ{dPHpZKZvot4GKR7= zZydgP0VuJ=QF+u9>!D16XO+sx9+g~OkUy>iO$hj=+rVb8E5U>fnQx#!oZ$%*`#=Y$ zzc3p+C{>;T8i_7Li0W7)F*eKi-HnwU@yI>B{{R*j!DSvezQDbqVNHEiw zRyn6*DRF3_TPUKuO82=+_}wI(C2;k6tIglHcy%XC3L>IVb>G7J^NE5vd{Gdn{r6M~o+tNVD;j$)%L*hgHp{Tw9e>i~U~9mnkvIJV_!d%K zqKhC}U(&chWxvndD|QHR_U$dDshoE2V&ND1#|IEJ)$Mox9R|J*WoZ?+K?s**w<-jW z$|bT1o>rZlc@m=|K+D|*(9JW>80E(lC<1xLA7<95ywvKKj#D24$Im1vOS@HyewmZ2#Lgl?R3~!vwn%*QB)utR)@i z4Zf<(Eyv9~ z82YE>%PDbN+PDcGZjKVEc?{8FG`(AcyBZU*Qdj&P!NP0@KB-6+Er4Hd`yftUz}h;? z8qY9HZQR`{aWUUNpimxN}C zao=!J-N=}&JPhC(qoVBB?~4kIJir}8AAK@g;d1VM z_n1|^?JC@dnLoG~P8q#0J1vZy(L3$Zw8SCGlpG|sYGbc86KW=YAD@GBkILF}^xlAO zDA<6)=6pt7ba!T7v6QdC@gs;B@aTebf8nlqi)VVy3iVY(x|zUMbtcO%K3s-Js?}}8 z+4f>4<6tAuVx%Uo7VMC+9s8c!WK7W|C$ZVdo^bZ^sCk>zuTeB*>Jklzw>liUP7b!r(3deDjzDf2Pw%YP;Gps!Wvi7No-%;)fakp_hL~phZnQ zKz3b+Ty58o_y+IJIk9QR`ZZ>suQ1<_Px0n#?~8(Rp+cf_^A}e!<>i`>nN{_rzA`aR zGkSsKB@>ozV1nXds zeNrx=Pk380eoX9A@pO;&U@Lp;C#oKR|=CqX>mC%hP7AI1^lvAoZiy>u@MAL zS4+72w?NB1Dva61XB+k+FHA=o5qL+Mbs~re68(iDaS< zbJFt~9|_^^_oG5vjcYs}C{=ys~~cFm`wVaWnQ?@^rNO1 z_pOp7zEbk#+g31T6zJxZrhitSt8~HC9;t5WQ&#Av6sa${VZQ7pHo`FY2}Gdy3FL8=i1OVn*qiHr#VbRNNOdS=f}|dqsG??R1f3Dz>l%t| z!OW`BTJ?H^jT=VS9VHc>Y>%8U18JhJW?H{o1N<&F{I)lelc5yU3q+9FacQUYCf;2N zhOlVq4S4trc?CYo-S=8vB((6CUR)pN>;>Q;I)ZmVMYW_ofJ@^@R~s%cFMq#J zc(`@syKnXFmIF0>JeF)4A}Ju*Wvq0%cF9MH5M~>)R&wz0xe;)BcHTo|_W3d=tQ}J~ z1~}2kdj*Oc)CY5b6HRM@M=?z$y={3M9s9n<7P^vCDYv|Giay44PNiEZb_0DMcwR+| zsCT9X#7K@Ia^TVS;a?&ZzWg{aWW|geP{71JBTW4&f>SbNoW?G^vQj3uVVr?vP_;@es z$YHiHYf?2bc||j1GRDzZQ>j7cb(GtrR?l(u)^E6PwG~lg7EnnHP9{^rhHBa6^D<&` zLr$oh<;urz^7h*g!nji?h-l?^I62j9ZTC ze}U|gJg0l{7pMl-`UeOItXv5p&Km94lnv)4PU_sxfDFe*gI(l-VfXBvAFXJ=GpQ=E zCNnu?6)e@Ws0ef@+4Y7XSh=X1(4P1=gS@5yB;Tlwzk%``{1X6VmoJ|$z?XZ%m%(VI z!StbX`Q}mxbjGzWUw4GDx5p8!&on8H(Cf$av>!5&c&)AvtTv0M)$~k>^z-*fv9b5Q zM88bC^8<4Kty5jSBU;6FXmU3)DD+~A_z3p?C?(XvCNURD? z%z6E%zz1di(cL~%_|8+V!tjaHw!jeeY*n$U2DU-R(Z-Rhko--0lzAk><60@h*Ch7$ z3H2*r8Iw}TFx>x{&uhdit=7q^*#}BI9Nk*T4>|UG3`F8R2gnX^J6?OwU)34&6Zku1 z--AmVXtv@Oe!2CFz3;7K8gn}$Jh(l$e5XYk`dE8Pcd-`YJr@xeg*j|~+j!eN zz`J%lHdTZ_y*lYn5;{E{b8~W%GkX*7co9##*;sFC>^Nuc^Bj2|^;E+4y!Gd`?|QX# zP)Ixe=glhhOK<7gdzxwpydL2jIU-i&{RSTc`x}#XsTuIVkGuow73|YTHxMD{yzs)i z>E9Nk;Z|4Bdme<~_)O1ovoQ=EC&~J4(WyTumZM@k6b{U!ba+ku>Hd&0SJv|C6(a#Q{y4iBFO;0=x3x=A)-u}9W>e>a{3UIL*QV0`esiJOp zRwqWlXD25g-!E^;&((JqK$_@+E6}B6^rOMv8F-|=r7ijrQQ{fRdl2PVrP;A+S%#2tmQA}GgiG1I5^(lQ%N>KFL za4WJ~p~<{MLF_C1k|j=b1%}h@ltZq&N<_$GlW7Q zgQHo3Pirn!H%D#wWl3NfQP7pc&#_m^dpWheIhC_lrt>-M@n=?o>?9`K zmFbc~1T&4It&!Lc@Fj3`GNOCD(Y#|^_KaFM4ig=lU}#%^95fi@EX3q+YuPzUVi+-^ zpKpvs*Owx|6#?p~525wrY%ttd$)D1CEAdKIwc0>>_rqhdg`Z~8Q~ejARMz)4pW(5j zDO^@)syusLZHpd7!#A&$MU}3vdlv+rxP9MvxqwPWYVFc_A@lALn=jP6cPjt`8i<8kC&{YmsX8A(fz7Q)7XMrvptABR||>6o-un z-vLvaq*(`p>tqL0rZWi~KV(QipnW#OmR>*zG_ux)!ZPv)Ppd2c_QjPB1h2oW4&ubt z6Hko2GK+HZm&MkxJHN_bNk(NiWaL3`fEej&Y*&oof$b?}q*(18FUp`kCGq6Ee_Ys9bEyffD#I+VvW=)) zUTE87CJhXWZom&K_ls6g^zg98pIW6^6~wU38J3zO67%*aq~U9IR24-XSPrr)hJegK znd8Nr{97uy3%!br(2RIC=jGp&VhAren9{d7X(DFp>9#0+NewtO_4j1q(rSyD#n236 zC_QLiaT?Ag7Pb^`@(7QUpQUkWaTw!AfkVVgI#Y#o#~HOKNUesRZjdS$^g-*5U=`Px zB7`20D*cS;L$1kK**5WT^%T7SqK!|OtPY8^K@FT0Te8b3 z_5NouvR~HY_nj}-D_3625n5(>AC8AjTpKa>Aw{ihoCNhqPf8}$p6n9hPUle-dP%rp zF`xXQ89AGz*$j8&E}iS&rUjbd5`%$T;O6t}_hL}&jxn25Lb zRB=8AO1pAdeH&V!>6a8MLEnDn@OY&BV|9_}1Iujg1`Js*%zO=c@tIljQ@m5!l)F4^W z%d|OTPNp=RgopW%L8x3-T<5Gc7Uz_MTCGvJUT>(a2lw*%x5frrNCqymy=9atg*L2P zKQHFA?oT>NG$Vox0Zucr_c=tNqk|thq}l)aRk#vv9Ah^DwD{zT;1)R@Gj-=MTM`@0 zlKUCv-zC7Ls7A;=!(HQ%?P4`)Fs?6L{HXLyI$Ey|9Y@1b2N;3>uz3rQ$f^~IX%VUZ z8F3`%jmF86E;YLHN_uSWmD{4)i1ix_aaja%rJy7P^FOq3gNF_HEbve$vv-X$bBVzjJGVSPt-p(Y{64_jEgJjQEn=85?DqL&{nsr37SX@ zr$C}~Xdx;b|C}+gG{kU%XiaZRmQ{vz(%8%EgHfya1d=D8wMePOP3{Xr$5Ukhct-|B;wqXl^2vT0CuT+p==l zzbeXZ1^yPS7E6xY-5=;V=_{n@LQ=?|t}6)m-Ol9ny`hS`&ib)svQk}_(|wdb*#ml} zC)o;Fv-6JBJF01=DQr4_vZa~2fPwe@edSpjvrg9G=jn{bdgo&m4^XTtIKcb%DG$Dq zk-r{NaGfe>Gfmz2-8aqPRlW6$&Jym3XoS1x34Bdcy|t%DAkv=i+}#*URvK5wl>>@* zOEapiyRjj<0mTnpwa)W?^{RBQ|7 zo+w9&-DP+tS{+Of+X`&py1VF%@W;zYP=2n$=qr5J;*vZ)lSjFhW$bT^FpkR!n_8D} zTM+{kgubcA;pY8L(x*wSm2zmGmn=op(H>yFosi$!YLiMjShVNk@cqbfjGF~LLTIAm zBiEXGf+6jZ%wQjp~AlMdH%w=Y84*`%USV4STexm9k+>8|UHm zm3g4LRFdaT!EW>lu~iybb&{70FG-TBcT>k<1rFobv0PNzO6TG3bVPz1LSj!NqwMC$ z;)->P^F6iwz8nTK#sMF73(L z>q`Yd57!7^>-FQu%Kg5$el=5JT@Jj~6MX+n0scc@Osiq~$>5~C;%ufqKQTCp$mX-? zV)h$1yt=MmeDPir-O+(Rb8m@>_t!&!tJE!59I6H>VYgtx;}z+3D&a*lt~$a|?$KK@ zFo9k9lTRoI032X>6i{Xy7WgL0B-=qsR@OF-sV*=rQP(k!j^Z23aCH3N!`DfH?W%CS zq5}~pJ!(ci@TdZ0dgubyN+Utir`!rv(KnG!e7Zk7?&xD#p6&*y_r zzAuYYiLbRFrVUJsI`R{~~xq2JTTu8*1cTUmvy^Q(&g@yMdiK0p4z&E^fW< zt5XkNeOr8Cvk#qU6vKU=bRU?(M;T6FscTbpiJxDePENDI-CI;sy1vVwGcP+mjn!UY z+YV<*vC`2Vo%K#a-%u|_DfSF2#ucn0T1P_>iq}Ganp|Hj(MYpb89Mo1HjJFC5y$VA zxp)4Ffli?+7TFhJ`f{mnJpey0FFNyv4&H!`FEv{Z`22yZ^_iMo@tbNGy#D;H`kJa{ zS00xH`m*hQ?PD2av^k8FzOs|iiwD5pAQ8%f3~MfnAEd5icfkWDEd2<_kh>hJ{wtE@`~xtpG_6eBR!+OZR4h{*&v+`Ug6TPuWh zJX*>HRlkH=)9M_QsSPy|sSL+fm+FurzTGD~%klluF#}0H>%w?Sv=-PvDC4c{odai@ zs!gzxHkgH(u~%H%ohhY?me!yPlO$czo4h9lg%>3=qTZnHMS*&$f8$n_g-+C zpgMY9U2$Gq;kxQ}?N{X&^F?BwxCDGU8&|4)r-QT#Ee&ho&L%)5zAnq7U%Zx7Q&P7m zYqGAVv>jEEFFF~X6{8&MFC_PbHcqFq^DufT_~CzvqW$SDT=x!EpYQaW`;%A7*0pUe zi?XNGwm~CP@4W7}#%)|LBNJ2d&Z#Tk? zk!AVYT2X6yJ9lrgBnWm_-5ofd1h@tC5ml8FgDutLQ!l5i6;|v;?TMc!Eph|%Bk6Ba zx49I#UhGCc>#a>(DAfa-?6o+$Y3K(NH|fUn==RAGt~8-LXVA-y=Sl3}=6zyeIAm9G zG;`-<90-#En$raA+q5UTNH?dfNRS&p2wxaP>&&3a9bO%2>G1kJSi~%i7YTHy&~3jC zv!lhNzT6tQ==_!nH;>VXf*yDtC)o2QfJd}KtIN~ep#SA6t6tktr_*vNt=W;W1RdKx zgJvO)7FqCuW%2bsQ(mx1ocLg>;AMgd>FN`-;(qXPpE=HpHgl8E?OuhxAIx!+*rHe& zu3TFxlERKv6<10PxX_gRLgy0vXU9OJgtXFy!u|&(91|Z_DDZrlCgB!fg$?kGkS#fm zY%z?WsYo`S8mwIoD9om0bA;fEY)F=k5Y^=Xp}BU&T!W zOjXS5k1tA@iM=fDy2)%ES8(5_MBi8NniLq$O@CZHRj`!W@CgoMC*E}5!qGZl|( zN+uR;pyHVd$wc{3aTmN~K~{__fK;-uh6bFZ2I>t}aQ~>{X&fEAF^5 zFC1nc%8eE(_kJxGBKW5}2Vo|L^i4lm7h@4DRZgUh`;9RTcg0IEXo?|zyEe(18!%>5{) z5%vuQG-~h9or{GVjP9Dyk176L&i|B(42_E8f54r3iR3NPnXFCh?iqhN}?fNTUak&2b1<>_#g+pdix z38n`?lt(Y~k&a%Lh@ZS0?omB$uHRb;3?>E_d-?5*f z&CqKV}DuWWGPi!mE8>^Bvc5O~Ww^u1+1(G+iTbbkDOj#djyRHZcv; zalUnD*Dw6}LGTfDNzOiI?9FJ*zU$>~b>dK|&L0YW>^pG#XA^-A~n9kAx&XuEkEz(lS!3t`vypQ zJNL?r>E^Ih&xWQJ7bVr#QJ8@NUbYF{S^TMsvufQmh(PnH`2@?Q*x0qEa9y!=wOz}h z`1$+gYqNCxiL!Cx-i(30o#zi(BLWcw;Un2PE0|D7*KU#pR24N^gaP>g26zl(hN~E^ zE^(p|`+c0!i)lVFZHn6)p#Yfte!gp7#Nhh$kaN-vN=pPDYBEM=WqFDl%l?5*X< znSjq(0`CjdG*?(k-~LS;`W-qFg|Ee+h`QQx3!|9YZK7?j$%@J%a;cRH$;y>Qba<7* z7kavw&D`X+T^ocxn+GX$f?a|L0P{dxpgG6BeFiqK-{^uWnsY7CcKMv+HZGkFHJ=Bu!9#0x>cA9#^?m(*zmQ2;u@gz;ju zhCsm3Gxrs*T+zpi>w>$$7itch9L#HRnXj~SwPfxUKO`eYm@qXWfVwaXX8So6<--v? z6o&xFqQZD3bY$lyza`6%z_Hd$<%K}Mg5#{2Y!YW#Jfor%XCuqm@y`si*FIeHhDHf% z3!VlzO`OHaO3}}YH|<8P)Qc&Q<>udCT-|jYC{`ouYC#oU(~YfF?M`*oadpQuri$hG zhV8kY;TqgleSf0b+xSLs6pm@)8f~Lz8iUQPMA=4$#rfF+J~GTwsP5 z7kk^JQ9Qm5l9@{Z zt`4jAdI$91K66YWOH}dcsmQ8rEEF+lR|fVdR#@m9@C6g*}#s;|MSGWxJ6!N@sB0apxDTMdI7r&=l(C+-d1i=0Cr$Ncjk@WEQaT+n{UNnBRg zo?`fq$GM{1K##&2E-;lIqWyXEUaKAcis>~bl&Fxv`f+&oiDk~@cIm=#3-(8F3N z1*@35z@q-W=T^Rcp5`O3EZ=NcSpSSXw(S44ER{F+|EZR)eU1P5MLxanzH7CXHt@6_ zxZ2lh;e^7m7}vL2xDSA=JQ$VkVJIEWy7;590!gd&7A$};r5K*j9bCbfNrd-=F3Fc* z&=~}@yXOj51SOWm%$?sdFdI@x5Kl5UoZ~@#R5V=ttp zwYh(Ye4?=q4x-!Vd5ZQPW#R{J)C%V`z%E|Vej^z5<4`+GLh7P$vz`|%&?GNkM{kWPusVjr4h_zkF7*NaIMrdJa4!!$p3EU^?H5+@}rM=!>y)hKEK zhA^N#Pj%`D21!SgD$H^grTFB-RXl5!Burb=MKXsh14`q^z%t4aXR+}K&8x&wB<2~w zLhxy!G~I8t#_-CW-~_%`*6%#dfK)*OR={;ttNE++%8ep6337%(zQA6$R-A-UEKaES z(2W>wlcd?4rDDpE|Iv`0pS~LZ(mxxr(K&m2cKUwwa`=+9`{!`qme?<&@zLqKF$0LR z{>k`PcKV9-Pkv?p7@fS7*zmvKo(<2>+38tp^ycmHXb8_nCxhd6FGnY@+0T&f z1fmQ`$EOT4%u$Vo=ZNgh@N94dxBZ_-$D{GDQtQ=de1bS%ou08id)q%7j|T6K`)BO! zyR)~a=R?T;C7?YSoxD1OT!wFkCu13Mg=cK|9&XtAQUCZDvugF<0rh7{9~+#${q=10 z`e@9KPLE#>;o;9ipsfG%@la$1g&G|9M{gwdvj3+4dPu2G0n1qn!31^em!ly*!u$O^924LG>A{KlEGu2PYJk6uT=Al|aK0$95 z9*mPZRrpp05(R?T$wRc_2Zd9PK>|bXj{~|v8P4|(mw{aIOfM*~Cw3`-!QMtHP%R+g z^(1x^zg-7I93!9sApb>s5q1du+uW|8!@trl<2AF4V_=wSI{{O!xPHU+BjvsFsSz== zS6>`AnR=vqU9i`g(&bEc;EUg=`W1h#U8(%N`e~*y{m5Pe;wfn6A))jHN?8+SKE zU2--BU+OWu!Ub|>(L=RcJVf~W3;1%8h_?TLIkr*<5WCK5(z&v#Q+@7Vu32#y5KcR# zUn{wk(RGlewy?sw+Z=zH=KUxFbGra;@2$lM!?#WoE4JHZ4x0#BCFYmJy}qU~a!Ha0 z<=A3P*l<*J|ZmSK0qGR9lE#F*S1_dammvxC!G$dLDvlIKKq(hBgiP z*}+BNDvw^TTofaNbRMwz0%v-m1@RLJyZ99F9+=T|IVK;w|<*aegA!Br&Q9@WK*3E5xO1_bQFoLC2&(tRYk1nHRKOT zm<40NS1F)&(oeZSMrJHJ|kMo>uBZ;mv@a4@y5k{?wUru4%3|)jiL!xG`~jeX1CiVNX=kDjh($ z*ME0Gzkb$!zC`_R(SOzC+LHe#Rk6O#|9+9r51^W2n{5@@KCk^UoWyF)3pfn<5=FBD zKKKaTaJkRm$?)MqH4L(FDiQa|q2IlB6-cl=Q^N9vEL<^<6CZM z@M5j+o6m|(q&s}#*@5Lx%|Np!6UB6W#Rxzzd{7VN9$L9+NG6wb+rV=aTd38ZgxVcq zscqz}rb&im8Jc8n>_2_k|Bq@JU;Tf4nGbH=-$?@4LF=D1nE5Ab{}((T z&{N#ezjp6kJt^K-NyI*hho@_^-=va&(OLhZ|Gqyu#zhfCwwn|eanc#MHI0pENPMeMiMZ!iAt`uVFr_vrs3yttso?!vWIb*i}7tvQpa1SJ zXQ_nK99+tn`!3EpVlUbL5qE+WZi8?|XPwue^Y^cDNr~J9wbuCwdW`}TdT9?JdkBf{ zf&iPU77l_|jy{o$-GrYCdKs5>O;%V(*=tq%*v8o9Hhp=3D2s0UItig&3Fp(8y+ubU z`%KM`P~BV>D@?Yb;IW`86o&@4t=gKDtSF4W01|&ph0A#Ac!z~80@)|u)tj9jiJg%} zI2hqVuR2kUw`=@lt4!Tv<=MiTLv@`Q7?*Od3L>+GGqr#+_r?CA9K_sy6~U#eOFDzE zF6GH=3@%h%(ks36Y(&wQS3-l|7a4p*VDMUOw9TQ*o=v9sw=sB`Y1tySFI{lO29kO0 zqI?Ax8{(GLVuo2}9y3gJ9vf?Sdo|r3B72#${2tEo^_=C8jTI@pM=p<#xMAv^9@wsL zI8#qIeZ%x7%G6OgcP-U@+F*1##?#VO46H6Lb-XmW-n^^_ zp~4za9XiD~#?Wh;>0qEJ!_Z_kuV!8Q-0)O7hLpsdF{C=PFl4AkEd<7@v_Pm71K)Dl zaaa?0H2|2lte)CE>Zz?)Pwh$7bE;1*&6yfp_cVK=YgV8Kx@B6LZ`xYGwWn22^iBZW zGO*fMaYMm9HQQXhX@D8K#98KCEmXv?o;=d>?y9OOc~4-NPZ4KX94Eb4qF^Ug)mBth z+gVq&$LXq3C;_O5KCpD1Vxoh6FFP2;jZ<`2&DLZMI#=vvbwi;5%&Kgn6#>elLi22L z(liVQt8$VF3*`VF^UsdxN9~3n(c;W9AV)h_YP?k`uq$dYw^$@v89>LC)R|OrlCtUHT`ovfDAkZg9p!z;{6wqM%i37bNhcw(i1;4t&nTi2?%ZuU- z{BAdtY^@A^>?lv5qr?;ZdYEqLE4rcYtQ-2{bVD;`1r1DS)GT#iVIUH?;})uh2`!cd zHVH>>GhCARSXrx0LD37UwF6gp}fLyqL!T!i0FF1w{N`-JH>Wqr4!a4z+u{pzD zQpFmAzUp&>B!hSnYV<5)U_S^HX_W?PKnD`2Vw_Ia1YXr3RaqGjDEEyBlnp}yWkrh~ zGfnl(RUGL4biwI8h`;nWeHm7LmWW=IAa*{8LI&4R_J~y1J zX*m?xow9=QmW`pLMZ=(IIF^PM0B;T1QCSmsO~bG{Q*iH8!KS$ab+?9LmjDQP6JhI) zsX98hOkG!}E)OPr>i$1_*ZSSYjorWJub8U4wY(*%!5ffcH@i%l_>@G_ly@zjIKs>T7z{4(!+qf*hBY`zQkUR-+bcv!;(?h2 z1gMj!m=J6+*~%dA0TF7-Eiphu^w|fBSV<`u!Qzv zH$?`9f6WvM81Od0{m*A!fecHUF1AV4#n$M$*s`)~S7f;Be3U&))Ny@yyNW_mU{W|a zpKN8o6tvFsR=lkYSbZ%oy8VcwP?;)%64A1h%a2viF~-TWY*OQjofyi6kiC zG4mK{(P}!PJ+ASd!~`Z#Oi&nv64-7GxF}G979__qCU6*_q=9i6#m*WMT3cci;uRd9k+ppR!j~i7wU;UeVRI zT+JCtI~d3PysE>eJP0wC)o$wkh_R*K4TGbyuvlx}H#{aSIMa+4RE+V9U;wT$@2{XruVp6!equBU8R;(@t9RXXPZH;f<^f<&MIMgX;L zbD3A*#**5NZPL53HHtU3ta)3B8|RCl@%;+K5UEcSkO3Ue4TBG0iIHh);uIu=G$xO= zeIkZ7biQ*$2|?B^()LVK(}(x6ahZk--j9h3du%$PA3SllH*bBv<66J06g2mrxm#)l zQU5K&&^Iu1F|;EQltZ)|@C2N!+PQ=uj1&m`Ycr>4RdDimHwh6wWr}-XC6B0m8p!ynE77%`5 z$oFD26eGKTP3B#uwqpKN7-|MDZCQ~yr~2ApUw75L7_)XG*tVLM6?DQDJ=7W+?_>+DeHG4p zRh88l8AS)9^E-WF=72*lVvfEy=IAXkN0YHel5ap?qC_SE0|412AUJYBh(jPM5tPW< z0&WRoBtlBS4s?HzAjLTemod#~nAlG3j3n?T9^fIi040jFG6*F)LcAngfmQ$_&ShOj z60?XTW&@I#)ktFYk0gc5Viz+JE9Eoc@;vuer_!3l7g=G`PlF_41{7unAFX67gLn{< z07v)uNCHddqaq2+rhOm@268%U8MYpVC1w#zHgSpzMYqEeT;L^*n4aT(#+rGaJW)VF!)~nnl1M04@O5+Ig2@!Y;yu z-2fAIHB8w3!$jtjICnyN9~V4zOr~*aoiIXsTX?x=;f;*;LTggXBHl9FFq5rhD+49( zp|`D-Ff!iW`)OyGXc{5h_Rdcahly1UuyQx=s}(p=jz-~##0Mf4jHK<`QY3@nb#H9RSDyaYi>0X%79QyA%$NQlDAm^dBsQ^8Rhvz?)-Mjr;F&CIZg ziJo**Fam*C%V<9DGB&wIY;qg0$*smF_X)5mlPU8649+;7h{9xy2(Xgr22#hNBh%AgiL&u(=iFQzL!NIsih;a9Y2)Cs) zo)Is5#*P5rX#=y05`)E9)gt8Ip$#sWgN_o(2RU3#-0aQNQrZ@9@7SM0&v5dCU6YObK$ zobIDHP^^Q3iaR><&Cw-*q6ut9&}7lscc}Tm0w%(v;1Ib5I=e^K1vOdBcQ+-%N{#O~ zC=HYEwhRg~L2loqT0=O;0DaSp%e|}?QCn?5ZM7P;)h9r0COiyHuDOsgh@mzWagke} z=1HcN+p~{QOk|GmkHbRIPQ0shiX8>tyO^xM`gwRa`40{Z8o_QuKy{%{R*@N8m z=jXXvgosUM!-b;TK?I)Qi9-b0(>^00uCF4rN5r!$ZDu)lo%iroL>pshqKoDo)BEu( zxq?lTn_+d67q{F4tl|Nx#J##6<9$3VRj|NQ3Ou2e5q3&Ehc&8|J(QM`N>Lh*9Ccw; zaXLZ(4qo*=wktb~2HxPJj}9ae9goVJx+4Z4iz_E`;|kDWF7qk}%)1<6HkoXeN^i$9 zKwpt{j8^wP^7R}I!;+%`N;n?O#)6#YQOXLJvSILdUEpgU@B zB`_a&DSFyO^O;vUy4=;3n>5i&rMK%!ZfJ)Ap8hKPG=5i)A1Ag_-%;)un>#qERluq zsRJ=jCfel%lTzm>ciJR&+$!Hhf#_Z4s{M|;;=jam@n1sx2Q8lBKOEwhFq0~u0_bOn zPK-o6$qkQL?$XSA^Vscs`hD8p=Mn#tEyw?ipW=TW;#bFi+{QQdEGZZ_xz&a{&pECI zdFs>HsWgslo(g}qdOdjheLlZK(EnlUKco1cT0X7+hxj>_ky=W5SoB?{RgrlWClZ5K z#))N*-M**ar~Q2v>%Y{?>%V+j{}1uoDF3Yw8FO}Lw3w+dxD*cX>Gv7^4nhAr=D+5K zFU0?jjed&%eURUm5&v;H%-O1FO6x;H3M<- z*HwFo5ebce{)%Ub&pJM2aJ`FzZCnGTjh_8&?u)y3WzPKaw%r`Lb4W67-PH4C>s^uC zMI<|LRLVz2a8&hkC5bhq$q1o=dF?LTrDLVvx-De2NPaQ!LC!4ilXRGRm z9pG@qapO8OiXvfPWEw#}DYOE^qn&4eh&L&MGg>|Sg#_pc^PSvWaclZq&b#)wE@9{W z_qc9}ot%^9-WvGR$19AKixz+QjyUW=b+&d)fduUip_CwZZQOrmA{87n%^o6xF&<(A zV$ebWQl@B=3e^l(j$#r5Z-Txm?VL~M|4;VYApZ}`^TDWP{s)GsaDo?UQuv~-~hWsCfay^n8frV~vkomQ3%lwM375TNr zKN!UBGnV+JS$hV=`rg@#m@mm|U$;}AwV*#`O4&4+iqLU86}MQ|J9$>N=U^(UsC7@V zU+;r^YzD@Ym>(n?jlv6u0YOoY>%Vk!-9D%mNkT|?8Xep20Q$QW>Oq=EK)|hceTM$d zn1Zfz6uhLqU_D-6?8+l`Ga_W$x7u0w8G<9c`n!|JOxVH#J9MPX9EpCW%F?9|G zc#Uun)kzVe{>k7#PeH#xY>7>T!ix=2fOcl$W7T6dGP=msQOvR8$bn3OuY?S!V{YYp zV&Ol}-!A9>b}v1iG#_+I8{V;*{}-_VW`EBAhbyJ@6aRmR-;9w*BCh1*|N6t5*FOO- zA4hMH&l})|_hd+n{VKlx%`YeKv97?-hh%rsD%r62^uo35a^QmLtVqo3lN|nB`biRD z-md@K_2A~^5e&!)aGl*Zw^ts|R;4REeE9t&6n>FiB-I#}`yk4ktg7U%-T(e`7X~%p z@*o|y>-q7!mu^-j9Bh0ZB$Bdf<@>gLe+&1alVAZ`EPx`zRf*i-G=C5=a(^?(e3vdd z(O?AqlMK7W$-iV%=J+q)egEUnQ3=aDas3h2oF`B_Ek*R6s|p@h6JQ$3^T5iiXxpEE z^W*Xoo}8>KHn;>qs8tL*XbdE&{8b5*E34ZsWf@~Mzl-bidhDw@Guoa`gtXG}*qIYq zFr61R?pj-BA%~FQfjizebY_f9Zh> zs-nF9E~IidFSF}Q$V>4#Bisia4a>IyOwG*x=x_2(3(|Ltl&C(V;-RzJ6~9ex zl5iJzv?_af^!9JpzPjzb9fPQJ5}w?zV17FqhtMVCZAvc;{5+}NT>_8Wos{S2L%)X_ ziz+!sl6SN6>b9F+PbTGP57puTq50TF+U%i1j0%hgkqmC|nUh^S{@W=mR1C66k;{)$#KcdB25m@EXR!n=lO4=KHUP4Cr*a zKHHD8&V2)YyEfk&?6Uf4>r-3vc9h&qD(~+;r)7RyuXqhxFu5p)AgIyO9~c6F(+arP@kv+!le%S1ftt0!{0+OaipiO&q1%;0 z>w*&Pe}LbO#^rUD`3M%}?+23~uG^6n(_u1tSAX27L>38_+))WF@l^%&1Qa4w{7l;( z#SvHZ@2FAG%Xp@p$24`+%OhfiU|~Cr02a#O^~Ar3Cgs&>6u*elvdV!G!DNL6DfK&` zc<$eyM$WxBijr!ObT0;Z?nkKDzV=OfNNa;SnYa^2KQX2{@DCCqt`m}X;9v9;w6TM2 zr9>S4AC7P={AyMOyn6p)I%djjQg)N-a#gP|)uYY~y@DYU z@Pa{K*q-T7_yXz|OZO#qzQ702PV57rvHj2yq)3FMg*+G=fMb$!U{701y=1WSB;~-n z%F6093KoQVmc-q?+2B33{t4iY19Bc zIR)MV(n5c=lYNZ%V>)Q<$KzhGKXfmqNIw#jSO;q8I;dEb6k`KAKQ`178lDW>-N*Rd zKnNJIs6M3!oIXeyB8sGMh6_g&a->a#2b_kQ;*`b)!3<&e3Zbc5L39)b2erhY+W3D* zX-jDfQ)lIXYmX#^z1dJAwIb@gzotR?syByFrx)c7Kuxb1f*+C*Fyn+3cq>aL-QSWM zk7uV`jw7Fpk-zJf*OQOmyz{pO$`&AWv~qrk{|G%6|MA0g?4M4JZyz~4)T^F#xyt?d z^N$iT*i{)=OwT`lbLsOz5*=SA?}L)yRK+l(o`1OaXQ6ue<9zOIKK~0XV;eW`GDc7)Ow)6AdO2B(q^T4#wMhA^E4U^i1o)H6y8fLb~%L z9r`Hq!y#IE$O4TvPq@BH^1QwVIR1JPRy#;k4g7?a;1pVqXoHyj^(3cPz$*3@WSwL< zI3LYciBMs8=nGs0ddgphQqi<&bvcw_k6Kb9&^p2BBj_o*^RN+s(44=@aV1hDI zNBL16;bILm06AoW{jhA}p3@}NHtEeQ`^lf8Z-#@+gFqL7XgTte(|>zEd3jxpPSeTY z;xrezOI)IrQ;M^~X{{6Goy;;T;yg*MNVU?={Y!Fr^&%g=^zUIV^(OBp(d!@IM1MN@ z>L!6sCUy;$;^<{Gg5~|!=KA<(`sk<=)fY#dXCcG0&NEUDKYRY7-Oes{1=Rd7&Jm=L z>n)j1Ec!r6=#zKrAC8Ob5sBc(&!Z18mQaFu4Gleh_N;@9N2f@JW8ZmJv&vT&SI?&X z3jG;He>iS5BhPyN)`e?Mxyq51Rp<7@rs_<&>M z=j7%Mbno%A?JYoIa(AA=c%OVcmSfV;~mn&J|PGW!HNc!p-Z{~Wao{t9n9e!fufdU9vE zA7F&H$^o+g?;qV+>_7bNvA;nA9ZiQ#`1%1c8*^VDDuHEod_A0uqvO`X>Wc*KJzv=) zzl8jCm%#I;YEmCg2juBZImm%)0fq}72RVsW-)8XFy4?9{k5;^jz9qb+^;Oucdj5np zaE1YMw}Wo^Rr^7GYtD0<2ItgsdwF2aYjO#>7GW&BZ`x<|%UW3T)z??A-XJ>z{~-n7 zbyq__@zD?}MdfpC{v?Gp$kL4?z*MQb;4#|-D)anc^htBZiRd7fs^VaOwma8~AmNySs8lPuSnmoZ}rCmqy1PIEz#p&$8T$ z#OFpSpQcXQwGGvGfaA$7YaSW3ZRx=qS2^C__`kDUpA2rIgbjPYc5!vCpR@h`QXsw4z zS%fQ=OIx*tAFQ~hy9$FZ_Bu;>5aXonb&|wMY*WE?By=Y7iZzgI85&CB-7sG$8V-uM zvQ!UV)D~vvoTaicLnltYJcCpRSD$8H&!*Um(73aq@HD|3I@UiUxo$(A@PTy)8`|G17XOK)dT^$ zT3dSo2eER1(rEScQNx2+DpJ4Xdd`cn`YV4)&mjd48WyYRm z1&O0kR8FVQ*D6yCN#yROOo6`E#hEP`miJSra%>_H0ER=49ODGaiv<;-NT!J_#k9DB z?DRW`0b5)_tIPAN9kDrVqF5DC4b@L^Zc{0rkjnW2Le2X@EPZ^?J$CoZA@z~%7|+07 zJc=M*wbSWyI9mgzH@7)Pwj~tb3eJbE2I*WMrDi*jP9}9mf5}D1_{WS(OD$ri zuW6OXq|D`K9YVc&*aeicvlb#&Scq6`A!50O%uM(#YMnwVO_~P62<3+=BEAlEAY~eX z^+b#Y`?VCF5w1cVf|;0QoL@gJALB_gBwCJuPSy5}LS4H@2rWXTeOc-?2M(G zwMhLO8zkAxUN<5wW_#g+=N*9-$w|jImgyNm>~Uun;%F;qt1?nuM7V_H zin5{rgJ%pZyy)a0&pYcVlmqwXfmPN5KNQvbMrNpmGA0ZH6ZxSG15Q}PjMjm#jUQv5 ze$Qr@4J(RXVP<;M)8gq`-NVubcjz7N(FS+v9@cHJ7qUU!^ zjjCnhKkkfftviNheMClzbDK)}gjCKK^bysp>8TZ_rxu%@+R5}% zKO{7P7SH(5dPhOzD=l;y5JMv&ShRQ36Mkk~8H0oJt7pYC{9W7dcHnW?pWVsrjeo}M zu1A^o$Yv&|W=(Dt@%hZFJ2ib4wy@X!u~zs#)3YVJ_31o4u@I^AX;%Z1r$^ zx-MHeq`8n@E#$o2=~=teE9_1$wmZF(-BBS87+(+*Xm}zX1(YcsO3Bh#Cc?1$B95@& zyLRX>J=>f(Vh0G`{n^~^%niB8-Cb|r*6CTp(`y@^-g1nnI!xPg&T)tcLp-=bYzk%> z79?`Kh>j9j-ii!knRnnebW4#R00wDDX28LKIhdy^Xc+P#+Ad>50X>pHP_ZBZ4rAhYdXA8+9<=BkZKvB|tm7F~oJnFE z`RoF8j-b4ZNgSsm*^RMtA$x#~g(z`E%@{?@Slj1hMcfw1gxiFb#f_~6cEGXsdMx38 z&b-&_{LioLy`%h2K>`gmAyh#9oaj5aS&&AP|A(Xt_#dQO|9yz#SIDvq?V>X8nCE_x z`JIJ1e~|A8-uy){V?_M$#-9V+8;`qB531{WWp5$#enPCs(QORXh-@>?+f33nmsy*? zJRVj!(f#|v0v-nAq+YyV!kt3W%zbXTAkdJ3EX;3HlTS>58o$eG>2dgfv3dSy>ioYR z;#h|Ny$+XLzmZ0+AFXN^-0`nJ9wPr6>|Zi5@BhV||JQ>YW&2-q6|WN`&gXm47@0()f}yB}LQAC>LrQFKPrD&2@ z?nPcH36CX>e2|f)G-SRXQWirgdniG*oHG+$4xn zBSSw`D`g`TYevr3s2TmuMI&GfF;kRBDovpJ4OJpIG%2y4$S4k0S*cZ*-kS(K14 zA_2sb`cN@~9u50{l+>io|3!r$+>QSp;&A+5j{nQ? ze>wgy$Nz==U(Y62H#rMR-zxPS{vF*$pI?olH_5fFZJ=g(pS@Dq$PaHrafrsVt!d{f z_FfN$iFc0dCdqY_I9@TwE9Q8`9Iu$;6?42|j#td_iaA~}$1CP|#T>7g;}vtfVvbkL z@rpTKF~=+RqwtC?Sy^&~VU95D0SLn$WHNUyK6-wI8}b{l;6i&dg|hDd^o8aR>7YNy3h&DRGk@#$WmTdgw6UD@lwmFOI<#E`8; zsA{|st#uRp-z5Og^Z36Di$<|Ms#-X*eQDXq5I3pcLjj?_v^b&`E3vq+7>Znp`HNbx zwO|!3(B|&QinEx%gEjGOm?3)rR4hyBY>qS)AW}n6p_{<{&b+!E_zGf~AVM249ZHXJ z0g72@H`5`;F6kk*3Pm^;4fQgHw0P&Z3`Z=4CPmmOTv0PvZwS%R+^)M>q(($v+!=+1 z>JHY=M0AYua7m8ntcFq`A%#rCr_laVTrsYMokzNvL+f4z61)VhdmbcsF%$_>Db;~U z;LZ%D#66fRBe-N+qHbF=%)q#FWZ>#WHPpK3+?_pRzFS3YSjkUqb_W2)1^Ka=vCd(0 zuL3M4d%)&K;9-Oo_Wcf#$5`(w+g6i~j~2;o{u0*lnaxy@8G_!~03lh+4j>WV6xXmB zBx`{dp@yItXfk49QLh$s4Uq0t5X4JBy5}K?cY^}Dk0ulANsF#%&n)61M|iO5+4Sjp z=!?GE8Gdmd@n%C~+XZ!THMY)XcDE5i8QBLy8I)>7`qHMu71$lIMIOwLBQCgaTTFB- zlGc9(fe^JUuzz{O>Bj-jb-nKFWKzLv&Td zSeMTaD_)%+=Kj*@VHob?kN>D=hk2C%ZfkYzW%8I~@4_#CA2k8oEGRX0Q>SO&8z?p3 z8I-!AaC}d!Zz2wYNSQE_iVM!dl*!1*IMRj~8n8VRdN9I@-ZU$_*s^+7K3uP(P4?Q& z-h%HrA@$0~SRpVk}9eF=-T~JV|0dgz8hLp^8=F z@LwPM@eujnVE>c}HjDqNsBq)Ihd37Fzt>ih7A?2k+>WATJnm!2g+TC|#jt~CAotr$ z;D*KB5nuNRr^pF!%eL@ITj>2mP|84aL1L0dilm_-DbH3i9V zi)9lg;2Icqd&C5k0{uKS{Lgjf+&u69SnU7(H3>^6@Z9zLV-jZWy#0WvL=nQE-WN=T zgm5E?Bz_dqm{Xqwv#owZ{m;0fv-}@iGgtpV#IeZ#8*@L){7xA`+nVFf`X=qJ0eHKHxFP6B1rZBVszL#6FHMB6 z7<@z^Qa@Y;4sOL&z7-cINOo?E?-ylOn+(gGh;}2y?0%rOcR-j$VW~x!1#xL3!t6Sz z@Oy%cCK8c_5nVzcM~{P&U3zrpfOux{h;~n-q5W5!=^6Z2MXAGoeURhX&p)?XGXRdQ z4RM=VE!-M@lI_}VwGh$Gq9A!sqNg~0O}#_>;a(9*tMxv)y&8<|8s1>+eNJwZYK_Ok zd(f#JMFYEXSjUgV0q59zf?K2yF7h`Hp4vp>Bp9{^*LM4K@yOy$j_weMWIVYY*!`~v z)*21(aE-KlJRDpN@)YoOtAKF}BE1{K7oePN?`jl7bqBwR{j8h2a5xx$ZhP?nqYm#T zaC3||ttQ*}9nVGxk}({%AcjF=F)ypq*)S;j4Jve!t7wdOzJ4BE)xTsgZl!m(*N|jl z--$<{GMggek>DM>Yko8wX1mCt#fUBB)%ba*1~ApN&p@8azB<;SD*uGhQp-k+cS z)_c``g@XpR# zy?5_VdR@5JJ3T)6@TzzE#(N3xot{AN<9vN~?j3pWkIpZ9#~)6P&b{{^&flM1bRqdy5bbI2^z}KU(tX!Gz3f1$ zaL?=h1{dDN+oO{cOsaMC0i-`i`Ml$^_rIU_-n_l^-kzPj>cY*JU6AbP&RZBPlg|72wu`qgy(9QLzU-Zy;%6M6onD^9WgEWo{IY!Y zWACEd_Kwbb7pRce=V$NQEmSAGab_cd_fET6EU0R)mLm`ZuRmOL%Lu(!-J=tT>jGcK zPb>mMZX&Kj%K||EpWWX5>}Lz-0mFwc*?{<){z1qJ$wQ6$%+yHB67G~@R9AUEfm;8T)y7`!LAt=s!se)YG) znc!(2>ofa%cv!-Vq=P?`I0s7dIF~nn{*nhl_?JU4-kV|Y?YU=BJzDvr$>`>=fDWRJ zOy8M|qQf!R#vk7fEqdG`ll6y)%2d1=1;gkGbg#aA#wrxP_)Bp61VqbFj1CdU>F(+& zK7&XQho#l}sRA#QE7z_<+LscP@+%C^ZO~Q@1T~JJzP+|){N!qIU3{um1|rSlsN_|y z9t+`s9fdH6{`hn|y1R~_=klSlE4L3L#MgS7edIqg4gFN8w-RY3?fg3zWI-N{4PW9{ ztryE^uSo3x!{pWpjx=_5N*eg|!@1c#C7NM44kr zA(&t-DB|QyLzU$(9FC$treBjmavX-E$z*g@l+IacS7_r3+FrI`lu{aRxt&*P(?cscL3jsa9qF4D)z9%YOJcavjB&u5@B=)E$r>{ z0z_pRY5vs|R5Y8%OFkz-*xHQm^T5rlDJu|9NSxmac!gQU1C|=h@6s zuetfQXZn|h@jrtxzntZN;lj=TKgi+uUmX97<9~7dFOL6ZXa1Lp|I4$w|I5ucM*`zW zU>pgI=SW~235+9waU?K~1jdoTI1(5~0^>+v90`mgfpH`-js(V$z&H|^ACd%S$?}rp zfN>l!d*FZ>-(6h=x8DvbD>?)`EzcK+ zg|_POD!B?_jC=6nHyq1Bq0Pe1)BtNT)HKc#Z^M z8|!n^0``}sfQtvW{g8)@#ViOlj67hZk*bh!op8o!C}^0}Y5<%TDY@V_NhLKV;@nU~ zr=%fIbrjH)$BIWO6C#w$YVQq_Su(hp@7XyrJ9j+FV+sC`-H_i0%Y(WHum20KkL}eK z&Y>&)KPlCW&Eh{$&i~W-e>(q9=l_ZRpVfhdZ343vurqD`a_T(i$>}^f zohPUBH_sdBt6U{8c#R?2_ZBtNduJVJyw`aNUgF1zZw3=Y+?>97G|3S-7r(P%*)KeK za&Lf>!FYnR)rf_eKiR=+bel=)EgeZKx8rZuW#&K!dl*1D$Y$N4^Z5yK)Xv*C%l5nw zqaJs~#H+F-*Va3tESb?QByD?m*Q5FJXbbL!S%rYu!(qQ)vX_<<2aKzVe}qJ@uA3LX zhA%F$?;75YzWzUZ*WR5rlI-VieTp9Dp1t;59(wSS6MHYQal)=+`(QGUyJwHLky=<2 zj2KDSarW$Yzg7JZLVyJ(2_^|A4j{U#tGl|ZeqCMN4JLqx$pEb77Ay|EXrW(Uy*}{OGi5gL#g@9KB&RZO5+bp6PmhtI?-TN4LG&lcLi=w|&;o-yGBS(+ah^ zzUJuanveE9fD2v`uXQ7zjt9%p9gjJlr<=4SI%ehoT!6HH})MZq-fKtW&4P zoTo)`_Jd%!-GP!{EkDAmKt=$3m^&RT`NCPZ!8Q_(ZMpSoP26k5yasJFp(MQUqh{EK z?mS622o3%LW8t4$mQZfpU}l1gY}bAiP1rTS*y!2=qjud7@gmTyf)h`9wCxH)T(e;} z5u$50O^dpQYxOB*u4^@Q3p9k~Sk!KKZey2)m|wSfA!Y@KGthjAt=o#5NDRY+ZLYMf=Bz?{Lu-No(}*&n*iuzp4YKgy*uD`olT- zC6dh-;<^pHi4ZaJx=}TZx>K(@Zp|~Qw#l4^*I-r9-;S}PhAqEZ)OGodJCJ9osKi&9 zDqn8vw&f;rb7-?^HEK1}1;FFEb;EF(X;rHRHLH5ltnaAY@~br&yLj`okWm!Vc(Qz` zNzIvrxUOjS)@|EOLFRoQ<^g(Gmru8H_#*^`oZFvfoTQ6KO zqcI*~FWO zv!T1DQ=|2&Wl~!AOsnZq-SeOnDu4?1_da=e1#6rLNBH}8Sn6wiK!pX_htaD2>v+9fBj$dYmE3RQ;S=DAA zJkg1-a^r$?va?2B#Yz6w>9$DgvIG1=-XpohzKo&cU<7z#;z0EY50OF6)Ps}szB9?D zu*vz0Lb8cgSv^Ago#GEfqSpRV80s`TcJWQGmw*+Ev)l83mB&}fUCA&RBJo>T%ABve$Wf*5}B{@C7sD-0NT(8D7V&HWd zpF$k?LJrAGCve#jdL~|0_{ZI>5Jw4LQ;kxFc1g7sk8 z8#t&U7V7AZ*v{^MWIRNTt7SQ^HLVp6q61!p>Z=Fj6^$5q*FEEEohQfO7@RGVJysr+ zizL~A^bkzKk{e*~X_>}YvQJ0l5sM4^DWVZ>;o*evBfk$7C^N`4oTf@-aFAFI!oMr~ zkqyLIVn{MkF^}1fT>rhY9V+BkqOLNB6l$_n2uiP3z+_>J#e`8pVQD$b$chk0QDql)r= zcJY|Gdg(50dSrJJ~oa-4@mUsmh@+Ouz zpZqdQyx5<M242#WE!j_6-1b{0(Bsiz3KE~@2 zOk(XeaD5NBm!x9MJ3>OC&+b^1)CuE3Lb2aj)Q@kl8Z!rSGndy^leI;L@YiwZ_7u!n{q2V~L|or2@R6=Oo&$A1NE?f zKrU1#ON*e))1^DxlGN!+@H|ufLG}_Q1R2#vvFVr+0|X=>g$D0j7_wiunLY(I=!&r+ zD}k2yfV8AZM#)ltr1lMFi7X#MqFEE&vs?jebykvk_A%h=G@la`=b^Sm^AtP=VhW0D zJksmSq2de*eiR$$hIlJ%yh1GaCfGQi{8DT@7wo=mTs)0mSp^%Ahk*u7%T8`L2=k`A%&G{7Mva^r&X0a`Ph}rQ7w=e_6Ghr!VsH@N?G6 zxmz}ph@bqu9UDdbel~>sbvu)kHvgde}%6!+(`Fy9hI_)t3&(f>Bc2rQtt^Acm z1fB9ByU@>^GNdX0>zq4TY|4zJ(>1vB-8|n_|3UM?N`_;8SkY*ZHQC&UI||Z99NmG@ zWIP5v<8lu!Q&t~OO4pLv*JI^Q9n1^dzamE*Xv(E04lqMc`BIlHG-!lD0NhC`J+^8` zo0fK2(|#}kmMP#5>5C20WzTpbQ_jw`8c<%$UfQ`n@AsS^d5>jW%?0|`ee_ihSN4Kt zoS#CNanf&9A1S7(-1`8t`b>!xFE~Sy_5T@VtGHJAl7eD6Ez87D z|1Eh{^YBeRimV#X07ZU{Q6RaZS>$)AR;{UM>Wya@1(Lh-Qz82mwuo+m?DNSlL-vpF zjomh;pWSD?3b=o~KHnUy{~o4r^qOK&fLeE)0Irx@r%x?Ia-@Jg`7R3)=0g-9mBa9o zazd8@k76oJK!L7gksS5*6mH37?7<*p0}fU3c=Hht-E@6kAg;{EH;98l9{>!Q;955% zkZZA8mS04Y0vt}6m|x}Jn_@_g9yvVHus-_=%8bZ>HzKHA9&(`8?Xd!M^q^M7)k-c$ zapFW-FeBPDJc47AXukau0Hrv?a%YJ`>kI=RCRUUIr=);*8jVi-?W0TLqCRt+WMCSq zpENjIC8hEw0NqhpaZ<8MDKXsw?3HA|yxv03q`4SON=#BZT8zn{Q z5MD{FA>B7(pUuB;1^QoneJ#n$^H9Kkw_{x23^e7Rnp*xT5a0}e7QJI(nOuwzmZ8^; z(@2B6X_;Cc&{J(chw%QJH#vYg3G_6D>Sh2Rh}0j97(?gYI0(ToDG)dXf5;BNzA|YG zbmmS%(fH7Y(r+ksj{s!D2Ep{Asj!trMKZfeHh^khEsDysDGO1QWu*5}e2XaR%dX4j z3MoJ6`dKW@E(^NOyGSGny3W6GWTT+#T=L8CRr(5*Z9}V7Pi0B-ycGnMz=Y)>;uB+s zV>HZpcKO@d&ym;XS5PhWXB;`4d(OX7Eh}6Iu!(BPC%;U!EVv9|S2WB5*1u2H^7-EB z^Pe&|aqRkR^BwQP;v53efiu%hHM1RdAd)?yAM<8-z3luWWt9S6(>7?9xupH5=r0qEE<@x(+r%$&C{Ek%>M+zTcn zoNJ}r<6`CtZ8uPNqzgVy@n-DxregRtNVQxNMB7h7Iz{|yrjw;1o`jKl2UUJi)+@m1hkHNznjP$UHtU%?*w;He@`T3pv4bOX zkJ?TG74y&J-Y8Hpm;5pykv;ZwiwI%`?2zSl6V<*18|EI?twg%QsotB2G@tyVB2~we z?|?iNtDixbxwl0qVXknk#3sVbC;zB0`N`2cAW6>W=NOZDw@f5sGXFY?jmBgy`Nze` z&&%EgIdVonr66y@$`JxFH*HI&aEE8-@G8NJ)0GMjKumCt3k{w>WCt%NLm)Wxk1Fx) zxH9nLn@Rr~R}7*q{MQPd8!*_f+2~k=K2$DwrAscmtBCrSpw^XCQ&bk+9Weuen&St4 zImFD>59RTL5HPR;_2gWM2Klj6A`+oRq*R)D4h>L}zlopl;hWxDJY+in^v2u74L&?T zLlC2E=w&@g1}HR)Rk|^L=09Qk<1iV~yV97(Hw9H2c)-7ll6{wBEXHtwinn~o*qzVr z6R`Osrw0PYx^PJk{S+-WWJ@mEz}^Mj++k@TDO)Vn&`EP`L^lgi=OwdtIctJoS>p7; zv>#+zO~|Tn^g8L)Fe^(GiaI=9lw8Ihis1crkjXBPx=MY2e_u}JkbN2^TtUVgS50l> zH}Jw0_#k^$p~4j*QB0@1FTC{w_W|Fro=4gb-(O$yRjx=OmFPW-V760=e3$iUSPDi% z&|@@we;c^06bFOBkd>V%TE7e(UiE5~zr!p0Zo(|$2LLFBp&J(b{h*tMQEmJ{^iN;i z`PT&X93el1(EA@tm-qXQzO>5EKWo~FGyyHq2Q)SMg}o~~!ENOabTz;9Y2d(J*FL7b$7Zx&HRH0=@~51x{VF%l8M13y7m!CZdC9ULAQ z3-q8kH#8jJ>5c(+6ah|(AVbhsu>g2pyu0fd}YfWEh#k1BR7+ zM?vg6YO^#3MNFkCe~NCX*lw*hGvnSQnyOBS#p696cv}d;NDS_L%v2LyoNwCX>f*Hb zYpdHPohx$Lz4)bb(mo-D))jm&6v?lh-kXbeJpw7Zt@GaRaH&VMI=@0_0$N&C0U zZu{zrTy(Y0+sm^~8=iH}kI&wnbk1LsSCH@g0y=RAx-t;$T@Wl#lIpatkl5RH_xKHb zZN2K8b$Y)SwbM@T9BH0jbV-X`wz|E}@w>BDmt4N|_3ErGih@cV zpS3z~i{zyBw)MKrb6o(Hu7=43cjVVMZG42~wcy`zuXAyZ)i}O5?{(p85o+1(C0T#% zT(yg&)$LqigPe9R-WD}%PRMb=i9o*dwxEJdO=ctlN$~r-t9C+=oU~hKKj&GCnQ@^6j9oS)uaF$!q=Rqz2GsfmJ2 z>d>LHcSpm$61QF@#HODAfw_X#KBym_#3VlxnGA3q^zagLFuC2w6!HgN3fez`X7CpS z_;|s~{Ld^irx^GBnb@h<#~+q+mGJYQ4FOZRvK01C{OjvU><^=BYPnQ59T&{9ZZvFa zJFKpIb<=6qJjd~vr`)i&biAO99Q&`=%zDcHn_&NIb*uK>{(p(rOAwj3W;Qij2g!56 zmtkb$>M1nQfL(*#9)JyuuAv_$H_@(_3!NCLPw~EyUOeP*9Vyaozf93aUc?F|wIu@(e>#kuNre13r^+unWj5=Pk z*0;U-BW#&9qi6tEO{-|xoU;nF=PpfR%9VxFQMvp6nvUr3;Uf$2*)e}6+#PS!lzWvj z9v}Y=%di@m@ozOu{rmX;60es(o?IOFe!pxJlqTSoS7)7LQYcj_zgowY%1Q5p{Kg$d zMp-AlWD%1NE0y+nL0riu-30emIS2=pUbpfAX&IPVek{eQoMkt5Q4{b2Kim#S(cuCz zhHcv-H&4r`3vah9rUcWL*q;;s?yztyoLi+H#tJAmn7BbyWPX8Dh=|39?|P@DCLf}6 zM1Cv1Yn7mPj{&{+hiN*U_Mtt^BUGOB8H)Q-WxA8Zg=Uwl*$n9QLR_0lFT5r$y90^<={#<3*(2wLNGWG4(55@ zR^+V?f$?1{a%gTcVUpvokz?zQ8bu z`7}c8(epowpLnPUi(!^jUdF>D94=@FHFcHMFZ&B;!WBUj<<v1%7(;v(Plt~k)EMPfn{>U+3M(8q+ zg>2-omlZ(|R|`h(B?^gYKSHNj0Z+m>EJX3ckiqPmfil4GCaI|~K}BWc34I6KNF?DR ztweW&{{dyG;0^b{x*@&yg(DWTi`GpO{)668@l?8X|M+vl!iVx7{GMj<%W4_jhmpJv zBzj8j%t*<)6*s4-!lg>+oGA4taU6_30a@%(d;phFHlKiCa$ofwR^Isp6nPh0pNwev z5&&Af8&&Xw!*4B8VhKWye>wb5r6kY`_)5qDP21l7g0v^l58gsQ=!tHyG~J~V!x>6p zX|m3=aeL6VOVjnR$>gu8s;0&*Oxbb4YW1PJLW{#J$p841zAl+T#r5>u*_^4$3hzQi zynWIt&rp6M|FhgJuZ0{JtMN}N3p1-hwWi8mNMmLp<&zU!v@)|=0Tqd*<+2-^NQEQf zn_zfLM;t2%1Oe(a1h^YjgvHFRC9b$WkgO5U5KZRQzu>ZP6ih;g;hxFYe*9+AhhNe6 z4*=o1Kcu7gvT~yUF%_8dQ4pf#4S9egUkC*=NDynk3O*bbbfOcp#{W`*fvLSn7?Ow$ zby(oo38NngsD)rSiP;Mh2jc^xzaS!jk$>bKZ~o~cXmOW)I3TwDqCjZq)6$Lax@-h3 z9Zpn~#7kTaC+=b4tzOj0nPJq5@CP3(U4E#VMff9Uz+(}4#}g&iA)Rc;n-yWAj#0Z)oeyIlW&_MZN^ZQR)Y?7xE5wT<0JQ3Su~#O~#kyEgBo z*Gw+g>wBG!2P8q8jU=iP<=B_W|NeFtAO*^jDcQNmxg;}5AP`tAb{D|nV|VrBkU0*f z9W3G4mT!g;mRKf-SlTf|C{gwSMUTQOw&P%#RrM3baeVlxgAv};=d z;K#7E>j4mEyB4UBc`*X6r3+vbE(s&tHYvK(o)E2G`_ftLF+!PM8O#o*SC1Q+DbuR# z^VxVERhVxPF(p+zzy^OXphaYbkPa-L=n_%Bhs1aB1K^1?a0A322mvj}n2ewdummU* zODefY=_n#9g-AS)N?@)ZQLA1A*}jX}z6aR&48i%p986+~zy>;cF_s8`CMMJdf`tr- z)`&at5ZOdO*+6} zAifxK$6(#JzT;=&{OG+01)_BYm`&f`s|%IGF~3r`D83CN>ge6p-I|mW@xER9 zF5Q0*ge7_|-wVNv+N&QW(c9~p7?)%$Ud#_`{)@*# z>XDiljnoYaJvGPQQ}og!f5UYAq>`&0K3l7&AGs171NJ!E(7Ti>lSkpR67NI#s5qZ2 zR|yHQKN2~v0+uhvvX;@Hrt0ah-*8(=W#nTQqc)^bFWlh2`t?iem783a#UwN26Y=K# z73H_y_q2|lB&j-7_Q4;Guhk8+0b9$7sE+@1Rh=wmljEc+E{-!di+RigKlXix<#7-M z+!wKzrjcuBJc-;S@Pj!110PQxXOk0g1!Kvot||jx0sL`raLMt?y1uPDF($CQH@A0( zz2;NTG}Mot`A8OcWIm!}3V^(u<_Nox#T}JSth(b)=ocsJ?+)vybB9NC z>4-a+zXGC%j~F}$kwNU@JfBD)h9q&*!zUP;(fxL&0?ssJbLJ8tX()Ow*OD%8P$(r`8wWsFF zx1f@jZ^@9S_P`IC0G|1kQ~9E#C4lMz{|92*PgJ)jxmHfbC9o7%NZhicq1JLTv;H>G zEB*kj9UiSzTvVO){sIE7)dO7t+Mje*`yX+AC@zsdJprl>C~=2NY=>5Uni z(K2vT?p=D?w)CqhXf4tT62QKshg60#uKG^N@|>Qc{^2W7F(0qgdXqQwOMhAwuoCbcjo~F?IHNNdK6qcN5(f+>I=2EGI_NKSsNf|A5_-;PQPikU!D48 zlZ~L&ri07*d6UWFb4bn#=|>TC+H(*Ox)|66$NiWyZo|g2vqJXo?ChrfqT_1zi*EdJ z9UE-v+XgmPBc4!DopSQ4WKasgA3S$fjdWlF$V57#fdxAqZQKK$dZ%QiQ{r9;78~@L zw80)#SwiWvY5m?upJ2(lY2z$=;V83s+UjWNC<~-xo--%Rq9Al);W$ASdRZb8JN6UX zjKbEx$KwqN)R2exLgULqHI#-;j6TTEEpG+Y0h0A980BxO~VyBKP0t>%2S zMgMRfKwva!AEL7e^g%l_w#Eh>&9!m)26CR(15Q0~@;<5|}kEt{3*w>1Cwpq+}Ch*RGW?bxw>&T~&BiEt8+ z1)%8i9HbkOTbk(X(5oF-oW-si*urJGBT_%&b{3{_Zbym3V%v#$?{qX8YgnA1cR16~ z%!erFX#Gf;3%q}<%GvH?<%hazuQlTJp|NpXMqV7S*mJ_b^H|OukvKWGnI||;V(x}_ z8<#~|J(Pjj-9hy4sT9oBu~{f@g=7XmZfI&NLOm8*H%E7+@_jfOxS`E$HxES?v(OiL zkmLAqVN$St!Q)STrtR+EY%$Rp+4z2?IE~}^xniZriq)W^_hRy{guf4yvy5XLF6OW- z4qVUi!XQoa&`AQ9+jf}WiOCe(?xC=`yNAjvXB`8!66Z7JNTWT7X~!dzEw7-M0n*UT z*j=x_R_bto#I;;5sm z!$s_u6BJwv*bai*lVYKL&-=P0}nB+~G;Wz0X`qy2yi4G9oLIGjy-A z{d%)6y5H-3yklGanaj$qrw-jG<$I#{ePqN=d1|}N7HQxD&VdIrV&sQu?%JtfBKgc^ zq>DVg)A?dbVVN>Hq2Q~y?N*Z30Gy^=iY+W2Ux`@}1ST|w%nNgDYM z4+Tuy9&^$(@!Zr2z4UG;UJvL_sk?t?K-Ed6u8Woj)ZM43yOM5K(c0)}d{~ECD`y71 z12vwBCgV2G<6XDUjpy<1YwCM>9`6Ld$t7-mkFe*sB_Q8By^ykMyuSo3>Bd_->DV*! zzsTj#uH?|QtUc3XSJd_E1o&y37*EnN6Q}rA=E;DPpHg>P-hwyu=aUFfbMRz(`brez z=}6#8@k`tLQrrBB^=vbJj(+ zdqCXTEq+bCeYj1N>{NZ5V0hg+^1XuLb%NihN$Ohv-PFkyMRLRwF`6qA)LCtb+Wty* zr~B1J^?rYv!8#lB+jRt%+flT`(}btt&6-?%ZARN?B^c^It&x>Y*{*@#o+82J6bPR% zP&ScXy-PHdpX#OauYE@i{Wx=K*T`Kvr}}REP-B9riLvuJa6K_@@oxA&6Js~{O%tQ` zW_sVzLGiKqZnK+){FkkEH{RMK_`Rc#&$D;Mf8A^DPd!d(?H0n|MlH#82v4$rbm(5wc}}4k2#FfE#k@9E zhVg${$j|_dR8eqH3~(tZu;-*as2fu4V%H=@41r*Xt5gsdDcmP7@U0xh7hMT}dY}bB z1!Ue9uZloB8IOd>{pDqM-1iG){I~ekz z00!MymT#n^fqd`^S){Q4J0C5?x3gI}J6`3wv61V04tlEPeV_>G+i5>t%k#SJemhjU z`w&8<|GHJwPA08YQ3LydtEineFSUxgg>lS%RMc+pn^e?I=0W?`SINq1H-&XmSH5Vk z-FTCzeTs;$YO9|Z`s4Zer>E|oPc9z6k8I#r`Rt2U%*<3Y=;Q99V(eOGWffJ>H=(2o1!BvxIhCgVR^@@L4a)RkKr^97Yf;2`SK247TV-I_dJohT2Wd{nDwq}=k+yfmaU zR;kS&=-Pad8~l@ zm^Fi-IiP)Nmafd z{3fMJf8e@D&1xsDO2_$rk4RT!VKz9$?et2N_Ilh>b=dUJwGDc+E-Yh}fF?bFuPksD2~)r0L- zB2KR*(*Y&uFJZTIi(b3Im5!K~`I>v{Ww<~J!kL#PPQ-eIJZ3T5vYTQU&9th^)lmbM zUY^naIlho@{GUSx{gy2k8BGg9Wa_RB-Kk?too4ow(HMZy*camXsL)`Ek=S64vo;*> zO^+fCx$Xsb-TbZ49xku-$#?gS2uuztj{pW#ol0-MHU0lNPZ#?lH(LD5aFv}&vQIv#Bs6A5O;ltqVh^OFwj zriy@dHtQ4{KDI$l^5XnV@uh)CnRV_8z#HFI;K8T>&14Bm{$2&L%+;%t!S+i3C~tl5 zZhmS3lRmCi!O7eW0M~rfL7v|v|M^DR-}s_K(hR#4Aj(-MUaKE;FiXu^LBWi5Kvwcw zFv{~{vLXU9Z>1C}-ImZ8lufam>*3%)q74wVUBM_4e#{8^yUj<0)HH z;U#(OI(fo#k>`<%eyZ%$=WdvXUYcgNpyxOdqUS|^H+pV2dNk!qq|mQTlsI;ldr8JT z0Z96SWtkJ(LFh*LZ8S5T*kqAy`hg7g3+%mh7iJCCZfIMp75x5h_$@8bTM>x1ld;>! zzssD^Z|nb#>pK3I@&7UYJo)XjzYSmi@5^ruVDOVW91NblerEiG zj-D`+b&K^-i-b**xCK6w3VaD}iKR#wS=rPZ{uD#KZU8oU~h zCi9auU|1Z-vNn~KF{{U-;uNjAFaEPAE>C(xc}&)SjaP5=ftre*N0lF^7koAs)ya>q zzw1XdCT;-vNB_sC{b4zt@~XgKgG)HizdebUb>zgSP9dc;7FDhlgmbk5o}ZyBBdxqV zXUW86kqQ~9)uecM1t0b2DTlGm2nwFbee>;~pMOtxHS$6OA!Afad9X+AOlRwQr!pS541IpHS~2G5dbRqLCQ(Z#E%a01(e!(ujCLx(!Px$3@Etc`R&kU)`d-+upWBiELEtpL}G zUXR`2s+1m8K=S8!K1=t(qc$qrOIW+!$7gQMhxJsZerSPuk83|z7*_AeKz_#SgvlGV zd{;b~TNKcqg3(hL(D{WBFt)X@omgN{SEPbPid~jPh(j26`oCcAtMvjpg3V_9Z6Qx$ zvHBKaYXAM8g_vF6A--*PJ(&w>2y~a)D}tZ#*_$z_IeqB>{R2R(pAq!aa(dlQ7FAVF zJ^)x05E_qtHt zosR+2LOEJg;xPswKQ`>ghJ2VqNpkl=sh?pM&&1WS5yy{VLp>{a|Dwn;fj%i`izdoA zUXvRbz1TKw;{{{B34bBs+A85WCj2#C0FEZ&N(tNeKa_B+e7Xd|oXB!bX2-Cp8Zzcu zkr~HUXfOsjW)xe2o*XjA!L)-V9NY5EFv1ecoD**f$mUcY=!fe+9jW91pz%^wFJuFA%G8j5-@zB(uFYO|Z z5z6$+V0JLQdfdoNnO0?=&&KPh!hDN}DXHQCHu!@9Eg~y~bYS^Jmx%H`B)*Fu08gZW z8zBBb2xvLRWCUe^B|w>2QprV1M-fpeMB;f=0(1R{TJ<8x_Fc^OJ;26i2+jxQU=m9N zHqg-?k7P*k^6BB{x&`VE32@n`FhNhq*ktP6e zjtvc95@A4^0r?zg(g6ko@$HZ>A@O90Hz3Q95g@T33juv_s6&28O!27C@FOM;K_TcQ zd~itAe23DA5R4FpO}GJpb%~E|h(Zk?K-@eMH~2TAbOb|Zt-$G$gwx(qlu)gv*9lKZ zC{L}{40U{gQQZxz7QuIXQb@y?W6Vl<)ql$`h2aPGcy0(jNByo}E~@umzY*8;x(zlR zTFH0z?@fGc_pXus<5>yY6me)Dy?5YauG{XspLsVkqoXtPJ}(kXID#2<{I6S+wOB6v$1e1J$o~ipo7%H+Bud$O zOK+v*M|k1S0FCUj1wbiaD|v6#$IfR#@}FIYq$D%q!f7ilmY>HQw>J4y0$-2U=f=76 z8rbpYt1RuJi(AEhvLu)Q_L19EIi7MRe&;nbb*6EmHSJ_4K9mizi^}KG^)}uE8Xun_;gm1a#P))vOoXb==bxP z^AHM3SxMxA-K>wrSat~9>iX!QeiS$B^2Nc)VFoxnIZW%s zhsQ74c%H_lfST{7If4~(bx)-;zIsPXXz$JXo1@C7?&x^*uVKb$VUsHbOVrdB^{tk37O6)4~}PdGhW{_`}hnVnwxIn4aTK0$M-JY6>scbX#z z4q9KR{`~vL*Y?rzuQ)coH}8Ic<~=&R;|@@s(ItD!n%+IgeYISiEukZ$T#SZ#jJ0i8*!cez z?HAv`*N%>RFJ7%~eD6;%tXuDah5+AR-1yr6`VU9`UF?;EmUnz|zAXa^TGZ!CK(=09 z%~zMBqn0%F!N9%ajVoAScX#IBOao>7S-fHhMx1DX8(b!$HO+2d4u<}RhhN?n48m!nS|*N(7}nC9?O5%^<{ZbJXaF~h8_>&( z4^>vt8fO@Ko#O@ID-mi}RDEWc^uc0pk)%pnEl?mX6jT;QS)}8EQtdN+TSxk)ny)VA zFJo5h_ATJZ{d>__Z?*gf*y!=WaTUn6C!%iKRol>LPH5=##nQR`c13jIlnksgE0}dW zV5W(;GDy!*&=wzj0b201OwG{ijg*aH3S2E;mO!6qOYeWwOXP^2F}2ia z8JvW!$cb8}OVq^=3F5dDiertD-PFF*7_l|Y31)h2 zoo`N~rtyh3`QAq~)81fU-jb^z15c-JYDc*&V#*9c<4M3V#Y>O3OygF0l^`rEd+lDr zwm43C=SIf!Da+jbPmfSAY`qAP;h+MOC<16aHWjfV5DP;k<{B>Bx=a_Er$)%1w(L!RO4J)LU$i|bdHIs!l7C4n;A~$=LowQ_4W%F-SeLm5)-v1aEJP1vg!Wt=P zaH|{Qj2WxHUvbBo<&R<*t!+^Ot zMh7Fmu*>XilY^!rqgpsKUoLz~a`t89Usc#xbkp1vHTLE&Uq^nI!o;3!iWB=fj+mLf zd=8M$BV-I0gW52z0>svwW6~gdH~VLW?}&^U9i!0^I)2u0-yhnUj~8r2dD?Go zhrHa-G)(}^`Evf@ZA{6PeDQw%X}0olOk9AORJwhF@B#sNFgjmC9f05|J7FXE=ah12 zA5{NMH(4Fp_I->1&Mp789THs0JGg3)PQVRP`2{o0uS6vxwb`T&ja@_hvm(U*8q|xq zvHxh01~k!_k0Q45FJ_%zjF@7*MV8(oaHoyvCK{78^ zr@@@f=5X&%e*Vs{X4afsLaUv=@fWjDg2Z5gC>!G_x~7Am0pOz>5jdN<=!z0CkSL=d z?~OrsAmmS`RC&+eR{vBzNcufUuIWLtxd%zB2XDyhRg0y{u#ZYASfrL%syHfCK?}h+ zH##^|7}oMUk4}p>4wK&a?hO(wMIH<3M;acKbbi$jZ!=V|V*42^c|+iKqlIw%;Ng;z zxa70fuOBV=x1TZo;KVJ1_fA`fEgNh#Hx%Z;WR?~SvYNdC-3R~LehRe6y*u{%b(^=|%JJz}6L4XhAr7#8Kv>J#aL zG(U5&anoqYpLwrp?zoJ^dA`SQq#PfdZ_WP^e|PhLVNCgdjQAdLs>`oj|Ev2yC0w53 zJEV2Eb-5}3o1ne?513L;2mSvs$}aLhTs~F;h*B0bjDL6eAnuaep^59hE+nxXj5)qT zkYzOy?;Bd#f3Y1PSjpBmucO^lB^Zvf_s#2XVh~&}=kS}?Z_+wncKQ5vX`)$p@J0D! zJRY}mY3FKchtQ|u2c46{muMZ`$~}1__1WJw(O>`UwZO*rzF&T4R`w?kP4fM6RQ`S{ zjZ?XZ$McWBn)~?k4RW+SiEPIWQjdNc`zv}2T5vTFdLFoo_a8j>`mY&x++#-zfX4 zurmMf(*Tsg_Y%x#6p@X|fC0zu_rEvqzK8w-JNrcfOw|G4aRMKwT8`4QkGBZB__wWZ z*7D!X=To;2>3Ko zHUKoYG-#`k637WdJaI^1M?xV4GBhOQT8re9NqW1D?mT78is;2ePooy=4 zms6T?K3_fOzNw>vDnGLABJ}t7`#S$C*whL=@mBE6kOmSthb@?p!|ASD9-e~Tl#7-6$#U; z#dSE|`s|vU4-xHSdaIKTx&zu`_rZWlimmjFMn1^#mptw61g5 zV@Z%!KR9Dfnfi%frw(dw;9Rcu+k0}%1TL#ATcruI=cW3&c!ot*OBar=JpubL>xK!q zj%NeF3|0ZPWlsc6=Sie@s+XEXePvV~!Ll{(Zo%DMgL5DdEJ1@i!9s#-(1W|XI|Kp* z3oZwTpusJ;yZhnH$Gz{Z_x;&FW_qoe>FHIqtGc?jE7Qgw+zZC&NRZAxTFO|i0Re&{ zZ6vxt7+Z~R4{;2+25X^!s~Szl$2Qj8uguA}KPhZmL$`=z{>Zv8hh>)@U&{Z?HXFri z;%Jj;d{1tTvh{C;RPmsL0QuAOgIO>;b?_ObH4#;-%zG4})1zLS+lMxtFDC4!OWM(T zjtMg`{loVH^i%_WU(iR*5m3y%7o*LEMp_Fs9g)B;UpyH|Me9 zjf-XH+)Ptv4t;G|YG7kz9%xvI9W1ExxjA-FNKE!%~NE zgWCvs5UrM!jgQ0(=ryxEHg;8DuYb2*Bx_&DfG8D^RNg-Hz&aUV!9S#EUiTMyllN*% z1B_c@S!egDQ1}zPG;V=39X!2>#!(NHH%=h36^%I{Nl*P`7Lkp0$y>Dch;ZcxsXa4u z56c1h9krasNGDdD?Z;YX9fAy@z%7Ir9*%&&RQTGl4J7&xV)gt`Su{c{%rhe=WMs*4 z)&Vqh#lipymgT?g1WiY*beZ3$J+q=&iYF=wdA)fk;M-Ech@&Q?bCF4c{W!%sm$SBbo&WwYH1Y%p{{Y5Ujj1{Cx|nax)U^>v7wWU&Pp>H^pxD`+uuF0SIoJAC*sJboDt^_ZYfT~31-v@R?attSDxIz)E7IouJ>vR1IYh6?Jh)Ujc*#M!k13@jf&?;{6G~411R5vSelhJ%msCT$ zmYlq-ETp$n1ltsX>?m-U#(s$ysN?KO%1_|2gkB+ihzvql5kgYkeL`!;Rp9t@T9I|j zUVWmuqRH>r!0vla{WfMXBc3vZn9AQRq z79SRKk`4ik_G?Hl?O@ItcAXbny?&Hb{IAM4pQg(x$x4uh<2{?!x9~W4H>nv2bdAj6 zPOLz;iiKH#g%%;q~=RFoCBsgHvqg z4u9s{d(#%a8VwYyF~b~1fJcpy4FH&h0+o>>a&TDqaI#3K5?>5{K(#BR>5bGJqwx8uKONONp+9|Z?QyghSLJ=NIxA3_w%y@~h z#9_jnr!bdgrxR?bv-ot4yR=e~t8?A4>~lg}J^`|eLTBUXXv?qx3fUV@gV7*tfoCu1 z@rR!q-l*qF-kBS_$)+v)d^YgsxbFcT>$Wvx;0znYRH$ghhnSv7QqyZy=7>mX#!HS)aH|6s>~`0HaxYBu`h`LiA_P@0lzai5r0I^y> zkR2rh11Xd30H2b9IXOy8fc6=62{a6QdHqjA6S^>$RvDN;P`@`Uy$9IV7}>jp@Q*Xs zs-hBFTJNQMiSn*GuKHbMbroh|eyg=y<_k&{Uew?8qT48ivX{`d3#QF%oaQv!s zEcIFKnLsZn52-6b(<2%~i+U;q1u>4N()84gtw22 zK<4YseLq1aSL(Ex_kalgHlc-nxI>rlCcQG+7eTthYT){{;8HzE?Js^)pxwr=mDK3N z2!nQ)8W>c?Mt8!+BIn^hDPGYihCk=`9BvPNOU{b3&xMVih!$8?$VPBov7Hf^?ekE?L*5Rsq+Dxbi z!MfxQUx3*+kwt~9Byy|xIdip6qQp~Fs`~4pF-4|_F(f{;!d+D!KToEwL!=(HddmsnEc&#Y9Yz zMYRc?Tu|P!GUkq380$63FEeF#o%bAFs<%&qTz0f^dmx<50ke~N!OaZs2?daqmHPn!Qq?>i4 zL7$dr!%OL>1n?rTBk-0f#!BiVl;D3`SflFiv`dK4QSxs_9c4Q?yXV!{3u-}po~|IO z)R1=Zx!&4$)2WMWrXnupcG3ayBcTO$XbgpT3+lNGJ0Q%M2f+VMvcT{Gj3;yb1VY|< z$?seN4nOvHpr+ghTv4m9Audx1LP4=B#$UkMFA#L<9H3NU2*^az$pJ(m<(x-K=iesF z{@uBawKeeQZ?-6W*#n5Hk`{h^F@-|(qyS-b%SZ6~4&Y61y#yMC>EBJ(0}kevz<$FJ z9AxgXh7(Xj$OO(QfOFM;PDD#G+EF-tltro=DCD$r2Pk=8KWPOxPVfWy2rkfk$vEJX zSb!%%m`6<6w}UDw?{>)-#?%*H&llCZHj%GntZ|GYzp$>R4{)m$ zOx}Z&-~G0iJBI!{T_)!KTdk6%Vv%e@77_{8kjYqEaM;>C&t_HmRb(Hs&OU+Jx6I4+ zT~71)bA-5qh{mE%G_l6$Zz?8E?4+x4Q}8tn(7w5Q-rm>b5oygG@Q$=oK+~3?k?@`K zR{2d5h8Ss)!nt^#>$9#W)m(xs4k{1lJb^|ik!KcJtPz@&f#3z4I6IBQ`doY<)4d>y zPWs^07x>u}LTw>N;jXn)qtnNLnw($PZu5QNnq6!-J_iJBDW1v;p>IAG5NCVGvgfmF0&F^%mKNwQdT`~kMfyMd|yh^W40sc2AQWOC7jDJ zCtru5PsO5j)ggk8vIPkj!hGFY7 z(tE)3AaER+!4$v=Z;4L(0j@oC>e}?vK3F>V8j|$7T$IcP9!*^jKZyj6Ea#tCX`Acc zkRim#kuc3A67H4P$Bc9%B)`+-A;Pv~$&=~=$8gb>-XRw0BZ;DlOD83#w;WjG9e{%Vn;7m7y2UKletOvf>`Tp+bA zBS)Sku0-{-zWQXj*jyH&LE{rabtIkq`^@(!q7LOT1R@#h^mfDkD>@LQgC($M(u?c$ zV}2n_A!F>)lqE3o3M^&!w<&vipt#eF*Ar8vf$rjCIK~$T*3U_+W8mtA_49lw|LdFa z!}bM`q@R1ZnZ@*|w2@`MGYMyO2n9_L3CbZ}2^ISKZ~nzaxeqHF&~+SoX~!mDI1rkC z4X7gi&(wO*TVtv>!CCzWP6^~EfQ*V$kgpRgTsiF&l-xaX4OH(lKOsn}eP~w5S*1Sz zbLzYitZ+AQA8)+?;f|>S+;Atr1WB)BrRRY=72sI4zY5+OoA+CQKH@*Bn`FKse*g>N3mi{Yff`_APo7vGV1U~jYFdgH;G!GA-LwO8kp@p8sTHXY zgL5$S$5sPuD)`L0qnO>&9dKuw77=_^tAiuG#^ub3sUE|2)y}^3;CZ%zD@!*?Ke1m z#9{L8GczSvvkw7~J7ovtBk=?4;xJQ{{;_9)^T`g-HEgw)0Pwsw2N=G01BqiWAi2Bc zrG|eP|9ryc!clTbg>0lk6hmjt15KFf&cRjnV z9zn=4li-cgxxgM~I5Q0`;wsmQN2?~@RkS5=__0ZZT`)r`mc=HLYo5ZGAiAnN8EMoq zcF-6V4NHo9%n6C9iJ%l}Ob*cZAV2~Cb_Gb^2NkmpfwN!#D#Y;#>_~6TApI7>@;`8b zHTVF`UP4MKa{xmAXW%0O#|}`rqzOHLt2RzGbK`48gtP3-oyZ(PL8xE*7H_mRAaz8p zo-T3n(wWCr-IceXCr68h)5Y(t<{s2)uyuuN#8tD*Ck{k^^b2F z+sDf<8*wxF>p6Cb@xP)%G?AHx4D`>O-5B|qTLh8N?XZ}}_?xOAg4*t?Ts10s#)u{XyI+R=I2z^PE(%mj5jP%uhUhErF)BpRKqNHrfGixbK2M3FXt)2ERpI7KcLLrG(f$+^ z*JlG@YIw0B7=BuZ9f2Q-zUu(>Pw8_ItyLzhH_T_uMWSp6IF=oVAcdAGZ$VPhgZ?)auiHvC* zPvv>UKG}AEQfbZpZN+@yfOG9HJ!XKxf^~zTVAtQv&%lWDF?h$Z*j!_!@rDO^o$_~q za<4Wrl|6X^zq23rQ)c(Hm>JdI{Rj~=y3n7;o$$n}58ppLncE|d%)t9U@Yw2hbNq57 zX-LVhNUFyW4k+<1d!AVx=se9m_48C$q7oj&)H6w8n2@7+50`2pav1ulKh839y&#F% z@7FSw%6{=LjKKP7jnR>xKdT;o*UZMt85({>N;J}ld0(rE9EE*7>-8Tt>)H(CxGh?X zYb=h!HEay_TuJ=dWUt^DGKa|dUoOiW{vR&eVJQ*h{VQ_IeAZx!Oh?w++_$^?%ONpW zr}o^Bd!NKx|JIq@tB5p2BGHVgh0R&{?|tXl{WuFcCRb;lsRQ4-~uDexrr@QzfmP{q-hpb zL^yZ0UTqR+FMy2}y{ryu{`?QgUHhV9TJ`~nFh&QT0y$cY1chTmdzylPieJypR{rI4 zVLo8{W(|^k3L)S+28aAP0R+%}mtbJr@b=X4z4i23L;b0Ld*xry9k)5$h;xX^h?aBT zx83{XpRC@2 zaF>C!qB^aNU)@j1b_x*WvQbwJfqX)n0>fENp`k@yg++;bu?gSf^ z$h+2rqH?pN?|Sq{)Y+T9Wq;qcR`AKLBv~xMH7FV%pP@CF2RE7KbvL*f;~2lt<(pVG zRYua^d4K;=>RkkeJ(q`k23`UjJ^x;SNezB1Y(fv7wx1_o;;^Clm*y}>dKXx;(#8q|9#N|Nqr|!- z95=8*Yt-h&cM0)P=l>Jj8+0}<`f>F$0_cGvW&#Y7kocaYqYb`TIoUhe7}%{@m@oD)gfjMgN^rWZkhtv^X>8H(Mw6BK%FP{IRxRBe)V9rSe=_?A^rm2|E8dGwXyk! zkl!625sJ%3+Towk;~Ftx9$zCiJ=&{?1lgADi>LTeitA@{K%>C`UdRg*RDea-Lt`5fs{^kG4Bp^!qekVjd5ua|%`_t$G7+$-?pp$c?cN(jx zha=(NS3T66nSL(#uK1>HWj}1KqzaqBv;E23Zbvm8K*Alt5I23OEw7XdGMS?cBNW6K zl+~7Kh9G&m3V?X7c!{Y3HMFn&;Sp`CpnYTEby3z4L_0z}2*;Cj=`}R{S^b35WX@tJD^CIqajmbG=&MNIc1QR){*ow z_s=&TgAqf~TF?4EYp|No?u5Q?tk+_g9w#~L$dXqg|H#KZ84qD!0!*W#`;Jy5c& zM+3dFfIp%Ex5j^McLp7Go4xn|r^5wd?`vJ-8Ob-OM`#QK#5TBmW0)oQ3#dDa?C(V1 z;8w2p7YrRZ`NrStO);&L*jX02#pYAVpMbyMo`6I4AL5gxn}E}r7u;7>rzYUPaEd4Y z2>gc8$R)`@S(L6|>x{Klux68^X7QF(@6#&F#qwVFWealR?La44HlwjQ9&SABXoR*GItF-tAa9=h_mbK}F3QaIMK_I< zG1x6lgR!Cz$ztdvVA$mAc`;xAisqvddPkt?zc0RQc)8qkJ-6ns?io7Xgqicp z(f0HRYcJadnw`miC>0u^qk0S|ixU{rKwU|@A!7L_zLS&FaiYNxx=_&Afacv%@jtWo1V6uS?)yL&Wc;3d(G;Vkel`zKei2=6Eb@^!%aBbuU_TOXM#2g9Pz=wD_?9`jKiP5DMHX;=cQfb;DCukP=O#gPB@8$urjQ+eH1mNC)Q*HrU+H1gX2Vidi#$L~5OrC)EYf}Kee+n>#k0|?~ z#Ibz{OCa$j=#yX@Q6YlR)Zy|lk<~3N?SNFi>nJadW|*HVe}Eu9*AF`$Q&zb$Q=tX5((j!A{N6#z?2eG1j}>8s zf}^**ee|Y*7jD6T@hgyN8lWEs@L~U7w&wq04hQo{py9a|5a8bcB3^G3kfsBYwQ{7m zu#^Yf0U|M`&E9kj8DsYh_Bd`|rpo(KwYgB5XdPq5!NY-Wl;29wbL+7~+S9$=C2||8 zkDcKSOC5T>k1Xr`q>;ea`%P%g*d>@bkn?r6q3gL3`l!QV((~~3IJM$>S3qYvR4ryC z@P%dW&dO^BRAL{Jz}k!AD4yw6Wr^>V+;>7me{y04{r^;hz%hxwig-$M zB$#5Pc{EErZ78LdUPp4^-KJTq<)B7Y^v5#gUW8*1UA(QVd1`fv8!Kn@SypRGx0?XT zCyL^JcDVv|bSpu59R0|7=3A;sqvgLw)|jPKNuT~yyQHF67nd;_5X#0x@ke91{8J}m za^iu!|1}-e_L}j#rtdXqC{Cg8`Tr@uyd)ts!}l$5!q1R{8Xf_@NXZMC}g>df`g z>QZNRW^Ti=c#UWK&-T5_yq`~N>k1iV^zt5sn2O(1;MyfmIRY8k%9Un~W&KOLCXv7ENijB@c$@LXSl!GFv1*+pD**mw zebE&x+5-1XQ`Q4`vg7Rl`pJMe1>Z1C<_@9lA47R9%|7hw}-;8)Gi9gxU^#u5cGI`(_iL!p^!Fo6kjLslf8HDXCIxD_ z3<^276vc780A!MZMES}_?Oi+VSuMkAq5Jk-ujdqI%UoOCWoHfTAEgoWJ}#OiylOF@ z@z`T|>HcQsGq};Ycep~iyjk45Z*1(ltSWUh*hQG7;TbZEx4NZO=`^qy!_+_BM1@xu z#T8%de{atFPPg=SIuA7hO{P?m;N)IWP>ZjaoFZvajfZ|kGJ1YRA63`x@@uDM+;N?( z3=FWn1|qN?fzNS4z`0hz15{W$A4y!YUN^MzByAdQeKTujF!6`N?!@4WIqYHf2XAUEn;eya`4xf zrvB|czgETr!iQ`T0T)ZV9Vu_1NI1p#7MZdag|u5=^3U36U|`@WK+L8HX~Wn=7NF}5esN@1{|LChlyJ-%%6*fh_vrMN#!(TQqd} zUI&8^2BrYM7XqF|s!BXQcK9NG>phv>@bY1PQWej+ShEVDCPx($jAo zL(sG#AOBP~FOobE=$({%dp7pm)>9yBe2g4&)ZoEvGIRLnRCB-H({C?!0P%PByC$C! z*rz8Wc@}X$+xTyga;qBkkXm*1O*yn`qByuXiw`xmwWF%U2UH3?&!11Y&gbo_7EL2L zdj0rIfAuwpo}DY7x0YuHl5&g=m%8avaDVSlD2jSdB&K`AHGX0*9odYEu>;iY!%>$4 z$ZqPu2RO7_@DGIJ190?h)5i3|O7DkHjw_W8Ybc%eBL3??dGP=`8%9_k#^EM39|Z}R z)V~H!?D{w0$SI|R5x+RW<#G}|fK}UJ;?ln5FiZ;>K%7{w8Rk>HJpaqd#o$r0eOXbN zT)$DDo=PEr{J9SgUx~9b6*o)KT*oZ(FwOp#*40#yAiv4*Jy;jh-}j$}8N(x(zXYg5 zm0kp90=j`oa$vm~KNt@$B!CtPiO%eE!VDN<$07~=kUa%p?}7U$!yan>*J!s>@ZkZ{ zP{d2zesGd{0YKqH+>!{Rv10`=S?FLE?CMoO!`41qyQ4wHU5#s_c~zQB#-~6s!6^9{ zxUxfRETVbf_;{O%hIKsR<`O=hKZuFp3dG4ayUgu_mMQ){Qpz z7Pb`p1IRGb!{PI%ltxUfsk)Zl#s$s@;%Sm97_@vx!BfiY#~%_Y`=_1|fG}@Qm}4CW zY4H7VP)vPeeEhvO9A8`hGd*dk!Fy=|vQMLM%wuMewlZG^t!wWMNZvTi+2wp`Ytj5l zF!k|qs!HIzp2~1HjZXQq9G^0+bD%ySUq+%HJ{qC24E}WAKbJU*BW=kLj>8_I&fU+v zgUWD>#3B9l0(B9k*4?~}4DB@~Q`RKDzfd0_mWB@?5hEZm918l+#DL#x9ZMSJx1YH9 zbP4c!IbxI611hx0i;4iG@PQ}BwiZx9e!B%s69ujg*K~Hd*U^dFq6lB0oLu;IR^XxL zpHtJycF4zPkl~~&^}@X<2oM0lZ0OHma=a6u!5TQX>oZ+vigms1f?>8|bwnwiNpjrUq^;b~?cb(0I--E`-*kpgvD(b)N!1x1n)I zv(S5|MnC@TqS5;kCpkQ=5!a#j^r>%IRCQ=7t7mnytM8T%1zc4taO`VNfBVJHEq5U= zrOoL)37`4ROC9CkNcP_=f~+0IPo)yUdixC-6kZNPHLIN#L$qt*t5dVVwdHdzH~e!t zaYpx~qs})UJ>zs8Fvs~uI=9=ti^P|IHo}RLTkuZQKajCLhvN?qPh46EAM2vCq$Yp2 z7s$?FEGN3HLoXuGlcTiM~Q;1 zB@*;<2Ad{`=uAnRgJUtZp{qgx+IwNBK2vSHG!kW@B+ixv5tc=CguFpx+PpII2=EFI z8^%u`)#720sp;$L8J0nStoR0ug!Kf_PXxUh{@UlR29Cxn+f_S#0@q2(98^~;<8*8m z=(<2U`=60tILQP;99`mc{%2A@T15PMBRfrebT#;OH>!ULeKYafHx95pnZe{bpQtnH<0cAAxdynzc zdcRe1g*ErKpOYuHIh{5*DKcd5p7R~0DvWiUpXaAX1+?d+GEGHSA-H+5chum7`+gks;3h}Vr=ZFSv@n0(OpYMGKqH8yY(jwq?K*2riVc3i8rWE#)% zb95izM{ywWT=qI!n>#&dU$V__3oh$>>t0zmpVIa!;^|U)M7``jOC8dPcqY3y(vE^M zuGRRMpR0c|QkJOVqC3gyd4AM^2)5Gi*15lJ;YjlvbJ*uyJ9W|J^_$wQ@08LiyZ()J zGWjlZ8BF_PQ*$Vt-5wS!+#Eg^nMd+s+RX@Nh!`u~0cF8oD4eqNPbGJ?m?cc9(p=+8^nTyf|*#H~+Ff zuTdQrP_?hLUy7`fx!fB`Jrm_S@R0G7yj1RJP&YVM{Bzw0a41)+) z?OUG=cK763z_8CYeOE{xhdKqOitVfO8LGJh`l0a8>n++~YWZd0F#(EeHVg<8v+e-{ zKRMvin63|>;9K{8*BxW;EQ{HK=PMAH=Y5^i{_#!W9(Z}KCyTRq47rVa`CJHP(Y~^{ zTKfw?M)s0Mq#sa0jku}p3H{pj6FM6G&;8U5VK8T8Z^s_>C1{mA-*&&*mCL|Ciw;Qe`3 z%ar)P+}>X~1;_&(dA{}$w_o1rp8R54r8H2~x3^x`txcJZn~JUwXfaj&Z8N5U$&Ozg zxBwYyax($5a1m@1@RrglpCHPADRf6-3RGq`Vi1$?0@-;o-NuPV+-}fcr83<={;K9I z?h)Q4(VU_^<|>8NYy`c2<-BcI3P-hqfT68q-lp;~-k5cTJDN@1yqKJTfgRPBy8Vki znjaLBN%jIl3VaQmkX``JBS7UZfcgUd4*>n7ifbsy)qWuf#7r%CK zz~YoPgGa!`(+h}vmk*_xjDgZzfj^=nyyOc#CxzDu6Ll^qi*;3b>X95R8Et>sa z{>1ZioWDwfn6FP#w_J}*!nS56J0A=8*L+#B0kGay#H-@(s51Z2<%XgP-o7)WDml z>klWLpbn4Clkju!_F}q2=XGW}_2c@Snt~_zBzWEDR@T&ivfaTr+vju+Xn(5DZ{G}# zU(>2gc$4RM=X2@?by^lJZyY?@v)Lx)q-{)mS9>DNA?`{`;X6V>w3V(XMl&TOpY$4yPOxYyZrUX{A>{8=+*X0 zy%^$0@~0b!i{TciR`M+T8WeU7X0Mfb`O$GR!z!$9O3nV^dYGP)35`{j06B7=v5=fS z^mDgJ9LBW76YlV;W_#$54Qos_E8Mp`Y;V5&O>Y^*-4tt!{N`=^ccpFa&g$wP%}_jU z8oQh1ke!-AleHrly;F`ogbiPjls+b`u1sPpr%=(H&g$ss2vneX*@vseRizacPMxK4 z=I4!Im!cE!(nF-Z{?C}ie*x9=ObSzW!m7QIR}*uCHs z2ECJfzy1Opt2_@1i4);lqFK==b$9o}$)>zb_&{oo9zi{N@)XQsD^$6}F%TkvkF z=A%~yl{+D!dgvqJYjDL-H3IggK`C8Nb!ak?Q0A_vWgco3^IN%OZoI4T_)khgCE z|5%3y{cI%p-lF1CA7R!hF(#pZDEQ2-TAt)_j>w9#-UT~Lz|ANxHz!y*!{4?k?9WeR7cBqqr z&j~IN5sgxM1CALL`6fSp1w$|hhWJ(sz`Wi7Kvb+vfY$L{_3YQypKHgsos#7<+skSm z*M!yID2}ufo|+um0M5&3zQjTd78K<%3vyR_C#=Re+g=UL1c8!Dl3T0uwW-5E12gc0f=>}9bA_7( zPJpst%ie*-UY<-ta29}~|JY`tYe1*1*{~xycToU#ue%bB-5OcduPX32J*nmVkGm#* zdwAG2-pYKLiTx~v{fu4%(umDrDB0W5rhTX4&dFQOTgziExe*q!@dPq&C#sw^l1QcN z7sog6v>Am=;hj)Uz_0WX2MGqAe*o5ENlOA~k&)PF72%VE5uQMIthI?y5akx&H4N}k zz4~@4p^r=c_X`EFlSz|}bE?B|Bt~#y3j$aM!2tO9UvA!UdI&+GLcM)KekYszm(^-K)(Bz_A*rt5NlEDRMB6QB5|3u5g6 z8H#WZgU|VzqwrXRU{`{>SAV`hB`%?MwDzvuNXkPqU8Pv(n_k$HTvwiSxe5H!< z85-TK{0hv<@!Qkdy@C1e7xv!au<6~et8Z6WsAMwN>-umH8DoQ&wwsrtSL~nH29H|H zIEb~o?9WfFI8Lu~(P-6GCsN;3a?E)&d?h>g_JYiFc}=eY0S>>k47o;o#5+`v%9=d$ zzF=^aag44CH*yPqT#CGBxiQ}LDCRucAE|6xs>c;fYASDwlD9HXG?LsuyHRW+FY}WZ zyv6ZpW;gs(O;@R-skIwt$B;9;u|LhezE>vhDd=N)<^ixNM;nOQ7@xVN8ZR{r8npkL zh{o%g-(4b+rDpG$NV7;=X4eLJ$0cDaFhv7VB*51T;YTqZjT_mErScX^PGbU_w z@>aF!bdp0@0{lj_vSkMT_RBGRVf+%NfoVY~W+p-!Nq(FX1^;mMS5({!cGvzgBfEbv z=H=>rRatBkKAF?_BJhCyq3=9ytxLk|em;=$$8*iP|9Ost=bb6|9C~$d+rYJdvEZnR zJ2{b){AvGSE_=IJ_PfW;)5gPUL-7I+waEIro&}ayk>1x#_iQsukv#J8!9|R$kNbD; z3j+T$u#cPX&D}HC{^Qij0_A~gK-+o863EZT?c(e^Fza=Fb~FBGiEb7+f$#S7yLozK zn{|CSy0~4TDu0tF8V(7fnOGWq*|yMFfQfg%F7fY9S9{Mh#cz1l#dy@>@~L|J9C6_r zUmW9ct&FATdoE#99HfGicc!Nh5uyQAxUq`i9~aMOyM^D8h|l^U!OaRRHKKH=EHyGJ zpzrO-Zh2i?(f*!p9xb~k`P8}azb39{2yya-*@#5()eAO`WzoZgo0m8eLIHnI4?Vi; z6DNQ)AosG@+j_0kg*aDq`Jhdx#=ARxJ2Wu>cPrjb&`VroSlMoHAJsa4l}w|sWGWs8^VKhG?y3h{3@{jB5)N|DXOuPa{u$m{Ck^sh*Dlx>Z} z(>6OU6CX?4o zOy$-_|I7r*y0)mLq=rG3$#z6JnIOm3$@kiQ{@%E`ECM2+=gdA3%~@(0o5M#wwihgb z=2Vot+agUZue=!{=JGDKMR-nmbRUImUHDInK}<~OAuBrku)FdaP8c$sD{Dov3zMQ3 z)YVMBH|Vef_3YpFNluSMOIF95-iD-jqo7DOrlAG_M!)&(PczO1@EH>2ql-6-QmeOWxbCrYD;n3l(D%|7MUrEY&Hm# zD2mJ|1Qk9#(rs~`)G6E7*zj)6RQ~p51T~+R>n8)OY5w9Nzyc@WO6)IJdiJs7ZqtGU z_5zx6sFm~`KM~b6 z@!OV=X8zu{TEjg#sN?}!-o`jYlCO13tP8qF*)Zy3FHNV zx~r7DM8DME4qY`dcsS*x8^Pc_wM22GANN1+O9s!8uIp}M(EMqEBXx>BL2!FLY8&|V zwx~pNBK%A>@L9=};_oCfUTn~rp6Z4&WAwW%x`>XW&VQ2?h^fIRC!M8gAFv(mC}w9A zpkZZ{agCWqS4f5$Cgq%Sh~p?%#80Uxa)^>-SX7yZK0eHOn^SplL7J>4{9QSpZe>_v zMQ?u|4k2HMHIl{nC6+3I?R}giPq7ceZ&?~#Ies#_$LHK`?t3v2MJCM_$wdl*4GKq* zgVgEdOV5no5S6`C@=>q$o*6SZu(*BW^Xr#Rr56J-ibB*1j}%T@X2X2vMiK`_;Qd^suX*V*H@x0}dy#}2} zBO>-9smMpS@Kg;TM^ zJ?otGRK;EV;{ze9C?w!4Tcka1xq-xw?J4J5i9-0CDu4JN-5?*IE)JsZBlxQ^KGy5_ zbv&@g?Nclj<=`tjA2}mg>{l^E%~qFBt!m)go$X%?738Wtyga@T zHXPut(!Bo!C*U$zTZVUxsPhXIVqLDQX9A3HQrJhX4gvGH_C=G4nq#aAFMrM>cuJr_6#OI=< zMt8Au>cW+oa9&~W?sz5~-|RQOr&!Aw;vO@tJR{JO^tRkKRBpf*&3o+%CGfUkyv-2w z($h#NBN$Jg5BxX+IUJobKj8P26 zm@KIDeP5|c!H-=$PTlRR*~vdh^?In!YE_Gu$hb_#tEIVVu(}mnAdv_w7?YW+GC#o5 zd9Y^*7Uo!spSwWO+kWLG=-pkk8b~jqO_j!ecq*uw%sDlyW`E*j@d@wQ?xJFyQGvrK z_Lsb_WR ztOg#tKSw#=SxIDk_P_qR+o5H>{<%fsFMhWDs&_&0ciAO>zg8&~_bTSNY84v>M?wjK z1XhE4Y>J+oHqvy$4m(M7C;8G_i}BxesVFWK~bqYbx`op*LSiKZ(& zzw9R1xDbG5xCIlI7 zP_(>pPsb?|mNq^QQuq6&RdM;)1n`S)^!4U_BP)WFTUYpU!u4e@6Pe7vdHwiqsmVbm z@BQ<~pN-30|BtP=4656U)`xNT;l}IM|RlBH7eU{e;St(55F0o=-rQZYveeAr@AkoM; zgSkW;wl_aEqq0E8zU+8(8{@K88d#5c#E{2^YIVi#5gnyU`c#Vl7-Ksf z$7Es;#~W{d?XcX`v=(N5Oow+8(J)hqLs*3QMTWiX93}DRdeSn8fJO=s4!S#F+J9{}4`yI*!X0Z-TDnrf#t;CV4>^S6=OX+3(YMz-@Tnjl>|Y`~FRFdj*sbe?F^#Hu&A9u8={#Hf z$r+<43>N1{DtsZ{Bqwn=woZua#_E;{MrHdT_x)<4hiv@Zt*uw7QQ`|*{ccIOOsfy9 zuDTmVYi#e_g;`dmM$pIcs1eeSm|{H!^^8PjB}umGi;MH1x^;x_OMDna%lilLKAME) z`ZJj&4hE9}n?ldpm?*z-kM8$_YIW8d6_O=zepNHwMb31W)ESz^fIGb9Ct4F1b>Q=A zzlBYRHd-K9qM(PaeDCKu=CB!@iIS16WlT3omEre|C{B~Z4%}a1>7j# zVymvR11t7SJF~sQpsW_h!#e>paOy4oJ2*u>?*08nZaleTM>R1oc^VrPhCXzYm{$l8IlNd z#k-#x%(ID~T)u?SWp+R<8q6ATmM*0ons2j&j}NO5|cScY)0LILw=oRr+f8zgT-) z*>+hYJUIz06Wg(;Gf(MClb9dh?K}AAK)v0l~UKYbiKFNp6yXV5-}6W7IS zS99#1&enC|Xh93_iG2rKPhg??C_qnX{Pd2L^pK>d#XB4S<$+eHLxeyY* z#UEW=dTFn6(#&}W_9oxV?DeZ4XyQqXN4)l^yOIRe*|xP=SfDc+&MZ&uB4N`BGHBJ! z|8aRlnyK`d`Jqmw%iSuhDOtD9%~MLA`=A&7IyjtmtHNhKu*HP!JUyl_`5Kpvknq$n z43!LFSka-lopbT*7<#ghmabDUVmR1S8P$@w3ebQ20UJW)n-P(-h^dqEqj*-^kvMVb z_N|xGfZcR{@o5}`of`>XB*>CwINUOc66X#*w>b!kLve2BcnTT(*)SIwK0C({vjY-#&fN;GxCz(U#fJrYzcdQ!oT zel$1z*F~a@5=GiOKfNom$vegd!&&`tPYJ6Ab9TRfY}=Jw*xwxPPbeevxk}1%OVUeY zc(H98G<|s&qx`-RQAQ0LqB(HYFw}6C9~q5OMG`D%Sd%I?Z)CX*j11maG7&u>?we?0Hxi|W4&geJ6AM%CAl_#p=%I^KJ0SJNEj!U@C0%fv#@- zJ*3CB_2;hqV6Nj#ihR=xMgB_*tTz-gDYgS0#A&+PNQqy5+0Z(JHk(oZ@dP*hf5)2B zr#%s{2Xw;8Kgp)^)oC3FUU@N2PSAS-+g=+h^=Umf{{tsMt8T#;7Oen};XR~=zi}0a z(0>9)S%85nv$(qKzfY>Zn$5y!SlZyoriJ!HH;Y>$=*{EfT;QXs0ggO}VlTd>X>y^M zwCZ7d7#?2)Ni?HNhIWHX0N(n!BWhKL!L@%v9^muf0@?Zdbb*Kop?FcX1N7zUCqW$3 z?LShY2NKY&vA?Y&jVHv>&i)Knl$ern;hR)5xtxu4ChreCUz!Ns<;jG=RW@jZWXNH5Gu1^H8dz1=Kiw$C(~lq_V~o*NWdE7hTHbmoWiCM zgX!Rm$u;s#buFu^_QsEBx~zI0iTA<6ce)Dol*45d-^66p`IK=6XvGVMKcmB3XLLyl z*P0pf@^Obd<4vpO6ahoio;`ViVFGh=CbJkbV6BliloullgE1%>12I& zAIi<=Cfg69aS7!To&--&xQrAiOyNA1GV6H?(A=iKd7DQZ^hX{!*obR=Am9^=E$PXg zRz-VMUc(KHRc1b;CAGLBCO2}z&v36$&7{H4rTs=b)Uz1PsQ8=z`Y&zRb(iAW_j?B3 z!^X|YB*buG7oOLropv#bez9cr$xutJuKGnwD#f5a`G4#Wr9@L?1tO+9;iqcBXk$-Y z4O~*yM_CN4qM9`DjDL#BNxy4!+644blPo*)lV-Y3%0H&#rTQe44L9!zdU4elvbAST z>=mvsk>Qr0VhLqZi-gH$KeiG*%kI-8A_dynNd{2D=)@uDO*jlalh$)iI;h-p!nrU> zpv=ypBrhd~IFg%@_68RUc&4X?Twg?&>#YEE4|%W?hCpDwb~7L?RspckEZvC=YtH2> zu@iM0R3z#48{F<~;NSlv%k+G4$7S@&_MM4~yS{RRee&UI*Ame^71^pk6QSz4d!qQI zDhQ;+pWfu4!?T(W?{;K9ZNmZr@}5L#7~>EDp(Smw`yRwDp|Cn-fFq@XL9s;+XOrP7 zzw2%%%DaWp2=Nx~@w^(*t>5`tj13+GA2DdI^y`ha%y5fzZ}VkgsSK5JPgt92a-beO zqDv2oIY++mh&3t4d+vB56Q*7FRO944-F;B!?i059y3;af1+q~@`|?U*toDh=?(-q0 zbOLf_haf+{kl@Mt%=bB&M%q~esn3D(@V{od_6qxNgVu6rom8di-h5LHZh2tV5F z_OVWVeu2(4e;i!Uy0J;+5*b&K#6@)>3=w;8`X0w?NG+D-*TQ#xVnrRKRK|(n=G%dP z6B-=^7kwG}u9PWw$2}IN+_!L>Uxlw;`NOQwTf0=AdLABr!8aYr)1w1l&p))oj^6=S zC(k*t1zKY(sPLO8XV4EC8ACl#sjL!}{E>ltfBRfD>$#xGY9|oCI z|G5Sy0adR~dq79gGSumk?jEE{{O17FsZzfJTC&wqND}XU9AYuY@_G&C`dk1LF0MX%#tT4-nqU|u&L@*D@MG-Ubr@4=Hj_Yy&Kn0+ykqnh5#Gg(gVQSo<&Kds?>PsB(?eblafA(f~DRr zA7*gaoEn=G+sZjQD_hbH2*p?JoPYJlhnrgvKKC}bJJtirMzeGPj(8tzxO~#Hfi>~y zNl?1NQm~Kq=Tdst9V;d_)8XqcTS5xz?W)WJBHa?MR$`Bd_TLXFHdcLaPC~}lrGvSM z+6i$dK3;N9jdp$8YD19|WR-mEtc@cDiys3Z9h*+f!Fu!NwLXJ`#B79eJ8k6n?+!^8k)a1Muyl9c*p9FEZi~DxIzstxubcR645Tk4DTck*EJA;2 z`joIAaymZS(>-5&t$ze8nQ8%KG*PCvy{z}LQN9G+hA-;D=%bt1!P>I~JftvR0~6)} zV+}ya_#KG2=>cG&Qw#^DbE2xf9&g1`jLB#U{KKrShby^YNWu;LhtUf_HkXmsEttg{Ejb7}Kt50P=KW>2dYZ_TdV65)0y0rQzPuOUy(m)FkTRjHZD4hdR ze(Sx_)GbH=SAQHl_xeA>g&@f_#o8od*MC2D?g4O~S_kSgEfxTg`svh*F_eB|NNUlI zxj1!{IvZ{HL96q7noJ~C8r1}PT-67`KL`HW>^!fap9EKc!vUbCRsqzc|5sS%fjLzT zyUZinj?^+~aR@wYL-^k4Q%ofVSd4um(8RX|1jVp`Hpsc8|8Mj_rLRIqV{ILA80~xR zQhaft@+_Vw~f*V_==d{w97b2uyR!OoVDK^Rx=| zs1k!~@j0t2tcFQ(-+ke` z4hzN2_ut_h`LOe8;{(~IR9#}qbGlcAl{&kkx(Of0^;(~VZj=pvKF)IL-k1c3w4#C~ zB0;s*Cc2rA(ZwxMGPyE)OpwrME^1!Q4f|*VcVU<%m3+@w5hniR-MPQ>?@nl$AoX)0 zWZ`lpwaLHFMKn-6X8=`EoM_)M+gnx6?3n(?PUp@CSXD)R%;liRL+z2?$(9~%*coDc<xbG;O`j+cUpQ^atg3>)Z3%nUs*WWrV!Aw1 znB^1(_=_gI-*es%N%k43n0~ulTwk|Adk320vk05*1fU+@Q?OZIfZllhnMlPqpp4bb zwo0VxuA~XtIG^*P@C)+siTa)*Sal6}_i_fQ8I|>TQEtw`mh)6FeG%}6yzYKmPnFG{ z#_x9w3V0XtBhD1Rm7Jcc*yz1vG-A~_S;I=GQ4lQY?tz&D{mFJJzSE;C)Q#L@?r0JV zZ*uI$-}pE4q`Bxnc~{8}2GoS1k48bn@cE#yA)?t<@d&`sYlej_xLuGEL-;d~8UTa&>^K z&S?E1PORX7{R5$Z63z5W;#S;Lz;w%!Qo5>%XLC?eiuVA7oIybHvS-gu zd-I@WN&AI>Gtyc^_&;`CFY-mNDHK_eS*E~i%t`725ZN&R*${TT0CeP@J)Mlek2Anrz|HVh%}1-BzSrSV zi`p+sl$H~?we%*nwC&F~z(}?@{lnoBbY&9YTJwH=d~F6p&St<+(ACE482}M62F5p_ zYa5X5jglj6(8b2zrRNghdI1958AH24kH^Z;D{bJ40{XiI1Oa0M?*@+#FYg+F*E1*J zjL0roB;7&)$fyZ`UbH&AZWI;1iBKMhaZXqjbmJKKpW%(A-h-1`06}{QDCPg`fVcTK z$qxEY#DYM>)W8fu9FV>63}U8hx(2!LftE+!n*TQcrvW^qGGFIZ1-(A3Jm$#DR=pY< zK27TVCzt=52grX*L2LRT6#is@C*yyTl?hmR5&6IQ4Xg5gKriVLV6~kD{^!YayCB@K znxxmNT_-va)6)eX$#srj_#^gEuh?6buF#w4$4mGEg^z6`**(4mhXE@6TbV?rVv#U< zQaLkluo_pWLwma&Xad@XLoDQKH;xA(`2t}<$txLEb)=tYCHW^Q*(4UihcKk0CV$AJ zno1u`*{{3#8Ga^$Vcj-QoPCsH(L?Bv`ZQDU#G+>-tCy?k{X3f(r^Um#d}U5v<8xl0 zB-qtYn3~!%-jDU_Tl9|7Y~^)&AK9I8q?d{1Yg?yI9wmrXw04X?RKuUIP1>qw>-eF_ zI8?^y{24!@wr+V-I*5y;+v0%A^jA}sL>(Hme1SnngN5OA^|PIr?ZK?KC-I{|2z{G9S2eK*E~F(qrG6;Zo+`pb?7H(Oo^Jmxq>5y3p-;Ikat-BOte4IE z+yHufWdAS@dF%K3tjm?#d~-`4A;n{{hKGKSE8QeOwfJ6}=B`n9+#Kn8-Woj}4P|?6`|s#GJy)pYe1)no|g(p~k>nPCA#+n^s_D zMe>zgyGTB!4~bIfPAy!ozax;&U{jD9phrj*0KA76eq8?WUmD+h$5-lAeEs>tOX&b{ z(ldoSu?0ne@S|8&eq@Zwe2I6Bm!kJ=&_rbYVuxEC>kbiRv>!cDFZo4`^3UnezkH7f zw2wS^SeEn$?bM@&)CMLh^I(|y->~3azS6uW!t8b2ZzZ8GlSUsVdT8IJS~Q7u=bAAW zhK@C3w*HA05+n*?PD?I$XKcY`tF?9eU1N@uFEN{7wRGj6Jo4{n68ToD?C_5Z(PYH? zta-YLmZ;P=6Fm&B=6n%`Y(=ZpNo;t0wW6|pTz#@3xS;Qb!DhiQMao$D+b3zC^q;s`Hc>ST&lCAjrED=vR4`RBr8Zd|NjP%Dt=NNN$=I7sB*quY@v|CB0#EuW z$T~a*v9C|%(l?M?e!>&w%oUT#n1#d_dIn?*xSOvzaHq z1A7q_q8|_THh&5C12M&SM$G*8-#ixo-de`nn42xzJ2fHwgjyZQp}{z)BGPkZZo`jsl~{TBCa*oibDFDM$Fiklam>++Zyk?{i6=6U~ick}Y}^zbfn zV(Fo#^NT>|x%God7Hokan!$Fz?moRgar}_E@NfeH(wuk!#P-^MYGJ3xTMcFOAhIun z4wp_CuH^CI%bHi5xU&!EPSBKkn=JWy~4v;Y=Ez+vPnfcs>+1C8x+ zm;|xXEkQ&Q-&@Ru1gr))JBvwc|NBrlmTOdz(%eGAJ90A=n~*A%7P~WR#Xne`fxsW5 z6Jg^zZP!8Kfo9a){vGf4m}`6v?r|uUIYVUHi8m`a`uEP_qFTK%zW{ub%ZaCS1M(X@ z>-UtcuIVV@!!Tc0$1j;PB(roRS2TRlzZtHAgtnUf%+lYmT42pEd)Lk#=g8XI>A0CJ zeMMl&9(#YU2w?jv=DMO_?j$1R9r*B%JB#j67O0*Mgl+!P{JL?+l}XGU)zAC)d+>8t zbs-oFG(^$;bHyMiDu`QdbtIKe zV2V9+R-o6q%Yn-NyH<;AeM8jWCBpg4WAR_V@JaDwaBj%gGkf|S;-nj%$Ps7NyMPqq z^JjFXH1^{KW?%HDC0aPR6vD7O2wJ(LN;4i+({YF`yDFLKvk{L>A+eW4I&7~Wq7VWF zU^~R0nXZI{kU`i^bM1nQqz??k&d0x2pU;aJzWREGNE5%bW*j)X6;wIPs!p@i6D1Pi zgXoM)2b+(h*@t=&UO41diM@jdNU(NjQDpI7>Q3~>M$zx3xBRFXqtM4JZLTh{mdT5K z&qJI=AyLJ!Avv_Pouhm)W)yuxEXzhujYA5uft_(;o*{mRANh+6cn_#XC;NsR&2!@^t>3c(Ir2Gpb_v~*o-7@Qm|P~ngtZ3cuyn~@G2$n$sq`I zrZ8w)gd8e`qIPxPx9#Fo9my)PHOXx+s~0ai8%&81P{W<~i+=>u#3kwCw2<6Jr~F{< zZ6@*Xg*V>OF2%pt4jHZ?WY-5N65sc%76?bryvL7amRC>Z67F{-W|wCEr0&2ax~<9J zT#7%BUOK<9=ok*6l?;!i(TU4@pBRIGfbbS!MnU0qionqM-d;p$%Ktu!elPJCw&NBt z6G%{2JzmNJr^YEy1(BqYyW2FvkF84=?$f7mJn6EWgX{~v)Dv;EIg87{yQB+p5VikC zckM4R3>uPY1b&7I)rj8+jYSy0hvXZG*Hj2o9Sg4apG(gL^$d-ju5owDz2F(F2Xjm1 zkAvS54tvk|=j??oHoFfjLF~iGDG&wkRGDTmm=VZ#BW(J~rwWPjxxR>`)r^EiZZsva z^2{=jm!N9$i^wZM7!c@82ADIJtpU1C5DGu)KkcGttSas3v*&PY#`Qy>Mzm{iG*FlM z=0liE0!sham-41@U2y1bgXlfa5IMD>?QeQG*R?({Sw!0ogz_t&8olseEg*!{5tS^C zyNHa(O{V4`VOWwVt+HR6Me>15b3YFWfAo2DAl#D zO=H$MZAEkIQ=}FzCVpE)_YIOg|DBl^jHvoviYkUHR^^joU4GD-A#A6|p@(NPYMYp1 zD+ikdLjWh$2g*LXy9DrOD@c2OBrPLWSk5)e40p_5oDlz1glz*iyo0T*DLTao%R~hC zpDo%60~;01*K3BVq2?3^{x}J#Z31$xd=Fg71!4J%1=W-1!JoMp0*%$?FciMqd9Mao zOj**38)4nnvWLA=4z03BsgV|YO2pzmQ!)(O1dFuzU9>PqbPSE(P>zd7Jso8;-+VcZ z=eOtszq5_Fu}fM+lTX-fzaBT7PWmlGH&%dZS~d!oA}N*-%#TtQY2$li^qil8mh?)r za&+aF36lnb(v*&Z*z6%9DGAGWKzS7q8NOHzS!n{b-#aZpA2OnDC{Wf$VdIvrDcWmc z>~=u@c^1ZiD;rH-Pn#6C1hm2tnIY+jT4GO_#z<4HJ;2hd)T%NH|K09|7{U3K#IsqM z)A2-{>Nh6NwWQA%KKKU$mFm>Ne&VmG{mhtV#381np{Q+ZoR(<)#~7ilfBLk_rRIHf z?DtXK-;tY%pb+n!KaoWC&c@R8xTFsraUPQ2z9_I;bOzC^t?z}&ws%)*m7#cX?BBkJV$jy4x;7)OMAQGgHfNk3^t|rKCkBc}^F;yFC4y^iKzz z&nz&f+~OxZ=;Avzb9|^gC;EvhJSie|8jDbAiX`0cE&_=qIJYBG-?B9=6LDpWV=c0q z7%GsiJeiZGQP2x?hs3AI*}n;6sW04ZcVVsu7c<n z#plipac!`K3m`V3&eB8~rlvdg$z(p0VBMtt%k=7Ik*SorkxJUlBA98G?nz|tym!{C zQ2oqcZr5~2Wjo7dU*oKuO!E|bez07iF>R@pZEB5Kv{nB=N zl74?NDH-+nhw-P5l0Ghq#mYe-y+P!5*BH3oJ5W zYd9MJ7H@Qp@e&aIgM-*VwxZicgw{VM(=zZ#Mzh?f)#uUD*T18=j$E}|C&StM0ULQe zri>$vT8#TE{I?H-qOP0-TQS^Jv5DPj|#{bBdkS=(SZ# zSfyFUTsxe3p`4+zBQznrX#AZPv#oZ3j&;eL64#x)O^Qp z?n0j&E)o1Q{8wt~jdMepvbOs}pGUoCvmM3N+LGs21=_yiwhCL%)1|cWu~Ue+C>G^M z!q7dGAk?95dbMEDFd1A1$^;o16gaAI6xIL<+$H(VK8?PQ#19nBn zj-FQK6&33hlP?+_-mwxq8bj*&BIf=>RJ05Tfo$Sp{4p0}EJ%u6xhOGxuGKrkMQpe| zI>WC@#CSyUT?a7;l9=`|W$pZu`dN{cYyTd4$dBy~{#fJp$ch=-8(9mo-hcTz{0mDA zHjjCiTf-Mty!aNxmU{3==p-{BVZVxVt;KeKlxddT&es~BtVwqeB7{d?h~gCi>!MV8 z94N|SOD_5`5v$wM^hfrPXI~M5lNH8#+v0oGfm9|&3>2wOxMMV8m%y}5Rw`-~-;y!@ zhnV_ShSWCwFeY)@&`L&pf?>nBHNO1kSCW=MO8n4N^lh$@Ig|EkWE2hfzx0)c6Qf(^}*y8xAI6c(H5f*`=M1qd*-?__3@J z@Ol$`-oKTZd!bPbz)Bj0NzlcsyvGTmU4V*>>^d-i^7ByDD8(#;zs@_wO&a@z^&@om zrP%u4j_sO67s+<@JtCGNk&NIAaDcet>y0GK0)1y3Lyom$?htV~e(Rc4ke z9Ye9kN3m&^Tw=zLQkPz{8=W%kn3j14{H1>Of7v;`e@^{i&SiZR{GHlJpX0l0n#S*91zc{-R~&AB z1eRv|{rbX>EQ>Iu$4)%V&f{20mn7M0r#p=nW4c4~jut)v>T?idZY!G2 z;RjG8)c6BNB@kOgYX|sDoq}A^r%7S;X-w=8?4tvSl3nh>6Y|@@2QhdhQ@Ij}`7-%PM>RMJJuE<~bKV52rG6SG@CPe(#`*@IHm>6i+TSQH>oH7IWs^ zU|QzX&3V@&n)bD5MOBfwxt90!X-E^7(}s@U%W>I@R_sPIFLFs?ob?w4dGx$OlxJAP z7(GUfmtt(k%!QJK+5;93n?mjr%Uo;1CfZTVWq z@MUC^rA+t^xuZ>3`SeWsd z>Ce?J3B3W%w3^_w1L7sVuYKAPMkCUG^^I1#WsT6Q>je=>%m3`w85gy?X9}a#7(zgA zOWKWF``_4WU4~&BTSejn!22-eq?&#TG+6_AP<{^x8;$PENiIXa|BM)ah|eh3np*^w>j1lyeIQ9*Xs=pA5`dlln)8b?dln%du_8w!WnqEO9!`Hyi0U#88+66QUVR>j?1;v+%0}sg^z(L|9 zP#Vbs7)zJ019t8feD!?}p5`w(>Q?iUj+y*E8%wV5s#)9X+;bOP*a-4qeoe^PjcG?9XP`fnk%SKl{91Y&_7T=I zQ>8tgE;|K`09~tZ)(Hbfuw-7fkyq~C!Z~}uPkP`Z`m`MIe|Z{28ECJ@tUd6vv`;y0 zMQ`!L)2FxaP}3_#`}(*6Wa4>uSh`c+9z*IKE$hsx5Dke|D_J^7s15C*|K-j|NO_Ic z3J`P}tZ`0f26ncek%yMwf|a^YK<+T`jY{vofaZVe0Qu@8K&Vf#D<4dD7eGbZ4-xrr zyLb&)7TP`;%V)<^l7>GIH^*~)Nq}n@v zK~x%in*teIf7ukzK7M);I9{48ogQJxb2M;dlvy(qh@i^>#1-VA6b3$kk3d;Elxgo5 zrk-kP-Qt|mZq4Uyq@#wzVcN+#^~ax6@hGrpVqx(6Vp!pmhIazH)h1zxu&(r8QP#Y! z>x^oj2%ZdrkoL3AJM;P!1V32B$zzt_qfj5pYWx}u<*W$QnYw_1*BA(~b+%TB4-gJMgzNGxgOo=Z?8li&J^We9I z^aeC3q^lIL$eE-1wu^68zXT{G0yb$-8m70;7<~y$FPUYrAF%Ulm0)7aWDhFuSiM~L z9>K-91*0I-43tVP?qJB2WpzA{6%jnZeSF^1K=Y0b(G|(Zj%2Evh!^5gc7t~29t=sO zIu8+Gn+Lg`!k)e?o3q?Bh4wv(<#=ykdfTG>!2mOuoBzE?=X~kGcuZ9fRbhnb7H=E7 zW7rN>j}@f|Lc6KrNY(x9JEe96Mdl}d5DDmb%a6IwDa;twfF!OqEZt= zm6u*PpTgY6s6^seX>o!V@8Ca?%m)7c6hrp4w_)bwSHuK^o{fi@B9z_JUc=ZgAU*b| z!lj(%S&h(y;^p~rx`;d}j4FoGH87?PaaHYoYEtQS;dxSdL}V`3Pg;v$;(3_iAvEr}x_2`Tq;ho}^Q^1JHMD}}i29@w&w?}G!rT4mT= ztS6ft%ig6!iQ+G)V`9F%epR5gq(R|&rDt1;xBZ~C7%V!)`l-98;9ncL{-rf?q7G^0 zqr`T|w-1#n)PH_|O(BD@6mz!}$9OX%9WySqz6S=Le?PZI~`zhpbLZrM$IW1R$%!rqAagnnyL>&pXz7*fq>lIyLhbAG>ZTjOo!oo)i5R@ZIq@Q^>*!m=DoXBeaj z4$aGGMRP`xO|f$utlkD3q2_nOC%0sN({{4zEzYtC*v&}M+p}^w#A!KcdBrw!txju% zfBR$X-8GxjP9*_t+m~E@E24H5Bk=N>Bh%^0no@`R{a+)pHp#iJ!o^#CZGwn6`YLb< zx4BQ-%|2)LRn!NOaOK8!KUMo`b_AqDEi3uE``kslJNqlILN0+cS$!T;v;w1`)7krP z7zVH*zLo`q!y~m;+7b>0dIFz^-MCK&-6nbM+(}pR8}z~Y?6HMg$h$+5&}uD$Xy%A z%Qy0^$fapkRT^E}b3k!!sKrm3%ZHYPx#HirWwqf7$`!jy8Po7yTyEEP^0lkZ`_*{*RB$YUy}(;;yx2?O4$o=6Bdc2yFXOhHWcl-_dk@YtmF)e2 zJ}sVV+F&J&fOL)$-HR>aU$1`^ntjXa>!D%fUvM8i&%%q;6yrPbkwsL0b0Zem_ZGJ zJ+{IwsvS=vMP!-@uKdu2`T4E3jE_O=dzujh1cJrXQXMXje;y6kNVfin*Of7hYYF*9 z1iwr0vaQY(X`Uy!t+oi0rXCB(5}Wf4rS?;&V4eTEuu1TV9g@&k87rFbxqh~1N{~DF zBKX^6#N9yA^^^&sBB~(EC^O+IKA_tvMyWMx$NB5yNSD1kxbGPr+X-d zV_G|RDAF?FsGiliHFhZkV&}CU)cxm&>oUtz2y_eftF}q_$n#fiR<+aaw;V zF$)bdP&oN#`qR?&SIS9w(7n%SoTijqbZWb`JZ@p#>nxN{QHn3QL1e|n)}QHI-h~}T zLx;;@IC3wlRqWTql?jU%t+m?gdD3kqg{;OH=q1tVb_gE)2*+Bi`)vO?XE^{?UI4h= z0qZ=)5x_LiYXtrwb9n$xB*V)fmc>lFX)Rszvq<`tB#k~m$NSZZh;Zi(h58fOCL?gqFdfd(p1`@!du>#kDVKJ<@=Q_3R*_`V9<8A=xovG27X$;0Fr8Ig3(#<;=xrH?XA0 zZss~W^Dq-pZolEQEL=pyFe!8RnI|7y`0r=WV4RpJ0#hrc9-|Itb>gvRts*;ZR{!o? zJXQ)P%7-Xg^g7YL17T-@P&n`Ex5lMEvfxCy?tkDE{I#W|3(cN1-3+OYY%2R=l6?^= zTE|$eC^0IUj`Yh!OG}t!s!YMfnGz1^!xqiCIMGX7s}fENWk3RAKvLDO!PMOW%8pli zO{Q1i0}5nv0A#3C|GXhK1Jt8WAA_`jhUc6)fG`E^L4`Tq(*Uw+Zjogpde;>?lER^PCfPuK@wbvw2yFNsqvDMqVN$X{ChwtxDwfe@% zR>y(Tg6)d(ye-7IVy<(0&h`RgR^@T`tarvmQ8RZrtamma308=OhJ1SY(!Fvnp!+gW z5DTo8%ruY z3ZfX_^JQe=7xh63ukq*R>NWqfx)rdl&zuu5xn}%0Gzt8Rf9QnHoK*0wxf~bUg@UiT zt&AXjf+CIHz=iO2|MNTWvr_>P+&m~?twZBYKOt_um+`6p50_ya1!>i<+w16>#ed%p4+J(zkQ zLLMLo!$cQZ=Xe zGS@b4IZqO~W&_`0Z!A97y;J5Ec^N`~gJN&k=)77km;{|G2l0J*Ty2i=zwHIRZfvZy zo|uDwT&Q1Y?5O(en4DQ5MZ|>{Z+Y?{>{qzcU``s9oEW z8z+JEOdgcy0i-3aS?)TKmeH*TJr@kR{LLyObD@d7pZvBU7I}i zk5nXh0lRv_wU$7PPXN&WY~2B%0eyM|MhmHyGaw0;Fy+%JXj5$Szr04JF_vyn%ji=G^{cFl1gIA)zahGiBnZVY+=dV-M zfF&&xK*9aA!7R!2q(8hN2i3YZb|ZZTWF2kOTtk2S;Rpl-mBIl*n3WrF(VI1xbJpl~ z>hzA_bHa;z%#-lZw;Wayq7M;AX?7YC?g3|5f3|UUB)*cXeoKAW;;65xgpWP!za1Yb zR{R_IcO@p^?xsA(k!wVuo*ovLfcz8dj_mvAHH2($V#t zj6c)(JP9^#Z;k}F_gr^61FRZqDhhq^e+QF?19p9T6(of>%r^R#7(R!mp+5a}O4p6k zF0AA_bn@ar*+0QY$q0IYsSQ^2`_19gyK<{?+`f$Q#7_(HX56J?9(|urc?_A$2lC&h#NJh+# zq*RHyz}dY=abB3pQRUI{G+l{(ar@G-#UV}*vJOC`T~KM>VVC$!dVoWEAXQ6Kd(M8e zV@5*x!t0DdTs17ti&B|V9v2%27MoIvP=p%iiiWliU7V5%2gOK%9gZ2189gqnN8sV@ zMtALpTjjH{#WW+I=k@Xxcc(0$PS*>8hgDaCoF$-WauN_on{0(#R4xJZqC(BE*()%U z4gm+eU7=5DB)|$U)R5mFk~5ulC&D_h1Iih)s)p3qzP8_u&19ATnk9BEGkfT@f65Th zGwIKL9OvE;wxj3*x^qQh3Z^AcUgJP9z2K>t0}!W2Clth)^Xn0N!(*!lnbr5DS@d|~ z0y6zz)N(mQLma);P2&XYumRscK2J?T5A?N-fEW;P`gQ$L@Twbo!0Gkr1a#G&vsFU@ z=~9LclhuIE$DJTk$m>u2IY8b@j^BeT_!%91m$kAH=JXem)+~Hik^{a^s)5WauB4Efq2)N&XUZ8`Y9yT7cjDaTTv>+Q``fyg`525IMydCua z9u0J^|G0Vr79n6F5d8~R;o=JuLQio#bV{6u*sa~C;BeE?%WIZaJf<5w(Ch#4(TWIV zMj)!m9@xnozSt$Jn#JVN z?--2BTZ1LHrK&Dno%*fA_49dCHqt_EYtb5{0xE`lMx3Dy3KMArg|doAA*ZjpX=?A_ z$GX2?9+SIC&QoA`G_STQ4Y3w%jh2p^MMJ%2SwO24jUHd^BVnMYqGWKkW3*eWKIrHk zJ0E|^rhA5f&iwwWbn@)e*KDFGr|*Gq+#$;3U=qZb;Dt5FT9t`i@lnb)2B1hvft|lT z`up4Ovk!P9FrCc)>NMqLuY|s>`vs&Iu^|!nKAxd8-1t&7lyH}5U8wk59~^S+?+j|! zs$xri7T_yCt$BP5^21X`SV@1+g=Bx2TAtUw*`HTG@K%K1UHxs;cTTRx@b1cYYbCI; zpR3Vj`*RZr)>2beCPgp#mzf`_Fd;2O^?{Of!?1Zgh|s~K%yMPy6v^S-09NrsV^lSWr1ad`H6ays*cT=WVWpvQ+oKPKVW13iAfSt7k7=Ac`K{UQ=q9~#7~Mj zNi3uL_+WUfqh&#TAXO*Kr4^zwu1{~ENX*eG?5QOSCXD(Z`xIR0%SfBDTaaNQKw)i1 zZC$1}O#hv{2)XzF0e(P%zt!ucb|VZ!ovT%6)TXbPq~oYRI9#n-EjOwb=2jRA-?^Bq zPGTiCsC;5fTdh*bH>mXR{=va;1XFYW%D94YxHb%_P^CC?$)#aP`6iTW7*gkrGLK#o z^2Vck;~O(G(=^$u%uF#iHRjZRTA4lrn>11gB;`IT8}Z;iT!kv`SO%1#I;67Wk{|}C z3@~YJ$b5o?#!LVD2(#$XMIRWDD!u|v-NSGw!KAEQuNHFkOsIs)%n7+HpMP5XtbQO} zHzF!kgfPZZ!Bk8LHT@ z<5)VJIxR7*pRHIu(b0JkV#&jF1kZ=B@%@AOHX$o$)h0w0n`aY(lFl@Q6ZSJ~6QU9( zc@?WrEA(r{Qsi0|Sgxzdvu-V-HgJ}W0H!mOZ-15AixV9ks5ds(}+v!HBTF%m1Y)qf}CB(nu!C5Yy|$)@aVH)R`nPQ7s!93{3i%a7Hai zNlbB}tEtIdOdZR@Fcrv|n6+YND9PjLwHzZcuU9!{rt8~1r|K?+-Emw+YcqegiqbIk z)3uZaRHZ1WRNRKLL$N2h&%kKJL&}PbrlHDvVTDN|uYFJtW@kQ?Y6G|2@nr7DsL{c z@>im9g9Vv3(YV1fU|IEHbd;`-Mm>#2vosp@MrdR{u|$VgZT@dZJitY62&%jEd?0QTHesb%#qj z1Sq8nSwKN0U9$;Ennm{qV{o2@imeKfZ{aG;jO%4*;V-A*FBiaH zHp5@G3jZihnbwrEUP|H~iQp-jm9z(PAWd16J_Ps+R6$)zW6I%vlA7EV%P6QN0M#if zs1*>(HWbvsFiM;xa1I-*p;AtxQY?*1xgIKoapN&`fRG)D`hm+Z0jQL2Jcb+rRKn1R z1G1tpbKVq`@GSH@g9Nf#S;P_Lc{ZyL`&XkWillxx?Yb49tQ|pb1Du=6-88o$F`<4Y2N6f~w5(GLWSwf3b!vH8x5{Dk?Fuz*a01FufMH59XWi!2)Z{Lv zjumR!=B86YS`liVHlwt6e{|SCN|zIAM%s|Jp05EA7H@$vVmC#cmQI6!N+rO`csU?s2sp=j za7H0Gs5G^L4TxJzJH3E*ss-8^(1)aOY!BkhP#ua~_N&04f(CTeGyuNx-x`!x>XR^s zb5a_~9T@A)n()hwg_!{{iS^;&#Nf&BrScX+tspzyEf8k4f(>Sr#iX?hNUK{Qts7%e z;{>*}9YsOnTBmUu24Yx;#_PjGd456t6W)q#%$G0&!)L)z!yI4Y@C}0&&-q`wTDj-a zvgEl}$q9ef3a-|TB5tMXMHFOSA{aGkM3bIMWvn0*Gtuq$COd)_`+qR1IGy(Y(B$0z z<3v91U;mFr&8!w(&|5EiqclnP$NgwVQc%fIvz#uveAA3rXF#iSW7kOI_$(HT}WFCqNoqxx9Dz>Wzyoo`Ng?=%fCJ;UL}L8{hSj8M5IhxPs5@?~)t+o7Dn0 z`j0(Ugl{OH@?!s`u%Cp7_hWdkD`Z<--QB&6cPfeKbA036@>s9v!b7;5pbIi|J z!|%A)3}$}mnH9PCnZbQvikT8+$@_{JeY&5H5%c%6-BG)xl?g z)-;6YfK~+kz^9YDLndqb!mxetX;GIQhpxasA}I2Zu8HJ0aaqt0cR+5O!EU(M-=EVD)jO?r z#A)Vmm*>-kN?mjbqevFJz#cXk-sTtLsd?XTS~^2@e1Z!Ajv@snvb zzp;(%!dB*&)!4-~Ylc;-R~NELGndrJaPyj%pT|Z=Lh+9tmp_Jm0mF)x_C|T}b}4=MKitivvy2&QSvs-gg5{O_Nl4 za~XC5iF(@XBy@|+poN5z^-fw zVpyHE4r1KqNmoO0olTMr5IbRKs4`;qrHCrSP0UD=i8!Gm1)#~4CJD1dX>M9xAjCZ+ zxMhR^dN`eYyNhZLkg8LU(%p~p7J%gFfPc=oyAPGhJJTRHQ&F%l<<>2N(F!wT zb;j{BRjLF_ag~*+CPrRNs6`$aq76b3<`&mD@03Y^y9g|C#1SC=0_FT9T@nO3vY$&c z5>lKL{8#+YMd>FBTRo-P29~@X4qI(aA0wSoDYg{>+QmFT%qyC-` z?_Aj#H`xS70&=ygJToa8l;@ix&>M?V8OtOt;bC@X2%@7uMxz{pu6W5yir~L#!vPlY zW;}1j%P(WWVpAccn=A&X^!F=PvaPxaptSb+k<>lkqUqQv=gIID(Bb_M_~TF#t;pM# z`}>!#9$S~Q1T|EKCM`EFWlPmHygxpsGG|Mes;D%EI9F;@)T2^DH!TO?YR(Dpu>f zXAvRG^k2T&)z)^qaut9Go8Omoo1B%dbT8W6o7G$I`3`*&x?qL=q^8!PFa|)6nnmb5 zGvLHGZSK&@o%eiy-cGYs@X7R4f8tib`Q5p5h7gKx+T5R&JMXFftY^^NJqc?N5SY!v zf8~UQ67rGBl!cRn2QZV%7p!j`9>84b*=XDc;yt(%J$M1;3c)=*FQd|gD%*6CQnPUj zVAdJH|Mf24+#tEUBTEs?q@vwn*t0q(`I#ZU3oy@k2=Z(MvlJlJ=z;r!jPhDpgAl4+QnGZqrT zVIsZ_H#y@Bw00I!X|z(?49aUOxCm|sT!%y%L+LivpjarXG(55CDqb_7Vw-Kw>Y3YE z9aVTd0Jh6&LzIQ5G+kvXv{q{&x0wcAfe5J@ufbcHP%{lly-)$A6kWfwKq#)p6H5rS$Ako^oZFVqB0YvnJ*wOH3Lk zQBO&$rz1g~f6m(HB>I0b{$co_ddmNkGPrc^|9JwR_pkqFB?8jaS;XNiEBkU@zsQR( z2nP>LTaEq21)m!ap5R6&5^#)xbB2R|aSX%T9QP3oFwuaR4*I;i;8vQUoGgsm12kUb=N%Su*s79$I3-lieX;YTXdaf$g}Dr(|FwZ zr6?1b<~EZ|^tg!y*QrQ_R+=Zu@Rad(*BKeXWnH(|&?nsnM6OjmSt+p8ZbU|lm?tf5 zN386zu666;MSNo?{ItQ2#7PgW!dj;t159Zb1B`+$EjupAb)NCZ7vxFY-d5b$bo~yV zr6~q-robzCx~#?LL{KSp>K-&pz)>-&L{Fq9N~FztLM2l5Vv<<^LZoTbE*u4JVq_Ep zVf&l0;U*6iOH!9iX=!cZRB*a zQh?5bVl~7mDJMCcu{L(<_j4*8jG*P+{(d%G4Gl9}li4Eg6V}4sWKL+PnTLa69S-Ef zoHijtUo-AECo`MNIE>d72+f_F3J&Vr22y&G6BTM6D9|1$bv>|o_8!4Fs7j+nDSArFr=Lbl@DgBl}9l; z)M6)xO1iK+IMSim#K;*iH^-cE(I2D^&8DLs(@wrXH3Y_2uHefvoPcU%n8!C3n5&d* z0Pu{zDP81nO6Pc-(stwTDPdXMGpWY05R}B2s3;*am6|1@*CP)Bz?v5jr8s_h+*Xp4 z`EcTbq&9-viX1iLoO zIKn~Pn{iMzHM&}f&xxQ?>eP2>Oe=~C)Wjafq_s4PvsCGX7@`f~agWDJw!BpXL-L`z zj^6S?k-_t`0<9Y|wPH#xfkP!|X*V(J+fC-{j7y%)F;QHZUVrA@O-G~Qu`%6FJ8Ue> z2VJ;kG`jH)MvIhg7YcyuHHFS3ZW@bw#x^$CD3EckW{ltni~^$9MFUjM zexsZZ64nf*(C$zz++a>!tmiKZR>|84K?Wl^S2-1JM}i)&9oK8GIivbcF&3C&ZlAY9 z229AA3%d?9_CUcfZ=9klAW{P(uA%zPHl2kiZk?SCZ3fUFNnHG2PBBPXfSA+NH^X8x zDrINsY^LR%Ss?FBv%E9w%R8E7acq^QNt`mywI)oNlqHE$kl&Faw^~bx_bZ+Ai>9yFuAgUs$C9%d0}RH zrl;rE-E58fXWO`cwt@R+AA`|YC-I<8ARxjAH3lOmtHDwP4DQApC|RHm&SyF{Vo?D- zIHB#>D(O^*(=IEWt7#A9G+5p1)8EQj2Q zc&K98utj<&RnEuzAo2H+TM3pT?8W9gC4M0$AHiVpo~vF#hrc|JU)5uNkP-Toq=(sU z#sei(T}I(w-@1qxKDrAWGh}%ryTj!_zdM@jyy1D_fXHMX&P$;?YlBj(v-@XSCALTm zWvYxxc*F(MjvEVXXBrPjP7k6{!~O}K5dMtS2c!xjvgcC-idXv_z80gq;iFeiVSAmu zR?TLwxkB0|^<7DN*r>--Yuwo2QCr_e%DV%kBRIzd37E1wo_Pl>4&{y*^{7KcL9re+cQ6JTh`snac&tfx5gyC{%Mk&*BU{WQu875Jxhe_P9MAt7H zv~}`9+EV#-r4%eh*lTCCTwY!x1fY;uVX z^hk;g*Lai-!7W@3v_fd3S5CkJoLoptaP8 zIo30lm~qL-u^uAy(Nz~C1hD0FCaHiOVRVp%A>f`7E`>qqIZI$L(XpP4i0y>5$2-?JKikYA&f^L?+Q zV!;dEku!^vY&G)khFsTj+PdtorarJCt>2^LB4hgKOO-5m!$M%lcDAKv#kJm#Sr(Mz3Y{AhVY^b4nX7zw~AFEBy004(UR*ct9kgdU9y(Z2ho?*$+` zD|54?2I$I*o1rg)O3a!bS<{%}+f=6b2AwJX0HvvY;Nx0Hu@ea!j4ZJEh*Z@q;S2&Y zO+>@+alfUfLuntRuJrr+Qm_*?_8bn*?xh`H4&vIeM$r4dgD zks9a`k9i{1V5A%`{D0oYcRTIB87Wu&e@dfT`%kC1K7$UTxvjheV(;gjA69yv)}`BN zG9Hc7#0#M=$CFDKLb;upC&7e_rZ$!z%q{UOjf44hj84GN#O9N-ou7gq3E~@IRbY0W zPG1QG z$sW$t+#yBZ@CBCbRtuLgPi zzyJO7&w5ns=exXgFROu0xUrmh@G?lI!~5HGvcN9*@+QUL{EH87<16&J^6cr=)8`kT zj7PyUAO8=3@Cn14baJ)0ejfbmlOPyPXTdYfbNrHBj6W+!xEO!>sgD!{MJ_*%{~nH$ zaDG34?|Q~M>iNr;Pw~yuJZcaW5$EaRRqh7n*;8W3pLVj?7Zmy5pWt8K6q)z%!kL5j zV7}_k_O3&c@^scs-=!om zr*sc=jg-5~dxYIU-u-I(q5P)NjyOjT6i%piRr9Q_w6e+;P7gO$wsyFP2alJB4Hv4` z+E6J!-8xL_N6CsW96x{VT3cvILA(3^gM9(Ziq`I;c=!z&=!d7Uc>AaGbhv=!`r8B^ zK21JMviq)jdhy9}63+`Qw<|2(ckv|rX-=Y%oC(NG?N_G;A1zWFHx(B5wZz=hwE}Ee<$}+ck(Cmx^bJw`vU}=$ngQH35&-MwGw$w z>-LX8twb=dRzkn1O(Kmc1@bq0sFetIZncu424_+$5$=R)CFeGsugG0ESyk$z`j{Z) z4%iBEC&&;2s&k+%drq(n%X53#$5_v2q?l{bj%q;m9~>b+r7s5oAE@|dgG$UtW<&oG zsFM&$GxArFtCJA5FGI!4ebh+`x;v*jNtyUguTFBf?fjLb2U4TH$A0^3^K?Qh5Ku(lJL z5&YY0H3)@%GIOm4p(W}5t0d{cU0I#Wd#8_ z8-g`^wFb1m#=TYp+>|4p-^}FMEI%n6|BNhfifkg&nw3Mv%YCLa#aW|M+Cc`Nlr=|B zXh)iRS~DxTP0gqYvy!m-5XqsJf`_NaCS`A4<>-v0(M z@uZ{kbUbqm!Vfl$wDOZ+~bJVXD3&uis@M+%-FCPB_@(t7T6*)*_vf2*^bq^>q2#V@Vz&(fQZsz0kYcp|fOz#OoE z>i~^2EPXcrXUStTyL%6;Tn4ImHNOL1>4$hRhQ@pUUHtxkfmaA_({xepg7UDr#Fkoj zu#Be3;jh}|O~}vohFe`uXICNNOp0yiAfBhyq2yUZ{1_NLiz!TKGhkDot!D4(2X2hl ztt_>eE1D95YaMempNYVuYKQxwRW$iZnK+074&#Y2CT)kz;Tz3((8s3{(2rFe0Xu}q z>L?H*L_hNkvCW|rQowcx<+sin(?K(YHiBJ6@FqYldE*@C9dv%93^x{Xtb2;joRhG* zkfM6?28-hcQLI?6$U0^s$ffS7Fkuu~t8_=$kVCDtseJ}t1zU9Cv=bc&38RGI0qiV9 z#7zX>phF>V>wd8p|(N~qC}0Dw%QF~mMnpQ&;6n8RePPH|99ZOHJ5r7|IMsv@!zMoe!ci_ z8qy(+=T(H&`cU@qs*W2k)AwV@qQ!)_nD7=8-eSUAOn8e4Z!zH?BPQHxc?c$4o(2=% z6ra){PTZ=f9DMXRagIoED*{f&0<&NLG&69!2Ra;Ok_VwrwshcLfZnWp6&+aqhEcMo z;kqct6QYFoF!ar);rNk3(v6D5VCYhtj7%!sV8BeAFrC7-Hi6x3!{!iqlxs0ih%_6d zVdc>B?Os|Ag30siIS6YTS9Dm8t;dcRN3*)M&CIjZj^4cHti|QcS@KPXuvxi;?uvBN(3n^-FCcO}4 z-O2Pq#NkME(EyrS0-Z1QLZop^y%1?_NiRe?)0kd}%pA6Py$~7cl3oawv(yWz#5_A% z`qAly5J{5`NR(@X5VbEu#ml`w)H&UqQ!k`Ud?(in5!=zh+jJX5BVcM)(hEUqEc8N% z8VkJ;q>G01LXhB=dLc-ROT7>*W~moaiTPk;_5Qw34@Fk%l3s|Crlc35l*{!(Xn1AV zYMbkYXy!_KA)1TE^g=W@CA|=xnY+)i)zMNfq!RJ`-iXhp7oxG(X!^o{_m`w}IaIvd z%X1Rb=hq7{mY-fPWQQx_{S_S!b485qCknj~^ax()g=p)RdLbH@`$qIaFsDo}L`P<+ z7g9VI%V3ROh~C~@+kDvS2AT_xEdxN_rud>BjUz zEX;~ay%0+-mkL)sj4$;V=#D zhTAHKw8|l^a!7lXuU7x#w~hZk4*xGw$Bkf442DUfjTVD}w1Z^8)o`S=j9dMW$9|on z|99wrz=FT(|B3Tf|Kl`QtN*crtE@O(^;kA&ic8r2ZBYa}KJwt66k`UWs{dLa43O==+eQLBM$W>*@~2holUi$Iv5*5kyZQb#utD=ZoM{95$WveAm_BBZIOuR2WU!b zz5LA{@1`xqb%V5ZnC)!GkEN^!LnP0wdtp695(rA#C?lOfIuDP;U_{`^qv=Uzcu1lr z#j+cpKj9&**AgfqJvyWRN@eg!1Cvc($qXI|^9_t~?ctG{z7D4ZABsFgl5WskHi9HI zN6i+^GmxYS)$suD4Ew0V2m#(1ND}KwaBoA!AVroVwjjwCB-w%_TaaW6lKeP3v;|4F zAjuXa`8fLXw+E8k6RXmKBwLW=ZwMrr;eS>|Gvr(La(FXNCkwp)FSzgfyLdEEe3+UM zmqW=0To|3e-ZDu>Obte2m|TuC)Yol%M`i57{~69!@IQ=O+2VgraeW4zL{mgr7Uew) zQ+J2Uo+sHW&az`V(LgEDKHHm*_;jRWBroy`v;EyOkQbOB8ECPN{To(BOzT9 zv(X4?A&M=|&Kql~p^k#dypBESf%DA*VXyM(qF6=6C0qz3!rx1G_klkApfYyh|11#u zlK%Pc;1Nu~E&ZS3S_1j7dux$=fBoj|cW(kErYbvy%x|D}gA_UbbEYxgg&y1*y`yEGo$l=J!a%a_qIji2AHJR%V#j77ZH)At|X zIW$rfs?`L=S^qM=XW5eU-FTSsZ=C>XZ5-cpi5q^&iv#vAzWn;zKLt}DQ(9F6%sGi6 zcakPkId?O7JwrxudgaeVYU=jtpXq#h3vYV0$;P+wRXG_p&>XsCmflUF=ccm{U5YXf zuf~h(`vL4}W?5uB7wk#pR3v~|?5Pnq$;h#;bE83*^K{US63M%YaXlIdF;rS?szs7| ze8m`f>Y^@vAkyh=(EszFgT-}vn-aP&$-WDFxtk*faT_uLHXHcfo9SX6Oh>_x5|4lO zukPX*bjl)~&BIM~xS!qBw8KwRC>r8rpC68=y{rb^*tcwVIG^`?rr2*^{^|9`UR(C- z0_qC2sq0lgda?+psv-AcJ8)2IFfhSn?7I1Ky6F71W?TnNxec@Nj&?%Tj1Kd zi|N(XP1-%C;s_*y?_%FHkRgE@V`#{C`0>LAa-<>l@N9g` zcY&8pXOr012g&t8S@}J1HeY1Z#aCHR^r0iZ@clse_2)HlU&A=~4#vS-KMXd;`#$dm z)N0!t?b~JJzJ<2k81F4MS@yQ{sU^Cd#P1ffG~J(c_h|81iYN64bX8Uvoahcuy_&N0 zu^uwe^FNJ#awX>j>tC(i=C8=;V!!$az1qY%Q9W?VuFa!6A1CP`o^_{_n-7g=xHg6E zT|h76y$93eL$;*me8=K?dIQTG@fLp7gz0n!?D4$kSJ*hKS)L%{oiKjRPt|czOVn&R z(_%~g-@s4@^XdI;mo1Nzw@(J>Tb|2|2uPL%l<2@;@CNGG!Maj_1%Ja4 zj)^~CX2FFEWrwo}c5QvMhhp-F_Z2ItiHlros z2De#RyB8-0-6^!~7}}rXQAEI*xqE+6jG5{Gvv+mRjoipR&-yDSy34KBMUC+NvG#48 zQXb+;d`a1^x<}P~U@ZD5Qbkg`-njOEPj_QxI73ksMb3({qj``30s~-xZge-$_@P+N z&a?T=re5JXrOu4KqM$Vx;dmE7Y9UO3+wi51eplG}5)%-&3*JC@MC?ZaHG2#?$OA(H zJ>z39N$hFosFy5uo}wK1t9DeYLL@~k@n@}|HJYacSP#``PB{#NepDWF80eD`yp20$ z96CucXzXPt%%Si32wH$1&JJraP~0VV5`NY+h|u?9WO(Wl?qP6720!c)(W3RpAboHc z5j(O_RU#M^IY6+1i$96+wISvF+EYO0X1VJC9Ee(pIZ-$7c5rRw_J-m=QF)S#I4FV3~ zSOwvxU*ZtKI7*8|thxU?US)xA%9GgN&>E^SEg zw`>Z^IL#IKQ;{vtKV~07q7A!QBq3X%es?~*TYmobAK_Dl#tT?Aot(e1e;MKC+ixxH zzpFP>+1t+o63wQxbD_)d^V`n~GPq3{IHUB>-`<3BoF!*B*{^XG;+f1pKL^zwX9(x#ljQ9i7%J!eoLDsdU5@56VIOHY>|I4%6{B%P8$2FmI-xC<)#{>v6Wh zIs2Ps8JEuIvtPj0$tL5Urz_@% zG%Vl!>#xhd-p!})^5yvYT`5bS`OIjqwcwRE#$-BpRTNILGRvLJjW*u@CA+!(x}5$s z{0h93E`MDn-+%X0^3_Fs`UcfC5XH$~lPQSzADj5uX`6I9O6thz=uOP6P00j5i)UETg83dAdiLhc2o;Y}l}#35 z^rlvoZ?A9PwEarwSpR(1EWNxz4^zi)NE?64KKumTd-mo@TTDQMKz&49KQz72kk@Xc1$VH#tzK>k+BaPDE>D}4^pmtV5fru9R61sCWccuS5?Y{UU)OPlE z?Zvz0qwoC(&~xWKPz|DQ)FZF`XZUnRr(fyVekdS4$40in9Mn=BW}Sx1b< zD;VBx?2#X0{<=#by(yX&3tRGg_hB|J&&bmnlcQBcvbJ@Ch)cu$Vox_zMc)!@>3kJ7 ztLBy{@m3t)FzOvp+5FRK#|r&ZdlCgo{aYJGb#9$~du7M<~M%iBH(iFayEar z{zX4FDW|>8@3#C&J=Q&d_>z0C+s^wv*`5#lqFvh8d})4b_$N+TtKU08nmo`H)^Nh2ep znS#!&lUk9Oj5}q)jQ+sDl;inTE^{GDk>wV|Hi+rU)wj+LM?Q--o@c+zx{6GDQ|MwivL-=px zoVUTJ8h>B;R4ZACs*;vjE>xB&7hK4--@2Xf*+PX7kR18mQgQx~x{*rEG}ZFs`pChb;2=Tw%$U81)Sz!DwWi^E(|?XfG_ zD)7<)iJU^vAue>njqL>D?@sNCMa1_8dDt?DPl6(1;vgiVd!(`>5|M21V>~|uKjuN2 ze7P`0eJR|)5D9Hmp@Pdw?W;nWQkx=YmFGfamS;o55J@0XPna?iZ-vL8#A_5g!Bskj zc0eU+U`yEk@KO%|6JeL_3QW}AeeTTwmu7Zo?4^Se8Jlv47ac3SsM?~7MvUNX(QVL! zcx@661}74!rK^=4&`A?+YKbx43A^Ki6OFH~x&TF{Vp)NgQG1@{RWP<>j#}1e-2gXxU)Qo5Mznr~?S~RXZ>2?kc-x0LPHy7p_u|M0< zEdJ85ilj<~t!GMiDYZ={GL*2uSadTiUKNclDjbH9E`C%rqTHn(CtGDxt6+dlefJ}L zJETe(`BIBi9*S}V6pBq`Mfj-@kleAEkf(Bqie5|>f`S|y(uCXZCoxr4JWrEKu z%Qa_(v_3ag1`Q5M4a}l6Ufk9LhhRk{7280Y#O(u&xsfS`K@;oo<<)pv&7Q_9_wMrC zb`!A};4V+lBT|Mk3Ej>vrBeh?h2CF4meNZgb&TrNK({iUI=mT`oAgj9Di!bKxCqBjBVtPw~bI*g;uE;+FdxIfIGHqvTA?P^f8-Hcd;ybTw~W6ZrkO#Yp))} za9*e467lo!mU7@Tr-{xb#!vwSo{*^pUi3WW2a6kodV``AVbBRl;CW!jV;u$<&7tdQ zH`9GC^XpvZw{V%?%w_&}0a7Vy$YKi6Ro>dTZm3P%1<_cE!x4oK2dr%Q>lrWg?sJP@ zXEe7nqxt<9O(~TNQOAJj(RgWM25lH$#}1`>C=1D1G8n8FZ0n$iOjcR$ zQ@mTJc(;Y(-DZk+`%^s2OjQct$--2DX_=d#q&7wAgD%QUd;!ry7LjS~C6Xqq&?%`pOTW^P<9uYm|7*(_Erri$LNE#v9B#15*ObN6IH)4$yy%=AVs0p+OHN z#Bbvg4Fw2IZ~B8l$7Qr*p)3W}_*6FygqVpBhWIAXoN>vo>)%EXp@jS=)Z|8r`nN;id|4LzB z{r{fh`Q!TkZMnFrf1T81a#MpyKkVhFwd;BLarcmypGKSqmf!}Ge#u^bpmFJrpWhz6 zHH<4Fw5)RT;ldss7>5uU$^DEf%bLxyySDm zd;>_4$t){r0)YO+bLdau#wU6C@d3R2Kp98;CD(br3Jk zIG7nZ`D;KmniDf3`{80)g!z(kbS_+KMAFOo;;twZ=+dZ~bwYsvUA9>#6k5g$2Yo{1 zMIp%qEy7|D^hN2Kl|qRgTVj}%LMdR{^l<@DK*4^wORKM5tYd0qc~jwj1qk(b(L zD&#pRSA}*3_YkY{f)^$nyM3?EmwmSE|Fr%xS6OC)ajIY}2*bTsAgiU#oDHSVIjEYe zE8jLv2T$jJEsT2Q|L1s$T!hManQ>{DwlK1VwYjLOLRW~wbnN!MK413Pd;j;bHM6VL zC6JHtzn1IxFI=0~{oiMKHs1gE;09oSU2fBjkGsD5e&0JD^+@=U5PD>Hzv6MI6_W?= zowO2Lr7Uk+b=*rGpYU|}f6WFcXGNFaE1xqSKqxpbv@Wv38>?)UF~i^I3{Biw1I-oa5%I!o%zeH4RO!zrWucouBlF2>zBit)xX~QW-ETLCuem~O7rgj3fV5VUO^bt4?KPuZa;Q%kgu4h)% z$F8~!c%kS^(0EacW_u~6Aa4Oglo2kGCOQ}3wPV8KCLgcdMS1Of zcrLupIil8EnU{_ae7;h8fy3tG5KBnFNW|-(3*%J#!9G5i3c$~#5`h@Nl=W?$BN?+sYE(KNBmJ59_pOnYR?1c zYeD292^>*UCCG^J`P29y@Px>$9fxHJp4&i-#H$99a`vgWTxx230CATLkyJ+QsFjSJ1UF1Ska!J*d zHcqah9&+C(x}1QYbkuWeH(?XiTo?V84?Q6KhyE&?c$J&kLDGh=P%Oqys~%CYa-#7&6wjO1=KlM~3?TrcZ)b zU3+yu@Ddr12#^^hFEvaChD=`M@I+f4A%Y}c2d{C($V4z=aj-usUOG<5#tzRwARZ7c z_JbMg1ym(y+KN|m_wybdB5Q{kz<{*OoG4jdSz#?2yqc9@ipWxiQm`*D1CZ?+`J7DJ z$os3{Dt#x*cEyFqv}?PpIGANyw`#YesA_)zFEs>!7cNZHNW=P48xtYEtIs{Mc691Va@580lZ$^Nj~B-$s2w%yy3xBXqAeg-MNu0;o~!- z++U;L_cWi{j`Fn)tyK+y@`d31o+eMFE;T5}G?juRgmDD9gh;L+ADxPZ679BV$LVkk z{No-(oNkO!?GhtQD)D%(PT8RgQbt(9?lUfxi2+p|LC}%bpi-ezNf9fOZocEglppO> zn#EIl1}_<*5T3qCyi(oJD%Gf6cI#OUU+nfrP(AoynzQvDuibx-_vt6o%>HQQYp?Fb zmN1#pevQYQF)l4oHUeOK;MK&!bft(z9gL;ZbS@o+SRT6KWSvQCghmV1Km|U6qH9U@ zpz#bEE7jV`xq;)h_ucNmh5PlLLoAX=_QqT~P!*Mp*Y7ZsI8^xwXjLXaS#nIO4{T4fPS$EL_fBASlyXk+)cyUtQ&8JXhpm)j{bQ#t7ODLB33uXs(a5DRdp9VH# zImRzqy!$`)p0v4bT*>eL6sw71&L8nl1hB4@pqgSU--i?q+kX}|ZT zebhQ4mBtx7SE}S~dvM%)Js?n`-{=nBk={$v=)NOAx4TDG()#7J-#R-Zz5ZVN?baCrJ8AWs$MD#A(eAVd@2Yz*+k-B` zeA(-h203l?2kqwTPNPpwU-wUYXDw*{2*7sR-Isl6rFGKk4r$hJW56E$^bJT*DFIs?E<3*>HHU*t(b{g%IDmiMLG+wn#tsX$> z?_seNJM#9pg|D!^2K;Rf+PyAzquJ{Y`tVqVUiJq?)wk`lR+TjR?K33E%YN^qx`*V1 z8a)F9>UCQw6eKlS8WAXh&#%u~1weAtYIFeB8CJ$F=7nK2f2i;68I6KuvL_Qgr}^T8 z;fTrSJpw=VI%!8ZaVNmgxoE;I&9rurBo`xX1k@0UO!M-YEK+1XhOLcZr3UOx;TNmf zB%5D{dFdP`8r@4%%oyHh#isR6yV>fVwJfM>_OYhk6eoK`uvzkq{A!#9wlMb3JqVb6 z{jpN=A0ReioZ#mRGLHjO;CZSbRR~GCLj=jiAVOfrW0Kc4Rnm}Ne z{EdfYQc#v4DF7m-DNOux$!{zM;2euz`Zw&@|Ac58<>=QkJ&p1R1g+o-A;%!K39>?E ziRR_3Rsg$LFbB`4ZSoySX=3SvJA&#Jvknnbbz{F z!yISz=EhTJmTWjcVqEL7YF-XUYJbtxm#Ew=zbZXu$-BL~Z@*9YKH|UItMT83=lvD` z{agHO>HjU~v&$v#Zzm9LB&o*(#ToUrq$+Z?2wivx8P5Yk{1yKFJOB9>V z_WniprTc=vf1Ol2asD+fRh}^c&r{#E>#qp1NR}pHtYtkx%c&xB8@pK%?DmVSOGCHq zRe#~vvJ1=EHC*z&`u{GkXxaU==f{pGBH@Rj8@oXq_^v0kD+3w%+!Z@_Ky-6UYqv1I z=H*n8xmDEE{BruwW2c>(VULoF;rH(GE4;wihnRq=XhrGd0aJy`YU#&f)4@dRj2#3_ zH4VBZV5;!5q-i04&lbrw_k7>j;nxgdG0U<^rg<0#4vRw>>p1ou9@^55gmk>v<59F@ zUk8fcm9tH32Cs;*ZkJO<<~Eaz77lp3nPe%23IZ8t_bnam-CcxS-)fTm*^a!vsQE=u zV$V1;q)~!hKhMCS+|d-n=7PXXF(=59X$a)(fi05jViJE_N8Bqp9A^`Yy1oOOFI&Yt zRFrF&XhKt^SYW%JZs zmw|1FgP$uR$V6EZ1Uj-GPXngZC@NAMKSu)pqrDB=finZzrqgU02?*MtunaIkD=BXL zrzj^&<-Ti!kka|jmA(pLUyUv_sXn}`HokuT<514&iv5S6%=zp5=Ue&|rs{rX3Ql^*D%No!WBnIG?%1~;CNqz4~Z#+21k!LKVl zljgeC(*K?hZ=O|}>D`+(xV_dGkI_6mtKbTdR(^^$BvV-P(xa^UIv~GTuNzh~xdP!d z3`b=+?bfqkQ74UdnMFWJCZ%$@0S&DM*(ZZb74Vb@4I4`3(^Dm-Z-$Y!%tO`OYQmn` zGKV+MXmJGcqV=lXB?+u`=AeflWF-N*k;kT;>j`8}X0UQ57wLMw2Dj{@t3v8)s|~N@ zMY&pjDL&EH35;AaxwTA@X)U!1nosp4D{SuH9q#jh*@0K*F?Ch!+m`Rgp+%_bLK~F{$qbPU-&)HiK4_CeM#;?B zkwm8Q@Kc(F)@{%%$hq1k9OjeJ8am{*OIi18!?mVR^%N+MTdRAtanu&$Is;q*n{}g_ za!*zu9iPMLB>FSPXc?95Ic&M!w;$Ym9M)60eE4Zaqv0Xx=4&B2Nf*O~=3?&TQ(b%} z!)Xl$yFw;^4KsXpi*aa;_`w48yrLffQHz;~{M1pH_&R45f8BR7#KW z5_7I|d=~bYRhx7u6;=2L3CGS7oK@i;=>U#Z#MLBh^54keSh;Mg$^4pAMZYSWG|};gV(~r*Mb8!f+9Ep zgM&#dVNRQQfF)e~{4Uf6f}sOYmD_-9vy`Slds@YB#X%BJtc45Univz7VvA4_XwRxH zt)*Y@45}`6tVz*Pwdx{&U_5cJieLIQU;Ct04@aoU4A;PT!fPN53@y;BoP-jo-p;ik{< z5SS4P%)ugLFvDtsnKUBQG4U*`)O;tsi9-bA=y=G~kOAywB7xxlzDfHqb=ERmnUhfL zEm+B%u;KCVkA^9q*OnyI;bn3IqNbL!;Ac4oW!%ULd=<%=^+DcfB3%1wO0=A!erF}~ z+1*dS>Dw507_jvymHce~11M(y<8#6LhlSO}9fM4FU7p2+(iaDJ918gB3Q*hR-~Du@ z)licCEBP@!DmWB2%&3FUTXzdjTJM%iKc@S4Kv+Z1y&u)^#+(D=HNtbV+NcCwK0usb zp^J#|27y9VGMu4WEko-rw^b~M#&A=~tm}6uajx>q%XoOoaV~2#sF7SLU zmCBw$9RD~=S35{da`BU{1c!hqU(lM?AHKDK4 zTBJZNtA{(;N@=fX%G9BdX`?<= z$5t}*ozN9-5d2eKT|ZUhXZj<|rP}P{jG%AV5B0qpiH=C9uEA1Fo{=#u?`Qe*ex=B& zR7v(wsXj>yJgGi0=gChFo|f^nkQ4yvtt^}Ut5S!4xPicD|EQPHq@ zcwS7;rJ0&13aqb3!x<>xg-o!nl1~<%oLN)j{$a!?XfCAiiW)I$F2&*!hr z-0>NCqbqL)K;Hc)o9}^u;egc)C-w6#=e)EX9{~>e_~nM3A3)tsV25y-`WhO~!y%qq zkmNe`0bF9Pla%FCkDRxrZt4>Rn~SRih6`6e+>XzHb_+pO>y675&!DyagO!T&*}e6S zfq6^yKo5ZS$M;tIS>NvK8>D@u;E1&ML!(D5^*#lHZl?3mY)bY^Yi1f@?qDrN`f2%$ zB#@tjHYbAxuN~ebLj?*6=u()SZh_3gTDYO4hqcRKD{GoEeMws>^$O9-rbcO|{_}63 zDL;kmO9w3)5SZC!oy+{=Vfmv`*eoK61)EtYJRg~T^Yg}O`}}pklL9(Se*vWY>bW>O z{fg1w*!Y*`HhwYawV_Znj#$jOD?AB$F_qF`T*i+6!U!&_ZS=`HAY`yYlelEEJyKI( zlDZQ@2a}5%C^tfh4X#2Lq;g6Io)UFK} zFzJU56|v(ov8h?ul0(Mh>0f+CG{YkV%`%Fivrgd4h-y1j+zWLa3Z{bCqbm_|hH2#z zT6JWNH7pe^vs9F`RJ6)c2KQk+1R?i0QieKkWe_<&ej*p7a%{&cv~3n~pT(ZPhLoFd zR?9f69A~wP^HJmM_(iYLKichNaHtyz>DsR5oZE5eGsYuVa2`1l_+q=sP`cN796hy) zxl453G5wGLB;nqQrKi zFyQ{?k8~7}mXSZ|4O-nd=Z!awb_e~scZ2$dpm-ENr^`@Th+>z~AardGM0Q~ZFGJ~i zUkw?zt^=F6Sub<5&be8yax<(BliTyus^)PlqoijGU&c}3`+*nRo}--D3H>mj0&;@2 zEYs@ud;RlfuhZ-APM&cYa_v$T%g_rvC-PC4i6C+{4LmQ__sX*Zv9ot4FM7XYa<5`0 zh08V7RM{}gVP<>E_F!%^?eR!Q;c6_h?IrEy@;G1S<9xX~&d2Rn#~qAhuxp}&XrLgh z1c+Ycx{-=l$R!PhAHxv1akLH5k9)nJ&tJAXt#0FFM-y;uYJzLia=d@ ztX3fvkC__^$M%IA`@qe%f~DAtVkUfld#&RAGC|+x1bx3s(En=p8@pJ9-VY}dxMws( zOOyQTKd^L5hf`tuu(V66HSoXY5tRzGZMIBT10b!xMgK<2{Tt=|8?E+llw4fs2dL?* z{lZv5=jU=PN4KB!B;P=A8b}_vpdNXF5`H8>g%ZrCN&zFW6=lGH$RQw_Rq`MdFhb)h z1`)__${pZb>G^^5V6kz10SxOYkbaI_#sDGw4g|`R#g1&y*p(Z?(q=n8uxS)<8Q35Y zR2=Nvs=p{QK*|pG(q#ffT0)T*VVdy-;YzazsV24oiIlm zHnTk@9SNGSpfEWj*tWQg=^*m`uZM=-plY1Y|(|Eefe$$-& zrmO6C_PU8=-SxaOhMRUIGy^39=t+GY#jxLVT;ZZy&^9E^QQP@&M{caqG06iJK*Soh zBEH9%Kz~3TI`{9BHW7WkO!Rq9^!X~$=aWYsoy8G#DC4l9ifoFXWrA&$0tG-jF%RuH z+@3*hmT|qwalKi^HH&cYID8qfG-ILT%D@3#()TIwgRMbP2m=o~u|2*Ymht_N&I03QK+da zDXeFBLd4?8mh^u4Wr$w7Q7Zz8nREWd`_k>n!hGB~WyDE>Hzs9^X<9?)xT2WxT+Pen z7tVW2S7*2`EnF1kjd@O69xA-OAA@$Mm1zZU;?Nw6h5zJNFXqdxFTdh1_ zy4wE2+$<$hP3fCDv^u=HSgD@gWRzp{m1<-c^2Tu5gwx2Z!YKN}=VoCJtq?i-KlZL| z$!#Oa?z6uF+lr9nm~M34FS^ZW+VUkr_Bw3uI3^s94qRJYvzxtawrtJDe8E2M!@O+7 ze#HLKe#vH50U$uK0Ro^};tZ(}y8sk{LS|)FW>w~?MHPGJkmsTofoB6Q*)16Xf6B#s z(iRGcUoF|;q|-V^T{*| zzQefo>?+9)8D)ozvO`AMA*1Y&QFh2EJ7km{GRh7aWrvKiLq^#lqwJ7TcE~6@WRx8; z$_^Q2hm5knlZ>+Um8C-_*&&mxPbQfk)|O&jO5^S2Wi)?xRC6^SECV5qUQ{q%ZnZsl z_y7#Wr?tA+VNZ%Q$D;4JdxOiIJct!XdjrNn|FX|VHQ*Cp@P8Y5! zMt{SKW$RgXrGeuw_{OGLGWFNy^@c$ofkuG^lg!W?_XeDTIh?fKBK$s)UavN6J>SX=Bu{(H!^C?#ZaW#2dpXk*1alsW8D)aGpn+=Qc^G zVNoI?3>e-MMs>eP8>6!Md^YdNroN;b!=^NetR&~Ef8>?JO9!~6g zR#k`H%<4~ZDW;3RLV^353{;oWFxb#=aZ{JR$pJjjbRdt zsfr>MD-+o)%_5mIn;VhSM8ui4(cUnr`$bxqG|cGhOS>_AqIn+2R%x1o1Hie~gejA; zG*v26I^Q2Yb-zdppN83deQ7s_PYNVANi~=+G>Y>~>693v4dHQu^V0d=@TvPnTKF`? z7b-zg45VeRFx5WtM%g4divelP_qed!l0hr`4 zI10o!vLfdSH(94NmXhodySiUwBfFA$7A-Oqu8TSF=RA%IO}LmXqUmvfNd(Uy{`>80 z@$}nD0R8cCaC@2zO=;%*OTUB_{-CXuq34vIuRH-Hpvvp6-$iFlO)gfXN2p1 zkv9H<3|?&FvO9m%%I0o<_NDQtdEZELK~j<@3i0zuPPL>WRV2=Z%xSte{Oo>_jr_d5 zPAh(T7G480j|0zOeEJsCzddRAkuCbvSBT4;zxtxFTk@%`9Ct7IbYo-==v4RKqlO`U zh85=MHtT`CNi{~+yRpLdfi1%j&%!16niKQq!RNrG@a)eozv*6w>q)m!GcuhJDEq*p zVL&cn16HQarZ2vG^{SgseQ7t!&h13@*atoh!zT$FXeo6*{rT1F*Z=Zkx53(zc%zo# zI`K{Sfl8(wLd%?hAkF0q0X8-``dqR$+Nz695p%J2~oa3JR1hL z9@eqnSETH3TXL)~6-Q~tPSno*;n*+)(r^tEwaK>s`QL4oV^31{o%Z^B#ukKoWz+1A z4v)F)>Lgu`uXSCx#5<(@d%I-V` zg+~4SK*)A;;@<3EO{PTn`6jn_9Gz;kEroJT_Y66-~28d07klpz{27ffiCB)Mj> z;t?S_KTjMQQ+S!m5B;8p&*sm4@V`s`i6BkHQkoClzQgDJe!|oKo8p~E3!fCZnTwl}6Lq6{ddAj((5+ zUkMwHaB7=Sqrd;t7w9iKnCMS7;Y5Fd9b}T+oI=f0tch^Za5qXzfao<48`r1aPX1E1 zH(;UQAqgInPd{0DuRma#{ga?`N5;@&Y@GXzB!h1;@aRcE3ve8Gt-_n($|B%P>CZ61 z;qa3hhFnNU;J!ElYmtBORPLR zJPInXr{_lwK>9Ha=%+!28s)D~@jwKOn@~C+i8=!A)|7fyA=qBertdC*4IWJE*Ef?z zhMi?T`=!KfyN(cF>nQMBJw87=5yv8cuM^h>AegKd-6c^WUw<=8vw|J|)vxfxayns# zJ3W;z;VLhi=6?{K`=6j=?a26~z!D6O)|&qy&hg*!1>$Lx{IYC1Bj)(TVpClSfy=Pf zv{77M$C7&!glGxy>m<5L-puBRyci)GICLFG)lu*c$l@^Qj)Hu4wK&P6%gGc@ewj_* zW{XJ@9p3;YPrlFQlf0;c2%+d^LvOo#>ro&EJauCWE+;9X%eW>OflqdgAaZac?(QqT z4HyFT?DV4iD%s0c*~?nk%Qmx@)!5rH0f^{B<;uN+F)L;m))1#uWSNL%M$?p8qBJ*o z4OkMVC_B5)O7CCmJR$USYIWdC!1w^%-j(9=I+X6{JT=ytqVq7EZW-Nm9BuHci)ZxV z10kP2yjVP4<6xFv)C3fdRs^*9)0!qhtVT~r1V>uZ5nlHS^=>@9g|mnt!=w&5l8B4Y z*fYjus8I-!gxbLkN<7peBs!p)LD^`;6;v#=3Q0@h_ds$OIXE7QP#6c+$OIm$(0a`O zCV!g^+1$K}+tP+gV-w-QEMQ88yige`0IRxaKMM&Bnsq(&YMt7ARYG`+gz(K0!ta)l zMRv1r79JMP&o^y;98+oXJQ7AI8>@s^9qCBQJOSxR7>#x-DaaCm{KA6vjI+&Rbr}nt zI+oHxyQ$&Y%~2_IBx;O{cxF2_Tgob;e-75M4b^&HY($aulUKefuY7BH<-_Ea@=%~e zauQl|hT^AD47mcKaLAu{5z$mp3Ux@0=d2hlg;Z3E0tB8hknnP}<^iIZDr^S=wt`eP zDzA&7SQSIjB8FnK7>aRXsD&~njv|xTSjG`2EMZ3L$ZBI#B6lu^&X(b&dE-TISuC$^ zW#?2fIKs@?p$v|(bDA<(?)>XlcKXPnSd~MuwH%5;a)@}p3fT$rD9@+?xwFNQ0}+;{ zIs!L_mPaFn5T9yL>L`xQW!XKYxna9d(o5|xhisU zYmt+qhCT$yX4S}NNvK#k@PYTGSvBqvE@7 z3C5}VBkr35>cjjEG5fRnF+&oD|h7h1bnXm{&3=SBCD5*OJob7 zGsQ4tJ_4B=F83=UcY8H_tW&Fkr?wV6HPA;?A=9p(b952G#e*Z5$V3ulh$Yn@DY&Zxo2k}%+Y_K=5(Y~PoOBb3Zp@rZYfL$&yIXMgU=>mkG%GKu?7tB9|L;2nrDgqR z8FzibBX?|{#_ z37!WfWPAwL+N)`X#hX9A`yskO;ONJXE^y<4Ngh1*^&dX;KMbeY)y3kC-^Kt#L?7cl zC(p^#$+LQer<33P&Q}V8>MlP`ehw#Tcyk-Wdp#z{;?w8PAK{fpWz`_4D&Ay^my5-G z65lSMId0&5bX?Sa>MH;B6Z~J2qJX6@0neYMS$?xTtWGDBc>=7$4m6)!!ifBv-+APn z`vVr68`nF2#y0$}aLm_!={qZS<8P<8%Z&}zKhJJ&vW8v$z%{T~3KInXwfwxg4G=Df zO3HoX@s8mhV42V0K8E1Gqae;MCRe^)*U+x8!r4bY1ldr{!|B@6(Am zCU4BwV6}_4=4hi`)9?sR%J5aRnVmI}%}*Ta{!Q__O(aK4p@k1$gWmWE*>E|zx`Pk( zD?4Sxhu}aunZKOR-F61;&Ft4Szg^o2j6H94@bwA9B|Gp9Ui)*e%j0cZTQt^z9(;!I zBzHA-V|QV_`%Ay>;+nPARqAJ3yUFHW(jddLQ?EZeH#b4`k8u}2A}?TAF-$$JPJZbE zG~g@@-cO6&gH*6AACoGKK*OA*A_OxaN6u}ma(2L6Js`mNb z7+7%^6yFYFDTJozXE9bUe$=rPO5ICeePi|;+Y zLo@28-f#y<#?L?jgc!piNytPXEe{3r(=~7;RVbwAY%zm9eA-Ckrlz<8OjT%jpqUAA z>IxN-W`U+AwC*a!iS%aW^~pI()^sgtQ?}#|ZA;b!bYr-_gPv>z>*K~kFN@GGoNRlLHbZXe)9hedcPV?%=~TZDq1DaAty0;gn%V##U9;7Cf4!axxo zV#qfxcaL32Qw9cT;RXr~cg96*?v8|jBjS_~ctZqKK)vR@M_3Lpq;rvLZga^*!c8o= z&O`ZjO?BHl}$q@Z)t^~$Ha*LO& zXFBds4+jE+HM#K-EF440Y``^0v+=!PbhM_V)-TgyY>Eve7}!#JR}MyTiOzt)%;M4X2HkC5rLXS};g;VbL zeDEr5g1OxytX4IkOWK-?sW;6v*0PZIU;C<4w_ZhHHlu; zB)UbD=*^l$?_QJSHX)W!PNd8dZqqc)jEaTPQI;pUiQkJRVP>f)*iwBgi?s?+?4?P_ zN1#cV{jiz@q-htL?wR+ukHDOlOglSO| zX0w_wyH^uQ77^SDGRsKLVoOC#Vq?K>Q<=%Zsn~UrBPvEoZ80`pkAz1AloI$ zR{s4?B5H@JiK-ENxbM(kO>Ala8xcl-hn|>SUHPTaz8Z^;$fU`m$@F&KIj`B&F=kag znXT268LXb9TSyY%d4PISXr|zb0|A{usmrNhl3?d{p}g2j$=D$NO8ZESS*?|B!Z=x5 zDInF|f(&3iFnD43*W z5!}kcZmAb*6@=+y!caYQ^xmNfLzViVCJdFkQ%%$9gzvx` zGR&(B!@wJ|ekuhQO))5+g%nko5SSCxtbFfzupbRz0|uZ7P6GEAR4x^^UMR2dyS$uw zDh{t^KlxAE_9)?oRu*b<|gkuo4 zIAr59K=8>p+bNh0m2s2RxUz+*Cf4Qupb!eiaACh$_r9`E$B&+rXIvSk7#AeUt%*6w zQP5bIk}*NE?uH?6c;3F)MczJhd5J=*kb)KkCC0%M5Q^cX1%@Nx(yLG|Y|<~vDIZ4T ze&xzwf*5xTjZ3mHvI{?|g>KcZI0Z-3LvHT%>s(ConwaQNlAOZEB@XQ<_nu^Ifmp_;4r>CRW5rd5kel*AD8n zwgVmGs&W^01Uoh)YHH~-jDX|V#IgBpcgzH7#y!xrpo!Kf$JJjCn^@pQG#vQy>`YMM z;b=fNaa@9>p+yG(Xv3{%we`_*Z1mg$JlKJ4fL69H+)lU$6NJUVi|Bb+?VXoe)eQo> z7K2RNf{^JQQOI;X40)r#UaSUBeX${OipN!0P$RpL2iqeSo`&0@xzQ56u6CuBwCE0_xzcUVOn=_I_qzMN?tbq%mh7D9*26MEWs&5Sr=Mun z?m*8(J9^NRw7H&%hb|o16`lAH6ET#!oJ~6BJT;vxq^FY>iaMFEsju{4BLj4CO%E`3 zIE>(Nk)oo#0PY@;xda!CNy}V9Iuja|`(x4Ygzv1W@b-BDSxeg_TPrRks_?k@~=$2#rBkP~g()t+3Tr*F}= zq@8M$#?ata9t);zwG~#%i!>%J9UB^|nQF#eQ?{hDrcLd_ti8>fNCsQ9P~B5(XrgAi z+MGLd^fTSpw8fpg(5nGg_BFKxU7^YG(ribQPn%~wTK~M2{b)-A<0HUkw~ly8aI(ee zmpJ5h>O69Tyq_`j*0dz5cBGI}erR)QreD3|3A!0bumpM%yN;kBUjRkzg?i@^(>d`= zn-etk<{eMZI09kY^rTh;J()tR*5u3_K|K_|v^hOfZ{AV#tiM51{JGEzilz|s<(&#W zr=5|CJ*O3?L6l3}>1+bU#VhYZtD2$i>Fs>_B9Il7Ng>K<5~SH?3^6r7wt|+`75J+s zdAnPh%W$hT7DnT7fW4Y>x+q9`la90#`2%>;m zLmk2#_y#jebaqH zqq!FUaW$?M@&AG_?~ABmcT7HO*lii(flqA5C$8;TmhJ`?(YWn6!lfke(Q0`u2;`A` ztp@#<7XK0BzY%Jz#eZ9si|Zb5Tum3Z;*8f-I+6V-a>R8Kt z;`-g&u`zT-J2uv>6y$2eQj39#!6U(y(ga5rf2gx|r~T2@cKYI&@!g6ShLMl<;VN}h z;^?XspMU5Fz}FO&6<=+}f8~|(L^=R0*Bz62oLGkA8Z)EH|&{;Oty zD%=?V)zsNq|6h&k-QoYcc1l?CaqX_er^J{S311Y-Ii4>q5ChiK(=lL8t7QmS3@fN9 zriDB1M{ERGQ(r9n>%xfYh}%+AS9CO{NPdrKhoz0NVbJ-(TxwNg!?YwY=hu z_`qqx7)O%R(%6A(eDcUKJw3qa_BPXe#;Ksb#)wY?mobg&owgrB6B8{Cb5=cXWSHqx z?PXghk2JHRj1waUq^}ALq*J0j)}a@ z&lq7^hRl;Ddh*6*@#$T2>0#g?ua($N$aS?K{TU9+=P8h>OB zDr+Vr0TAv;Y;~rgce=Wq?~+hJiT*#&6s-{C#+#X<;q#j5)4oz$Z7d@H>!1Lnd=5~C)_qEDA%05fmgQjnthtoH@?ts%)pn~&3ya6L*essEh0rb6 zu?(Hsl=v`nnzqMuYWjv}8Lk&VBZW#nuk2OlK_o576M!a*<(ZDa9;oR|j zLQLvut|L5Q`nu=02~Xz`oeSSGP2swZVJ`rb42e1xL}8Vf z9RY}W8r3XUm`wL{UziSOKA_FAY|SKqs`da9g{cmq$20>AxJlaia0^5-L$@t203w=H zr;9>U2vPE^6#ULGx2AdA^qs)-Jz_c*F@)_0rr}U60KixaaHQIl9w$o`58VuR1g60D z8HI_|=hV0GJQ1-hEwBTP1c9kr=0Y%~27<&rPe(wqbWWM!2QDRoz}&72%`sie37Ft6 z<*j(A5u{FH$@76wFq1fjL155!Yzuxgoim#NQGKTd(z?BahkKHK8?S7CtcHa!qGgMP zCea&Lek~&Z5kec}KX{<8?fv7>H|0b<-v;{ zzpP97@CA=Qa_ZC%{`fmjJblksj=T5ztDZXlJ6*Gvoqnf#;@)4q=OpW;zwOfcp7n43 z`?vl(^WuZEJA>!%_~(lb7&krf-E(JOd*PLr>A$@3)QzXS{Mt`;Tt9NvqmO^q`{|<( zo^i)rd#<~8hE{NjIH);01+ zztt5!bn351FZsM${>HwO>9MDsziImS-#e8#X4`EaEdJ>F(~9dx4~_J%yX4MN@PU^e z9z1^Eg}KqszWCbL!cTj}e|Y1e*Vn)PcRzIZe(Aec-2SzVCtc0o{HH(r)(y`+dGwcO zZn)#buRC8Dxc=v_o^|jG_nm&l%m1csIqufrKK8R6UDtf>(3U$swrBQVKm9v{>mPW! zaPjSx=iYz!p54ZcCp>Z2f4VQ-y5oWDvzPwG)B8pb{qKWkoPPf|{{4No`0u^CzU$k4ufBD`(O2B`%lAI`(PPgY{qyNBAv29^*|GVa^FDLc;biEwYe`pg z{eQo3Ytv~miGD)3!?pP}pC21rAmDGqwYdJ@aQ=rHx@E16|EqER=I;Ncd<7vp$K0H) zW98QSeWZTB4_LF+h98MH{7AgOeZ=ng5sjs`{Mx`xN4EH&)!1QLHSrGF zOD=tz&t87$w$>zSGZZ1M?ei^v%P7qaahr%yK(lDNA21)ERtoNP%Z5i8nJjwW6*I)Lx1&GrEH4fYK@|f}e7w*xR?1R#&hMS^vdy z5oC#6E)Bkl{Z#@5{(Y5p6t8z6x|CtINke#D^78g-#ZWjyKb>g+%T&YwM zrDi8WmsimW&WKuQ%;%_t#(uC{S3^O#lV?XZERp|{|LH{Ml$aLN8TBaxIE7~~0HtB+s%5Lp zuvC&9G-wT{u|hbR88C+$HgPl?FzVR=q3xKATee|q244u96adsM)u1Mj-d;N!ytHe9 z^S@|fJZA(TDYd*d79RhJ#Z0SV|6enhzBc}^#x;^T@n{`|vX<%3Q&`8F5)9H#O8f zjME25d80E$fn$Qa1FaOMl(_JqH^Czi_lDx7jQ(bod@{3VQ)W1vEb?;B&8O=b*)rtJ zm5JxK@pwf7-8R+oZ4Rer;5i`4$r_CXaM7R`q6k~dAFnd_Vk+k)w(_ci1`;`*&q!5% zh}3lC^R`?tvO~fB87WpNShLTecBwYYc8a)t6QNOlI3DZ2O<>!!UzEa0c+=msSZVhgWf(eXIH?Tp-mR1;#3X2QVWjxUcOjKCe&|&u zA+L;>s$lp4B_EbcN*E}fES$SMepTcV5Tz`lQnnQgl_=i?5BoxB8uBHdpUs8+2?QA) zV>aWJO8s%ANVhFJHn*hO99_!*D?rnXsxkK@8Djbjlp^nN(5N1i_BpJ+-0BmzN{8lH zP9J~IfOJxCGa#qG>g=cNsLqngE)j@G6g)Av6ou?CQJVs}_;(dII z$4|Qz;FY27eV0{4G?U#2QZ;C_@=bdM{h2~3jtNv+PU(iO;q&OyNe~n><#2pFFFH_T z5b<$jii{T)XEL$NlMYmiEF^nu25HlQ3Ney%!~v00`0-u`YLqOt^lDPN`S$UYWbxbOQt?HK7`*N|8(?| z>uO#m{Poba{)(huvYg zcxEE!`=WsRUzMsKuGmf@_Ijo%+Xz9wR3;>JElC(ug+FB*z^EduGNCCKBZp(*v*)Tn z7yr6SGzZkKVM6q*tvXKDQV4-3s_kT1Iyp?x7nW*M%t6uJxMgFGx#TeBrm6+m6pScg zs20oW=_J%)L6aDTQ^6<`rfORdAkUCF@TqCb zRxt>riV-Xnf*}D_lVEiw#z{Ac%)u~{vEg721~^fnH2M$3n0<(osj} z%J>4<&5-N{|JyQcL)U4_aA{7$VQ-F=`9t_donLe!i&#QY%+F zp_x6Hw^?k2LEE$-^GBcSP81<|hmyCXd9i6o;L>oO%DVwAd@ydpW|vM3r;ld9^~iab z>>uq^?ex*2$!3%5BM1g}^n>=iQ2PFfX*5*v5-N@+V2QfCw8Nu3i4jMG_e)Au5T~%( zo~abTZCMzR6b~NCBS%;{uW2Or~5&c+SX8UwKe=3+wm)PwBV(cWyRl0Bv}?&Q*UMLh+l$YH44e;7a$W2&wZ= zN+e?QL;j0DbT*tPvlO)B(d2jnPYG1+_xel*>60q&w}#;N^72$h1uXfWN(o*|2p=B^ z*O!H=^_3M`pVidnJed?gytBBlO?)6nZSC|3n4nKg(MyI=KN^7!z@A};H>8Ig#~G`i z{gyS(rQt&&-pzx)PBq9sqU#8HWiGx%}OqY9Dsij7)+*-yr16EdvRE-0^fdB@8<`@tMFLBbN z9(2V?c@}8P(JnV`zO$pAPHy~CkBvHo#!IGgb4ieqfS)jYqjp;jkj z(6yqiajC$Q2CW%95fAf{n|cnTDi(E)kle4H78@(PK0A;xmZeg^J4&3(OcxUG-Bs67 ziMkHIqa^ozS}r@*{2TEBQ8JjhP1&cobE!rhuV^`8WY^uOscY$!P$bYJIc$6R{Zv9kMQrjHp8nhyrbphC0cmO%ICwfaC`3G=LMaf| ziEzEred>IjnsRKHQj}WIwnge=C3H$_JmqlOG2_f;LLeB8A%41|2M8i|jnOS|2c#X# zNS>}tw~BO0tM{7w%5QVq4{-3bx!9>OTH2}s!KF1#X-+`2?yrFFm1U*O;%EAR-3#&& z(K$RO@B1$lZ`1E2E>Fz9cYczM`ZKK$H@7QFnC7T?#3)VwYdsQ?m6p_8I0JpM?SO2Z ztJ>N~eKB(FQJ=DVlu!LcUSiqN zN<(hKlkIqf+j{Rf_a9-%Y;~;dbt#V{l6j#&LBI+6ws;?JBMUp}gRXZ)PP1{LdNuT| z`h+WM`GBYNYs5Z%JQ~Z?^V*Zp{HMw>Nwb%Fotm-Vs2VM`JZ-sM?U7dp^RQIL`biIp z08d;{9G`I_BP!*l$9&VI^<5nq(P$Bb?p{VA+{8w&ENGstn$U0kaX{H2H6DRK}%gI}oP0-qBm&dtKes${UO3KIYyB?E3o2^f{VfIS%e(dqSIg{p|GDh#eZPOcyzTLO{=fiq zc)tA3j?|!KUHlj|%O*L=1Qoy*m)P5bhv~CIO&J{4GZ}w<`7Lt=`dQ4p;r4rV2s&JEHpv&JoCvnOWZHUrn*Nhl)(G@AUNJ%kii5cNJ1;I?X?Xb_ z+0)yjyS1a2=CN_vwR0-=_QMM@|k+8EU_kvX_QS+G9X zLDSR$+L%NJ8FhS8rCt4_QU|iam3B6A;aWR@D45o@Ru<~NK1bQbq~6I#GTiX^t$2{q zG*-^Szd@agx8!@=@Te{AZU6Mf;W?;!gk8daK8i6H)Eu5F;JIkPtG^&x>?5MjizpQd zK1>XH#~)CFX2`J8j6pmZ-c1VbwSOPIDz&x=BZt}rY(hyhv~T<$(VoG~xp`5z>($D6+nw|fj)OPzUY6z`IX;a$h-0!^_~5-VEfNH7Ni|a#PFW>W*dl?B(MyJ- zo1vnz0X(~;X4i~839W9~Zebx#f@*k>1&s;XfxRMaZrLnzDNfy64)0{TZP$U*hxC2t zePr*siLM<(*MXI1#?dB392(!^Vzi#;1<-(X#M_QSnT7`Lu{Xuk`m(JS!$y1?+{y$5<9FlRh_k!}ftOv)<$K}=2V=|9Y= zwwwxpsR)!*a>81mFvD^}H2pXtD9AcFvuDhJm5SCLT&ah`Z_i{|fcE|~WvwhgaX&|1 zQ|4G7%NEo0M1;c(EH>As+v zoQ9 zpjU~?o4)y}(e`8Wb7z%3?N?Q%`T@hcNu>FRAo2Yvo%rH^1m>tNuMqHJ2JPiP0o}wG zv<9MVGAA%v0dtg(JbiicDMR-HG>mo@|6g;eQ8yX(0#t(KJm-L}w`9iL3_)4P51~S$ z5CA{1a}WcrQg{&ck^Qj&qO6uLB$=EK?JORVcn}jhg&}?~qB0_H7pL@+SjmD}9}RX1 zSGy?7H?8V!RrOjb6V;@t(rtTnpQKs9He_1WR1?~sNALH$>uEk}w8{RV!5hJor~Nxp z4S0N#&zwDi@73z+?(q$rh}FH#cQP%GRCXLqX(oooYer6lFlcg!jQDEyjB%z-Ey#p1 z`)9nt5~#ws#)H&`W^eHLaDles3()D2+x!L$7m!fpUnH9yfsO{4|?L>-Zgbfo2 zca$t0hIBn|Nr`9+F;%is#9(5fXloAlp#F$~jtsZEjd=x?qw+SOXYyiCBMZlqhGJWy zK|IdK+LJ>4X`M>H=2)z0}7;a0M-bDm5;#Y zgxSFQ!&DGL9w!pCR}}0pBuY!0o--6+VgJdFjoxfSQ^Ji-Cs-fA7R(1Pi%xY~t(quk zpPWFFWk#uL{@Gc}YVlk=xV=kZlgPya8epj*Z4-@r;F=ssT@XDoMnt2K#PVg~`2)9pHZggaC znw^vYc32~ibQRtR+?@aNTK~S2#JszE)H=r{1sscWNai|0!85ex9~3(g zl5Y(;-PQ*mKcq?gpZGTqvzbF3Qp6szd&;~LCje@=zUXz%{JAvGn!!8Kl zlfUas*uSVuA${-A_Pbc3^93OL8p!ORevgbp#*MyC-hWuZbgHEbQ8 zi3bxoLdB};mnT88^aYUb+tQDmUyUC$@l3Bh7*j+4V@CusuvYY{%?`MCD*X3~PSfzv zZ#e3|>Skl}TFqm<3#hr;Msj}?xa)=e!YG>ODR*y9*nk>4fm-WLQ=U_SDszo4Z$~ib zRN8L87;*Bt)=^j3nJ*iO4Yhhi-qu{)vA4gT$BWO3yJS& zMpzBqy!N_;c-f$JkZ=@Z*paEL+odaQWZMny)baSNU7aujR2?gB|0v4cJq7p6#Dycz?UlCg*^&u>KBx=gH4^Wq7TdJq# zq=W}W)6O?N&h*@_k;5sbLmz?6a=h3pUD!Mc{V7fI-_RfcQh`4z!w-L zOD+N?j$TcSQmyN(aSU=+Y&Ql&)<%yLfQI}HzB8`qUzj8I!K|y`2yc5*K^$Q8g|i@x z{LjIRp9At}$8ued~IubdzRfK->l(#jdxu6GJ*dd*~}PYz5@T!6HW z-QWsONA#P*=7TSURXyu#{29(!`vrz5$IeY;F%GsX#k+OHo0 zb=U(l$A=mb8Lo+?bHyEjgR_7;G7&eTZ}MLV)sLWL(q~Y1Sa)1{`zMP-uil5ai)fC0 z)ZJ(P&r$S`@YWu!Wdbj4m%lIMFs>kQVcJT(h7om4V!ss(n`7r{*m@gS*j3?ufTam8 z{FrCz)RyCcOLCjY2cxc55F;v(wiqbUu!k5e3nHQls2Q>0e{WRevgn7%YZ;ZZ@>|1p zu?Xx*5jFaoV|h&K!o#%X6KD#i5YYG%cJ>@*CA>C&rd7anz$6tvwKN9Fz zCUHdA?@9=p%&@HX#aX?WAQ*^9=b{mlpn`6l<&gV?cQnU5j5lv0mD+5SJ`Fo5V2j)Z zR0GFM9Ghvn2xfdWMcut-hxyN6#c3pio2}~#v zMt4+w{}6Ftc#0u?Bs57cux_mccTdt(Y$$+#G;<8F5)oe5+9hECgdDvZ>(U}=Ab3Qe zh0px0iQ6W#)Gcjj-0O)M8ahE$8R(oqVMB z(GO9`>h#y1eEsy1FVvl>pyGK(0;(V1J32Pr*${$PuT4DVUGDYv@v^B7{?qS4s^v0A zPhPimtH1w64vGAs@f+d(ftkNQf|PL!ygVvH(gL6556jOdwl*J@tlbhPlhZ@K5+ez{@6}0;-^amABysPj!T;pK=gzdE`{Cnbzs0n)w7Q)x z?C+;nyG5qb|C(L`KAd9|mMRbyzoMk~!Rg~x34_v`dt^=B($u>pGWkLG0}Nk}yT{h) zMefGf?z|tT^k37#TeKcmIO2~iT5ugc3?;PdyYwO15 z<7R>J>m&IZogefDzWNiJJZp9yDDZ2}tHPaU{$|Kw)zd*sm*?Zcm*>+3tU7vb?aKCZ zeeH~tCo(%wUz75Q2MEYt6nnOx%ui|)TpM)SM7x2l8^`hy(f%@NNCsJ`TF6}SHlS;RBGo}hYMUev z=WT9_Fqehv6^YlznU%zR=flnO!Y|B9gH+TDxFC(WAt~C55m9EC;iBPrbz{LF_?)4EtNEx%p!hP0$IcZ=k|9`8e4a;)Pd-rib*5Szq0ts)JrbPIBgBGMFzxq74p z-9wtP>692G)pNo1$08q-lf(6{>4+#)DReTb%3{wxU7l6!({VLf1ec6_E!+R)Yo4_B zIJ0egW!&0e7UUyi2^)Q2V@lx{hC@Th)C0fbN8hYM&cB1bO(A`y31W#$vhAu66#R{r zRUs08HgpKl3(MFj+x(bl<1lvow_fkkSmc$3$3qRuOz9?$_XjH%QZbBwV!xLgl>Ggm zNJt;v2^Ust2??=_CCOzjh+BS4p>cl#bdrFw$2X0lDetBE^y@Zt`Q_8ddG>d%>BQRR zCk%3eZ}u1VUQ_0XG{ZJ${Qa20?&oC{DK~#UOZi3)W0A}KAE3U`M)!0&E{y=WhPgm# zN0$~`j=s!|c`pft+ytMrPF>t4=>BfkMm=4@(hKS5cKhjjne(>|A8?fw_qxZR-QIys zL7<8Mv(U|k5Qo?|p}ca;PTc!n3fMCkr_o)I5|7ow`^|HT?%yQZV@q!()8Z3^7}vTJ z0^R{1ePqs(XNZOB`EP(oZHG^W>BIi_Qb?4y18?RIu;0`b@$9kozGv!D*6ObB>$f@l zO2(;=Xhg#=hnL(ViI^+KI8}X9APO>MLfT91-y~eOXc$Xf zmF`?BI~TRGO3y0|D(5=BpAd)z{hssdx%sJh{zPepk;TT-D-Ns zc-z8*AE?*0lw$zPeUsvn6fAu-AV^~)jQ=E2kn$V}!E3S+3GmVnIZ}jwk0U-X(@NwD zAxNP9=OTa@!U!2;II3cj0;0kKmr-8|lR%yh7;MDM4E27$OJTe@`Fq9)wH}*Ss-r=5 zaD7w615>ZM&lc1pXm?_uq9~Uua9~Cu^R*gKbY5F6Yp{4sPtXpAeBa_KO%C^RDgYfM<}h!uj> zAtI2#^n}FC9K}zLO}`7yv_3%-dk~}!h5Q1DcIXsAO|!32`-;Y6dPj|}8tPs4d2%~**;J> z@~+qXm2k7&53HD>YB*g1e*E_T&!9Y1bmo4DmWy0K!!b8qW6l5{>vXKHj<{}s8{mtg z8rX!#pG~fRR;p7$qp{Oi$Zrc~@H4=iX@;QUmHI4M;N}Q+?xl~N#F|T*FDu~ZhiUps zu4^+r9<_G%=xtwwSwkg%P{b)PoyGrG5jrAg)6y=rT$p9}SG7LRs(jg$z7#CqwmEni zG}0!_Up>4?V#G}XJL#m4ts?W6FI1o(a0w(?d*soql+pSeZ9l2q~029`sEV%XrO2}%^?*ZszZKNkMSkf1R3K!*t^Q)%r_v&Qg)yv@+H}*EQ7mO^bW0PbwPwG*7Sm=^@yQeU;$MM; zn2NT0G>=N#u!3Bq>Q;-D(Q-$n`W#C1p@XGG*8^xE*=_kfJr4dOq^KgYZ-EKYF7W zb8^7}wg$hzh;t255)cnSl0eM0!HKc)uDHNtI00tixNl3&!d0OlaWZ%WS>R72#p*dw zWBsHj|CIenYL$>Ifu%Rv#6`+wfWsUk!lGg@**>+n`XT1%#RNky&1)i_gPv zEGRyqhRBO(6~$E=jnne;cw%rMWjE=3>k{@C6o_We!-fGeZm5IR7WXN*1|3y){wX6dntvv^)=H*Wo)r| z@6Im+74>?gTD0H5vE$x?7ioQg-6bY=kBtp}%8j>ntj1yjX{1}_M~>4m|9So?Zrim? zsnfJc+-=(6FbU1N&N9?^KY6k3&cg!*Tk__eL^35xVvCWb^_H^gqz?u>|J6oB~vS9^mfS{Lj`LJ-LjD{U%k!b_x26uI;&=y+L^a=FeE5{V}^w4%S zcT36UPmL=AP>16F%erM;<&T#@M&}FE4|pxhz@*biXh)n*`bSbK7MK^+x=b>jD`Mdt zqLeu>m+7-Ju9mU@7?e(Zaz9Fgi^|d+&sECSB%RQWD`Erz=}LymG58XJNL%Hmit~RA zc>|p!vvb+m;|{Y%MFpt@xuBj~HN0?-Xu1!_`wMnwyRGfk2swrXsW7*G_=gazq(;VX4YO6s`|tb#%r2 zq$GcDX%eN>xT;Li18|VprW4VF`pK-opWCR);SK|d2p%y9O#k*jspvhaD5M3hFqN~b zUS(A_(-xA^A}xwIXs$G7xD{X2Ck*bce^^s+TP;x*F2yTz0D%rwuL81dRGF?vBQF0a z+^jML1XMhF!%#R0g)`hjugkcJ)w;Z%G2V+@)S^Rzv(eHT>XAh}q}Vc4)Biq%;EMNs zi}y%f4C8;peUOb+&r%chpx2vtDnTl7C+*D&fMvaV#*Hy?eaP@CN@GciiM} z-sb#uNH?EO;ZEPw!WOJbf3R}4pRA-NwJdRy=PTI>6bTzw+@_ZBoPg^Xb7CIJAyo$N zZs4fimk>L*e+JISY4L<`A(JQ`Rn( zDefZMa_RE31;psz=W~f!jC#b;;jcNl14?A8nxeO-YR26l-q!RR1~gO`w?oG`g#Sio z9o~O~`9+62xvO50gm;N=9?w;}AsRm2V_Ap!GC=VJLDC=|(BWWhAd-MBiL;c(wG6ZzLrI=**0fQnnjt~_I(=DPVSI)<-vj`! z4OK4|^1E}dUY0cd@vPx_lR?4Lw&9(k@)B8+{}7P5EjJ z8uN637fhV)^1~RBC=vc}G!R7~-v8 zF#Uc^@Km2)w-74Tul`TmQFgqnsBYx>?)U~sv+CJ|MMt(p?M4s%nviYQ^n4w$TD^eM zWD0>BRVyt`E5g1sTe#7X&Gupd^%;StDN0YRNY4SRc(YSj=Q?E5L|8grgx9(wCL~SJ zBTxmD&A(tL0FlOq!Gkp%;~nXQTW`@nRgAbdkCkm>u@q&Cav(wVbtZjP*|Y<~im`A9tcDbzG_s|1|yeM_>3B#{9SPDrqHt4LBuy8G%0&j`=^KSaWuHu6ORAl((`#7IV`jRT=T|dM)__^K#wB~x+9}>1^ zYIIWGGRC^nUP1h>!XIfJyY}DP$e-QDJk=|PZ*xl~ft%6s{;z-j(=K4OlYPJIUvYV? z%Vr0?iZSf>1PsTXJO_NK;5xFSjjwMKt*2XBxQGi&r67WeHVXXWN=d*(6|T)7f|WCY z{_!*emMlobDq-nM707Dbg2lFN*YKeYLwZtS@HoqM_W*=$SJN@Z#hF8wc{mY<%6+qD zMp03;7TE9o6&T~DbY@+l^f4Jf1(%|Ly7FUcW?}VQM=D?yj-1LJO=l`Ng-v=y^G=+C z!sQ4tp+qF4+iaM`SmN2CS2NAt%zXlvZ3StZ`l9rip4xV35p9b|D-h`UYXp#i^OhkB zNH!P{10BYvl-f?>o)nWncL!9QqAg%pyuj}HefS)t``R(riiA_I( z0^X3YJV!e{0A&yJaS&PgMLwAdwt3}r#vxXKDcqfwv@{3Dv|CFw4FxjzFn^D7UD-rh zRd7y`>x^S&r|TOBFtbP>Og~vc31Rt+eh-&U8~;@&G({m!$`dcerye0VKK$Qfs5J+l z`-DQ6&~6r8hczB!cAS*1g0_#I+A8Q~g=HFcal063+tq$dm-up2xHIUdD%bh3y1?Oj zJTWHo@t=;8vr=Psr6!}Jf&4KKjRHN6hxZ+s(X=L7ERhAKgnAcEIkek5H{iO}u`OmP zuqr#!sbV0Q9}P>w8Ujs~O@4C~XM-~R@r@N;HvXCj(t^-R^H}LW^9pcD7^L>r604JM zo$oOs6Q>IvT@$QfO|zlP8uyIPaD5YC*D!!{>`2qw&Xz!Gut65gp?c7^a?5zY6Gt(> zZ$4On#I!Q4PBLr1p*^aUsBI6Yw2F#@|C&y^UkB*Vg{Cf(gN(>92l`ihg||%gRO_?i z9jZVc)!}@VR)J2-Pn|+l%a54D_b%g;>Gv&jE#K$SeAun_r;PE7+s$t0Bc^ZfpWof@ z4YmDSIp1%Jy#86Y+uio>r(w09%P<0+PowA67rPO^?&nj#kM-WKH?!OC%_u$H-}BwC z>t4U>%iq^Qzn@{h-!q)NpKv`tvDu#g{*4&3JKz0@^84EDUUGJorX)WOdEguQhF`j=D|}JRWxVRlyaqEE19mG z`vCLzqsC!IE6@+>!Nq^b8{z|W%Knr+dKP%3I~N%6QXmI2W)FvtIi;=?swN9$f-?fB zco;Q@V($)jqXu+2aAF@zvU=7qJYoH8K^`Y=rK8}K=6LhOVOma9;76=mUA60ZX2X0F zLlidLMn>Dsy4uu6MpKl$w>!VCVPYA@+*XD(QMmKlYd2g%e{V^zUdaX<18gy!_s)Ax zE@LY^VPjT-bidGc zx|??o-l=ta&hXlq79on}b`-f%2oCT5+V#1pEo+}>0K@&!Ic?$i zCo@8|-K1BbFnwRJl`oFnh^~^L$EoZj#NPrsjObvRsI8>Gcwuw03F%eQ{XX z`G~z>qLxDMQ+u#6khKbgE(XCjlm&ka%1tNL_IQEedJck!lj)4w5+2JFF-Psm*^bG} z@Acvop!OrGifOZ`m`P{GOBk6n&%B9XM6gZpMQ&nw8yAeR@T`e6%=5m70Wi4 zj&7d3UJ3qHzVQ*dK1aXhb-mE7#&S{da4dP#Ju|%RbqSyZQtOk^nC@O}Z}YkZTvbzm z(eLeb)?#uVZ+N9b?22l8Ibn$5MWg(OidmR1E~*Q)ZO$~5D5=95pinG}w9!=tC(J8q ztgR~7qyll)+NmIf4rZy(lnN$3HEDmINdd;Ja*_n~#x!*ls2KU`82u{>cVihKV-x>p ziXAYk`j=ZjcY+;PNeB&F6%9KLyXhlEPHnDz2K<@sk2#uZ9aE-{gAGqih_U0bPL#pa zS#xadaK1ZTX6I*RWDZ4)Ogp-el<2wU)e(m~D}~&I5~oUO>k^pj^_v|CV`asqy(xHV z5qHmRdn}x3vIT>V|ixW5d|0};1+`VfXL6$hf*k=mT zj&Zp^$BRBZvNSrfbw_n(-JUjf+SI(ou#tdlVo7oxkOfNGp0aO!Babgadi1TFmfyjn z$r)}4-{(PVum=jmkLXMINr!pqK8SU*ev&;9$@wE39J95gCAi=TrTc`QiJX97PBy;8 z>l%TjNB)d9u%%gLqOFPUImo%l$f@M?Edsxv5k{r#bGGtxB5b&Sh3)l(ac1w3xAL|3 z5`>&dkBu1YVvMu*GboNf)rb*JZXRi*|NBU?G3e77VVsSd6VXA5dqn78WkiSQHzAsG z(^=*4nRSznS>Iay8)VsYi`7xL9*WT7O|a&N`ec$rwz4B^zRE|+8=XE{e?toR6V&}> z{pKC4O%B5qYNfC`XAOh*oIdi`rcc?@egu$q?po#6*N>SE8%E2OyHD(_CQClRY>vVZ zTePs zd#&DC%cPR`pU0l!<`Ib1p8U;4vcmGwl+E){|1mNWLEJG{!7R{4Z=C*Y2{OU}?JDIr z5n&SE9YakQHF|u{PylLXK7`u7ru~msQ64bY=T}*+W?9d#(E)`(=3`!(J=-Z?)??oE z`|Qb=nbQx-tltVO*F*VS)U+CZCQHF|#@vatxf6L47s^I9l+8@=51*GB2$_gOjao!L z;YOQ{z9cE^xW@e!#s-;|$%4)05%Ud0- z7plu{w>1WWR_Sxt>!fFoNd-h=Cz*)(4OqHIw+=t0e1b(9g2T#z;ChO(Yx)88ur*|P8 z-^!O{WzK|~Aegu`LEUf@OBMy3;;-_w)n!E11 zv8`m`;`)5`;qX=@xXd`aJ>%e_tH3wABVLxBcees5^vp2OZJuLu=2p8#h1<@)}#EHK_m zacfRu+1c8X(dkL9ihDx{H%K-44XP)%eBlFe(DD7Kpt$DylHcq4Hp>Ax)qdfE_3o_E{5 zjxJm%x;%!TVqRmgxIWIwTu|t%dG^+07Js@-@8gAL+FtM3^t?UZd5W}ZvwJQmZezM! z_V|0e`oD_7?pXfOI#Ms z#BACw`|0@F%`P?!HvU2Q@_a)teaAGbSyruVRT11DvB}WwV%KVO`3)$)w| zEy{Y`1gv_txY523cT5YR+q_Tfn(hAm?K+7n({WlWPxIwa=DD#Oj8pIVn(M4}ZS}E| z+Rkoe?`pp9K+yHLGK)&K;lNvF3F5nZ8!>Cyeg6y%Ij!^Z{4wH)zSi(t%nVV}CBJEF z{XT3_Y2|&I+qU|7QbfS+c}o&{>HT>RE1mM~wb=3)&1H6*{E{H~0fahFwcB3q7p;DM zbgAKM|1Kl&b>`K0UM=~!MXycz+!JihxF3d$L#(pZY_m4|Y}V`j_1oM}Dzou@DhreS znIxF?;JzQpOT9MF^7?JO)&8)nAjx~XL~`4z(EhH{()pZcD4j!b?P=KKcDovENw2KU zeXM0V|8VnrUi!?F+3?ulXw9ti>2g#VWIL77`>dGI?RFS{%5tmK^_o>NyBTte^IO~L zy&P;M|M`MgMEQMu=Z%Z;`XWc!{z<#6`*=Iph{wRzj|kaAaHz#7zIet zuYX+Q=x%;(45+|e%IQAuIh@|E{g}?KQPIGwHyOOdx0v3KMG58b!RvLJOs6;VN!iqN zI=)d*5O~n@R@&Bojk)zdS`ibiBiX-Sg{z#+OvESQ2<$GA9qIv0YH~`Ly)oH#) z@=~&#(Y=-3d6|#Z>)pEB8S$&ta=#7+LD=yd&0uJXzIl6VF;j*0c%MW{LUwCwjrROz zMJ&~z$mM>_MM2kT-~sE%OM~_lliIAs`MUhT{bid{Sb2-1tXlVjA4@U%+LijjYroxj z_?0PQr;8_;9Ju$J>F?$H(ewRk)uQJ;d#U*kuIQKD_S8TDUqj%w{k^(2YAfM;SbR&s z{v3H6_x;?tdGq$#y8Al~Je^zhkI*JHRVhoAoWGA-8Z{qZtWwPLetzk2}^iq}N7zW6aWbY5dqG-Hw1Qiy}i z4QXP!JwdT@Bx@;wR8m96`gh49jA)-zf0s% zDy~l>yh7P3aYb47j7bBXQEFf*-SH>IKhEP)k+OlHCe&yGneuj5iA7ocXr&b$z>UF? z^6f(@c%Zk>w95U7=wP?cHReRHt#;zs^ethcBReegE{WXdZ|gaDHG8f`7|ZjkKLmvU z6d2qGqyy|4CDYr&m!aCf-rstTUv4w$1{dlVNVW0UA)?kJtT-0T0=PJ4E&i!%)^5LJ z8!4~Y;Xk)hKWrOTzj22fKfnIkOUpXh`YrU%)M=e9@H2x6Rbrmj$_5AZ(ZX1bl73re^bbctL5)vn7ZQ_0g|#H15@ zw6)M4pjkM|-&_S<7jX7F@F2%XQtkTFnpInO`>to)%be2tV1YF&AM%}JoC$mroS$oJQi<$Isi2j!6cL3d?wV)64`@X5#+S~XgZ8!E z&@n00`#CH6W~hwHiCt07x@CiiA4l2GxmIc}eW9BFBXd29cZ#8y{G^56#Gt%s)7&|l z*lSg|!XKBx?eYhZfrze>?A&il!A6oI*`oEgg3)y+I5gimNzMJ({tZR~$(;}C+fuq7 zua(CsYeu$-0;QqKKOpg1>LO)``9H-lWJk==vfJOMjkhP%$vf_?^Rm0=oQ3A!{dtrZ zv#+zKo|0!r&YHuZdtE@k1J&}LUO-)$9tl)gI?=K0^Ot5H&qa!InRi@mf3N4Tqvj^h zm#fRTYlVdyJtO^kH~v$x<9C~LPLgrPpSVR^a2$)EmD1UHZ0vKzZr)RHyQ};nreNPe z1^?FO3sRiFr}W$XuZ{`0FLE$XgSd=S6+O1<3p)vA1ch?c8%Ui+5LYipuv{m4^5rlO zH$SI#nYVaN3bIO4AJ|&*(vhfsgSk5YJ64RZw*H|~*8KRYR4>jrp)}_H0TcZ|$H(KA zfLEoXyE7OIkP#_qfk=g&Yl+*)6tPV>h-nv>E)|Ns z=E#LZsLQYPYYh=$$o)FKCBqrgV5^F?mtu|}(GczW_yQ@Dk=cwXh>ca0*@3VP-`K=p zUeOg&=?bg;!yC4UCnPZx@QA32TPE=a9l;F6r4S9&x7bXA@FZzy3w8a7keqS%p&w0$ zor%98BYJ=vu?qT{4jk7PcJ^Igxu{-Kd8#8w(J zY~AE$fztU{cJxWRqBb^!OT>(!bLuwrMKplU=u@XYlvYX4C@ao5pWJf=@W=y|NFyRh zTjf6pwUz zwPk*ugq;FIFG$vU85$p1X9XSK2f9$7kx%YGP2&h?ygJA*Nkh~a7Y`^*)$vZF>+CCE zpmnr83}uqPq(?@<*&tYqude$qJzeoro^9?R_~_NN)Jj0n037rmv@Pe96`+kqX=_i1 zF@>mI`;b#Qtl8a7(Jm(Wg3cVEHRld2aM%tOlSXe2E{hoEXiFk=(JGyGonl#RM6R8q z5jsgjYrcOF5f(*J@Muo_U7kLy6xvAB>HbhsRlbZ8RZlm2;;!m{*w~|qJsL!ZU=KLK zAC+2$f^bVbH~1gMuBo{aU=7B$jg4(P*(4imY}>YTqK$3a&c?QF+qRQ)_x^xebzf$t z=5cE9b@g=j9on{|#sE&AZkrC%4&fSdwh~HbJeqbEh8Q;AxYfHg)Z&;!5^hGh#gmNAAG#^m2 zZLVl1cQ2f~mHK;K6*c2BdYin?1HVLeRcz@-13CNw`bn|Sw#Kd{_hQ^Tmv~33d>TFB zLiTP@whZtcW^u-1B|{qQ4g_9UJA6LUZUZ<6WfG&kSb`aj*VO1Mzz@OsacC{bHGVYz z6l)$4LcjzJst|}tMQkDaJb>P#D=T^LOTrf?XB?UR2pWe^I|U+7e<1id26p68GZlJy zOc6IP<}<`v(be_2=)G(*$lF9UX}D7O_h2dB9#3Tkyg1cy&5yJMkP>GJbu~=OPdU5m zxJ0Uwk;AGxm%qk8PHRREg9nnrJI;v#l&_XuBK*(w9 zsI(Wn@-9xLgdQfvATv2jyhmjzN$nBj8cyjir1q^n#z+l^)yrvOXFSArJ`&BT31Z?3JmC79 z&&zy64zX?uqkHhjN2W%{fya21g3r2FRJ>s+>SQvpM_L_sIXwm+<+4pVD*nd`@2c=- zTu(rGn#H04kEN3$)?Hw4PmZDt^FI4f`3*zX!&pv>6E44;lGSsMck`FN0Z^0s5%17P z@^}*FTHc9Q?oS{k7lRQB_*xA`>$I+o5k8r+#cFdn<*%vlmi7Nukb;M~|48uEFQ(cd zf1J3B3u_?$mUAp*w2E_`6Ugp`v>RpC_4PJXkD_ERhBzT88$&IbLBwv5XUC1|1x(sK zza8L1{%^!8p<)dRh&W{KlAS9?YhBT92Ts64w`>J)n_}PIZr0RJ(qOg*| z(ggjA5zKZFe@nGNGR7vv%}bp?95Ic`1Jrv{`~4}fo_aXWQOVoN%=}07D}Lbms;QE` zdCb&r69+T66)YqUh zNFQGb-m+D%eOPtqvO-6=E$Ds56gLpI2=%+TV+umsZxv7-OY45-IfGmU6VJ|<$eCx4 zSQvnV7`O+u1ub~wkBkKVn@AIEAXI@;0!1o~au^GZd=F+g{MxFy_$@ei`a2+e%2X|5l#n#G7@#?lf_ZcFf%rkHT zr}a}DR?Ha5Ej|QsKy-Duge0Y!jKB(HFMs3uJHLtUgahSkCln}&__7WRQTYwT53`Y$C;M!78 zg!{1AmyIUfyX4A^Wy@IWl3I4C8)J(T^(jJHCZ*IiD6p5~U8rLp&^bD|eJ5>#_!*<2 zSuCeC9B^WUyR7YXj1Ga*_+8hOrmQzd|T^kpfDz@`19;|+O6#ki)_(nPNgbE8Q0MfYvSpv$_5H1g%` z_)xrT>g8%7+`(4AfHXmWvG3Ux<9QjX>=YVcTChb^Hsw!mO-)>KXbd zq`N~?Wu4UT4!RFcRO! z!Ep;_CsQmqtF(T);K!6wopcq9b1Eip6gd+>{gD7Gv^FKjysn@;ewq zMh0}<8aZtn_jC;eoF#31+dNM4o0J-k%AnBEn+g0E91Ash6l@f7=tvbmu|DmSikKv}IC8Tqcyw=g<2pm_!5(F(OJ{Y)wisyDBFEXo#O;pz4P7klLjU;;%4i zE7sUsTJOgWtXte4Q~lX%0!cFNn1J12pzpC_2BgGppE!%L}2*=bgp9lIBMm zg~B!;TKiM^84WKEPRTdi&Ky5W#D0PMxqymB_ts4NGDJLFGWbHAL`B?)_#xU*k=`3ywBD&jaFSVBZbmUuv+ZpWz#nic#UjRzUKN~?Ecr!Ts_i$wll&c5@?B|e9` zLZfVb;bZ3tTzjX0$L@1LnL9iY^;}8u6*3_VU&1ZoD8UcRp9uf>UEXqMlq!US`a%!! zD7d8@9}(IUo~VIQDcOSDru^SH2ESx!duXY%drcpn#_`GbuLxW}UL*OORB)9HXwR69 zmcxR1MKN0P17={)c(jXfZ6$i`Pc1URBFBSp`jG!XqSQYYOkG|nGBVgklOV7l1=k&x z$?39@7QYy{_da53*LE0Q?74yLV0CD|fEbix8WL%M1vrtFb2GgCs;lKTu*C4RsDQzC zg9PPs>4o<+$le)YaUcfBt&8CFvI#S1Ak1R+`~}JLouK@$E2OV3+Tw za3a~J>cU=Xl|Wl1P&l@T%8dd@SHwlv;%vCk5<1+)uvvLc%3hPC7Yg1CJnYt#Vhj=u zt`)<#se}7r|kT~2G@9ab}i$TUC_}8>}etb-t(+Qi4EMklajY`W#Hx(G2R7~E$`0*d_nPldIM%ZU(4_Ft8?~6iOfsIhmTsN z;!(I_m2k?=?;lR!_Rf6XkRAiw-m!70uh-v%#(J`V-eEodTMzy%9*dj1r=r_bHzTT> z?4wM>vm;ZI;MHndg#n_inK4kJzd!q?P`+@95eFfv+MT)UxNx4G?BXOw=sk~{hi2X{ zN&Z|@{+*Oo=qX&P?Wt_$T%N26?RJwxYj2Qa0NNim)=5xs&ku^qHZpnbmbDOMY=+ZEsQa_dxz2aRx!@`H>` z<1A3N$VuyHDHqeDf{1a`W!Z^-=8WpS>eOwPaQpX$9rD-6@oFmB3q4)S|DGK`nGVi9 z67S5~TxdG)6JTI@bHwq|tCl>~iJBN-L;)}@k0i4z?#|+`#Q|$EMOtrIB*i!UlN@EL#bBQ64gc3CcO45QvVkpGb`xpB9HT{t9@1&{1+|=nf~! zRx4L9C&k`U`f#Z9IYiugN{aPqi9;vczYw{U8|Nm20_5LbFCV$hBy5Hjl2Ob2G|8jT zl#f2-z&FUiERvXntpO_xXJoFVpwwT>#OWd~EMV{?mmn9Cy+1wWh~Nj#^4V4&Lm6#u zNwHsoy5XpUa`9h$rg(IZHNP>4?OM#Av@}AfjJsG`I-|4c6kJ4Gv+2M|nKyckIfP5{ z{>W`r5}o-`MuVxWb5D&TI6$G}LMP~D5YoiH$U6ja6T>&ahCZQVwizai70$x1CXib; zt4N5H4L3Mylil3N*o53-X!++tPcs8rHo0`dN>Fg7#n^HGOKeqDm5rWJF>xg{f zM)sBHnn;ZFlJpPQFXA6O`79hv?Vpn0ftK1I+p~}n-um0A^I4@HpoauYL&u0Nr0PSz z<7MoiSDvp2IszuB{k0aHnaIfQCGR&UdSmZ4Cp2d25ONrv#V6Wk4rMwgoUV9ukvk{$ zahFouHC^iLJyVY`pobr7nj-W$ZGoylyD%VOZnOwuPSnF17*o&JMt4c+T86xZd%CC=i{A<5^Q>V|Nhg1h0**jnA45(>Z0@O=oIYZ z9-p_HTgOF#L(2{D-^C!5Z z5*wOY-1orz%u;7cB>qlYQ!WCdM1OBZw8{R*lw%Df^o61m?|dnjIBKHM3u0hZ%q?yDM6z2s ztL4W3`+8VYd+Gvg7_M-Qy^_fL9L~=#=0x=!$GK53>59dsYimH>jtx08e-jbF3t`wo z#D*oFmkJP}`(A|!q4=O+x~I)8ev@YS`B8=x)DxEI3DWA&Tj3MvHgQCrn`^YJ)7(0E z`!<+e*RQw`M;oIY99b*65N5U910H0ve<45aZW^b07wRZwX;a@8YSD7=a_4z@6UeAh z%!ITJY@V!~*!?1q9U=pobo^O6vdJlhS$kuwu2qo4Qty!yNhM+&cfX9nO{Y1Jm zN=q?M70az@3AICw46_L3<`Qs$$>92h0CLFV=d&&r8*KD)Gc4wZBX7X}cQqDT>RM0t z&7_56YK0sqCV)>LRvv1A?pvPSp8i;b7d=!?gg&3FlJxZUVd323$oy zZT}cOFU^*}n!TbI)K~HB7C5s5y`zAFJ=!yo7wri30){%)Fo)b~hk|o4M?%GktK|hU!`f#AR)o2}_d&2fsUymx_NpM|McvoEI<0moAT|b{rJ)g={Xx>h z=n;*jGT;C(#xX?X4`Kl1|K_s)+ppv;6X)57DLty;4#XQty@23g$RKbeJJ1|7N1%{2sj3fOrC+l}*fnD2% zOSX7IQ(w(RSL#Ms=3czB^hBznv{1M;<_9;;@_^iyJ{Y_lSAls?%W< z^nI}Q)64?}OOYx)mi(py-~bm!uwG)dPbTEih%$c9{82K0>nP0?E!*W(MajzXe>cl8 zKS(2#JAm&=aH!%@SX_wJ_Qzs0_SdTInmF+X>qX-S-tyz;F8tuLBkUr#Oib?W#O|Fg zWk#rb7`iM+Vp;14m{lHJhl7~Ne_S>wTKp!qvVl!7=v(c8~u&ztGD+~ zKi%+-w|e&wlIo^VhWC6x(Z>=+)P{I}c@jBU+EY3HVsJ5-c-OHeE&YlVn%F5!gL3L~ zu3hhD;mXJEg3Mb&{?86m`Z1T{vcUwg^}cIcp(085?;>=B@2y+?hO*~plYk5^VXeMI5v=`U-Vh*2E$ z3x2qTMVg$UaOLnh%82fmQuCRHwa8B}3mOd_`qc|{`?cKIZwDgqI4NCl#Yw$7+^`p} zsi!@Wk5hx*^T?n+bp5@tU04P>A1xFt6_1V;HqjC&^;;%kG%e;@!@N-W90Y|s9E>}Y9ORtEiu<**wM48M5c%P6k5&3yendcE!$cEN zd5;(I{p}gsGwixgyE75q;YgXYSRDt72~o&dC<>N^e|DH+V(~blwO&l92@$FQm%Mrl zzb9w)9cl)9bb;&Bcb%Sm#tLSQO1l2^{PU2@T?54ohqNu+RoM*X0VMS{nn$Sn7`Ij-ou~cle@bMv&+}8);njPZ>(PL*Te6PpMWqxV6b5i zd!B`Z4c}*AJ;%d(7W5m4l?QCffF*3Pd#h2{Jn_o2w3bFzE!mc}Je<8n#dqjB(Q7)b z`2t!AYVnVZGkCyRL;$3JrYnATKntN@*Step>))+dz+$#r9&zu7xjW~_%;!C`&eYqpr{CR^bzJX5iM1AsjpOZWCxLlh86YMk zw#)J-SWDlFSG0TAMi63cf&HERnGYsXB_%G?vzp0{!i5uWbmc@)49)uzt_AG^f$R!G z`_~66sESeTgC&^7typxA^WyF5ihh9B+okk`M}67wSjAC`3nJ(4G3QIa4-OX6z{eUv z=cgsV{w}X8e|p_JY}Wx?sb&yBU(bKdS7E0ec+XycP}#ZGQ!*6sPDlu~-j%I8y&ev_ zGauK<-(UDxM(&-;4@t12l~Kak;AJUZIH>&6!G-VC9x_Ox3k$nSHrB1FGRXRBw3ov27Gps}ZWME9|HvAwi!neFo z=_YSlrfbUH>*XGa^zkAvSIk&d7-S5GPlr`)RX9-^8K)*~WqSf_sMY2z$>&)Z2kI;I z2gvNx6VyGtCq%*SS_(dp(l<`YNk0|8fgB$Jpy-uF!BicvC;X8yNKb> zB%)k#zUkNQNqNF^9ZWxd{_Xr$V(C@)Cw{BE1Jz!Ma3mcyqeG>{F&>jLRGzbZO7`5O z;2Zbu_}V@r2)Gz{$9c-@2 z+Yci7V{N&6U(lWz@{NMJ{AeA!zY6W-lcuCRv5hXA@+KKTHo5z)oy9>_n*xlLir?;L zbJ*d<6qSwpix@wTERxMpJ~<{mZg++lrR3RyM_y9?&+5u7Q*`a#ckUTC- zp-jcz#vDy?-rDd@#C_YaT*CC%hBYdRGD17Dq+}b{J$9lE=Ny%W{}PlH+2k$3bZ$J^ zlJg4c^K@>&LVwznqddo;G!Vo?OnCqL(=zeta+QZ7>_0U}Knz^OLDaxr@&y?e(&6uD z3CB5=zP8nvFvyuefQ1l+R?N1N4O4=^P_fJ!ZwMXLx-z~8>*czi^E+cb>G)x7+n@9? z<8ENCg5^FiT^4;?l0DZrxWN$R=Ia5@*e;KCUbNeC|6Bdhrm5zHNAf2LZT(~#$nqey zIW7)TodhZ^F#*jww9Df}=t>vz&G+5;mDb{EM1FOnH5tQP4C+++R64lKltw0O2&=Ve z3=sjxI`rdKWnrQ^72)X|rlfB1`7~|)tC0%rQ=uc;^HE}I^Y^~#!V<@5Z?;lY^Tuwm zgYJk1@}4Q%tAWQ-Ng=Vu(^CjxZsm`mSsQTI=wskBH9DHW#|Cq*4nJMkUS{=+1d+dT zl#Sg&t;u#sweah+5r0OESt)O1q^je+){TS^vU%0m<+6?^)?@JU*Z3FQ^7(D^+Wy`F zh5qud2fl_Avm)#6<7w_#Sh~Oo|qgD<<3ld8s^!m{C9&4FB^r@G4yLoF@ zTPN(L>9%>RO!x1ci}<@cf3c5G5+5H6GOO#WYJ$ZEi4CY`7lNHCg3Tqa3_^MjL3&va zw)qY{?n(PUwQ(izd z#V5b}^^tu~M*ur~_H9N{RoF=WdjZQEl(v6E~K*0;)y{0d2D&wBJuQ@Ht>L`qFzg| z6rA?4+@<}&WbJcOlqVCwxZ@B|RLstB*A>Cw6UkO_Gk_56>6TV?kL76_ zVD%*hT84)p{F~0m5Pp%HWRpBFw<(n74n-*DHqpe7YEHvwc9Hrq`MP z(xwokg=Mtyv_6z;gRTxOsW)2K`l= z2jn^;e$Df)>wqkS);g0mHL+hBH%hov8UUIQ_-6(Unis1KPul;nJw*LPVt|m3D0cXR zkfSMcX#sENiv_M!w57DIsT`||A|excI@8jQ{r8QEtG2>Yjq0wJ0O&bco?B`_bqqi& zQ@^@*i4g@^Oue$N3%jWbi?vdG7EvbW=1L_ufRyMkl-R8fIWrTnCyQW3^t8iaGcNex zkMwBO?v~n2Q-u49gX6{@_l?Y+828k-n=Ljns-}+vug^{!7=P4b!TJTq9lyZj(teTK zA~`sM$*W+%E@NS%3g$0Nl&$`wYQe>(@U3f`uH^8o^-o$xd-tFIFo7Mu7;}?$pzSd% z9u9G-@25dQ9k_jWy8!(Q*-Ow&lN;YOCk+PaXSh<#lYf-Gc#d1*v1L54Nk`;7v_dC} zZaMBkmq72mGi0TetFhf%O=bqqFMoqx;A*N?%gai=z*|RGOFac|G}Fbd+~tsycuq^w z&Yf~gTGGze4-+<1u3n!FGt*%kj8r>Y##+75jcKu3C;HzqiH~~vuh*t0J;ZI3v&;-b zhkjSN2m)=o=&RxA)a!}@>J;o56ot3tnm$T3np@~k zG@IB0FTYpa{w{kgdUeKDKb?J_6OR2*#E4sorI_`cwQn?qb_>CNpQojv=*P3DnQKz* zfcH*OKb>z&mFp-lb$|Mbg2X~mi?eM0AZQ5F83Ss#blhkz*dOKOGIr`+Zm7wBL|sR7 zNt+?1N1ePFXd1&~eFz6zW+OPiko@W^0&5>@yOmG=J%P-oR($GlMf@0Q?zWkWHOA~^ z1KhmDzdm?>M|NOg*9U?sj~jj6@U@v#z(_ZxOc(#rwkmR%*X)OQFx^`79l);L=z2z0 ztI;4S`WR@(*_TMxkGOb$Lw1AOgMZRTiF^Rs)o1`Imi@z@^o_n!HGrn|-!k=|$(8!| z%~}-3cc~hm6j=V@L;6Pl*YHSQ{j+!iSCRe$ZK8WqX$^ZOM>QaMYv4_qX+vE_(|ExB zpBG?Drhz*W9fj^O3#JbYALfmMnnEJmloBOdx>#t^(R@(?X<(zmOLkscq_9`xumvSE z2b0&(1on5YgN}&>qhQO4#dSojZ9|7vN=Fo0DxG<@Og>pr+;N07mB?#msCee{90t6F zNLC=Nl@G6FsgyeZmd2kI*96pNFm+FuT9yb~{@{&F{Ug#%@(Fb;G)}6qmrTI6>0;{1 zyf>VS54sO*#3!hp?(c{`@O@v_QdS@AZHU3AP;rBClZwupTK)GG70g@RJ@5MC1c7SuGHa{l1bN3r0R1~im#Pfy5{)rf2Rlu zT~8&g`AU)Qof2^UW zDKMU32aVr(MSl|r%y^AeTKpX`Beo(`Exun=>eR24&pt+o#iJ~0G{Gw3agE`uIep&r zq@%m}LUPb_-wyxYGU*QnW+3<-YBcE(1#FAF;E|o_Pt7;vQ&rh!8q?d67tTIc9plw8P5g8ROet({Thg`Z+*s+mHs_!KM_a)qLomzrWf(TdfgTC%fU%! z3#ELq3%D7!Fkx#I$}*y9g~|2f2{h3&MOvDTkx-HcZAEy3{CPG4q4wW0K(F(_$bi6# zr6@;;N7znNC}-?X{u)+JpWj@y1|i3|L2VduXr{7&_bK?pWKpHemk!nVhTOG{$pYHr z^A8RM-{{llv2%d6OGu!SiCe*@ptUWMUJ{fh=tnAbho*0$mv54lA)5IyOy=6^f$If+ z2yrrzFp`S*!^J5FYe@WzLHW(IPrbmy2{0+D8DO}(4)%^x07+{C8D9^->0+#~ivLk; zDHrER&y}V*;bd3OLM|pczo-k2xkJY6s?<0lzV`z`iKODof9N9PX=i2mv^*cr=WQV7 z1<0}18q4{WTW|Ks1ofpaO?vR|kDcnir5y{NVDIh+-$B?z(INC$D&C#3a$EFruALEQ za_tHn+O!^O9yhzWrtG;;xT@WqGvY?GF3Z%7g z@ZiBA@45N>zU&TniCp1$5Gu2pO5*r;P|$$L@4)`gP5T(yO0$_;ung@m&31)LQJzj~3ICmxY5RG;S{>hqPShwo)4ycu+8C4Rt z);WM^(W%IG9xhDV?nUoBnzYZaSO+0>1k-16)GbK_j{TA7E$`CX+_~!g)geZ&4TI)cu9@`wE3APAZN$JgPyhDG*d2fUx4VxW=pen? zn0&oC$w*+W0Rht@5H&0A6zGn<^3VhP@QDM6^MleLHkc4!^4A$j4B1)jv7e}i<|_ux z&HgF-?D-Hcbi#ieahT|Y+5x@?>6-**?oP7`^%3*0JU$(QRfc z8#Ky)3DJ6>H_V(0O807Qr89UEcN*QZ!_s#VzqXm2@D`oW(oqR{x0IK{GPbA~DkQrk zZ`z})-6u1HweUqJj`#*A+(PF(0(;SKXRfVgB*6InQ6M}#4$peJ`Wx3F8x%_2a&rG9 zbLW9f$!UCD*(njD0-VmbpotG4{1X?=5r=NT{RhxQ7wX0oTA5t?=O<6jjM!hD&Li{x z9Hh>e=LLIm;>HT9QTgWmd=Vad; z;woj@(PWQX%x-98i4EpmQvm7uE~qsBb@^b3;dEalxeAM_1^2NV$Y(FfzE`pH@x5$Wa-{AK^;~M03-+(|#;0M(wu|;eP zxQRu?gLV0ZKJsq9D-Xey?;XI=GZKPLbB>ra&&0rEV&9Bd1VR-2`y5?3X!qvZlss@Xy^xx-FY+caG@67b>8~T}G~@+HGG19fqQz z4DME-IkHK5owQ*XhkM_;#-lP_E{Ve#-gB{?ho3u7>{GAVx*c!uA3CsMU$~5m)cHL{2h3jxBkpDqdKVnu^%~@Yn6F1`R8r{ADWnV>YlZ< z5!S@K`vYH_=Th^z70IWY0m4*n7A#m|$1w9@*X29b9q;|`b#&4*@Ew|3pqQ1keiUQE zlrkPmsW57cUpWJwD*cp!($6vyh-oqRof>s-0o)mCVh4_FEbwnv{}|SD!uo z0}es~fBcT=C&1^s;s<^|1l$UAhnhB1-LAI@bMkQd6rr$=nvR3bD9K{>>A=y3k%Fb| zoIkGrL~%l15co4oWUeniA0qK-@2S_ST6Q!4ucVpr&3_Ad^*Bw(8n zv}?*^*$jh$*-sGXEVd(5m5?VH;XSc@XW(f`)cROP`kJoAv(GN)70#MS=CAoNSMZl# zz3O|F&yywM3U2ie@*vBV$_ZMv77-~QusnWHa6BTUe3qc^y}22CuYc$OThUW~Vz-k~ zJc?(MAEK}3PFTI#)e%Z4-kw9Knj+Bt<7icmlraVI(yVPTaF^7~q6otvk=vzX0cxyeTW_pkmDm_GW4>+2iG-th7lf{#btxzRpb$x}U!p3~2;r zl-iAGx<-{ipSv%>t?mDeZ<>jkW|ZJrgVF_vO&`LbPATo1v=byF&NPhd*bGchy;DEr zi%@t7%l5JVEobF-&VU^VnU0_6l~qBj6i2GH9-Q>7XA&ijaDu3fn&IqeL$y)cGhKo? zuGpj}3~;CH`U2fe!Y`!(w++xv{6Xh3%$9M~ulT!d+X5tyP1Y7UDo;5rA(4n$dLzon zQO_vBJXkrwcv$&}6-p_$N^1ZX2&a>M;dE`L-u9Zmqn+Xej5!R8 zB}TH2!%@~>5;l}yZBfN^$0_z!Z-ZWM*8`O;J<~?R_Ufz-KXC4r1EETWNKjG0$>EtY zoheMr$Lb<7ulTt({d*5BZZjDWiL6ta}L2}A@hH6wO*J|F%!bh^vWa~+mEUiXEHXwbBP!nfW)#oExjf0`{%HAp4VAv$danCbB@jR)BaRIONrzOCVL66!H zJP~J^jYFVA>XpD0p(D$xz!#M*jgcKY$~l<_ya3<|xT*5@;=Jvs=7P-ywWRHnM&l9N z1i0lzA8@9QTTOMz&%fV3h1$6!=9vOmCxV%AT(nRGGY|5|t@f`|L`l}mTn@e8N+Rl(RWy*GVVKu(232DkBizd)$7AR#>K)ha zB*cWgVX_a+^~zmrg&y{3BXyZ5fmj+xt@8|HNjhFNBtwh>brECc(_Pm!q=ud^`}W)z zMw#hL`PF7dqSX3Fo5G+CWFo9smZ=8iB9>$ja(f7*7wJcvTs6C#hC)aH-Z+U}+s?q; zdxTNHA(yKL7gmn1Kp=~D3fDMMtqS&G=Do6q^sq2M?MpdgEF3%< z*VM?So`@IC2+F_iot-lyS}zDMe)au24qX|!1%_sFqB@5-X;E_l6^T-q8 zMD4ri0qsDp*ME$^2t;R)n{0`H|Cp|c=f z*OL1Lc?(q+`uZmm-s2<83I_c%i?wKIt!~LsNup1I{qf*buRk{Q zU7+Lh@cgf)o02jpJtHWk9?&rXQ=<(u)TNMy2$HKAlJe~d=fe3E@|IuUY>q$j${R$ z#!WwYe#DURa!680qPj;lZW&<`Y*V@Ri5f17rRu8?O42>2XGGTdl0z*oSfmu%WQJ-* zEvTca2MGYMAu!5FyE5!_-=#-9yu<^o+o5@MViT;~VywyOC%iV4QC5_M@yw&!%TjIS z6;7?=$6O9Rbfaotz?Qk8NfkpFqp%k|tu)Gc##7Z~6&l%zEsK+0Wc))7PTz0ymOh^4 zT654|8fG3cahm(U2#}NlgkFzHGzVN+^ED(oySeyCH%Z3x7#$bBz~W~WxlKz+3@*t1 zY^UO`Nr4w41(IM!?|R_=T5PSJpr@ZjhYfR=YdBFw}_dug9=3$O`JN(DB)0eceNTDnn~&c?DQzH$9e~~FA~`>gW>W~MILuH9(yk> zp$Ao_ra36FM(0Ci5F-vZW)f;n+&|e(Ihc_IU!jZ6z*!DICe9<1{G- zXzHVlB}6L`})XJ~Of1i6IZ-Gi4b}9k$c0l1NZ6 z>tQgRF+6z5)N{!|V>L}lQ%RZ|#}NB#<(Z8SVFlq$G)P2f1{KtDFNH3%8757VF~Fn1 zqHkP>2IsDZeNzd0dR-uENg&JBo7;JoM+mZ{wbz0a`k}!q+Sp;S7|dMhActN85hpN2 zUE~{(HeWIzSlnlQshu4d4%*vEaZQES|Zrx;a*`Lh-4l5oI zO1?|_tG_c@2`dL9R>?sr)|haJCW z;9j3Y=$vjurF{4_-mMzCVO_HV_y&UN?&20j0w`M_rdb2oCW}F^GvKO4Xd_s6Q>fa6 zW@&ysdV^^n^5DcIL5RT7^QIBgKP4?4+5uj5}vj(vcw0Td;|LEY)7rZJTO-Y|ZK zQe~q&VFO(v!_HFS68+i+6E7gVC#dNYlUv=YBQ)7ys7MU)*WYR+kpWdYhlx0yeztgL;_22M1r;l$`l3=C=MwLfFehV z)LAw(P!muqi_rQQ`1S?b-R=>4phGC*2$?_WfmDN{%%7T&3~5Jh+yU^F0e8T^Qev&{ zTPABWo(|#>7KOEIne1W;VSMDAtziYPSvTudwT04godQq@UYmHXDbNTH2RT}|(!-Cp zGN!{&zKF1hMsEEJ0Ah?B@+=6to^{QDk0QRr%=t@70jU!%8s7;KS^#g^^W?#?^*~~F zMpG)w?Enf$GW7YG7oy5~t8@r5{p`%LVk_EO1H0EQ1EU&K^0jL^9q^Rld_;dTh$Gf_ zOxb6d83d3Bb=3Cow;lMfM!c!j^#DE}9>HhD^3^Q}b4&*ui7J#wgIvt43-fy!jytK^ zad_(mxmlEoKw@WcP@G!c!j?NN0vIabN2KKmw)j<7e^I`M%Km;EnK|d?B_aeKy&djj z1TlA);w)tD1C__HR_@$y!(hIYpFaiq7T!N2M}T_Cz-7Gc#u)#Y?XAc@#Lhp(1gVgVq>!(dkb3~|_oqCBs8k2~9=^jo@TT zJ?4sfPav^__s9_4ijLv)?$aty1{`6mRIcUvGf^fkw90<*mTOt!843(PenkI=OHX1m zf$o{EbMM_qEDKWL2-RPl=~*MMt}6AWcDuZs+ltPIrvc92MsrML=0+IO4zZ;xd(@da zyPVc8<|7Xud%Q!~k@*+xj`@9{?`MZ+iR$ux?+?@%rTGykc;Hvx`pJ8b6E=7ep=&}L z6cq?<*`heXu8Q9$xjkBcz;%fa?O>sX;|5dxx+LR~z9Dv(2 zP+SD5YhNng4>QU`bDFK(**#MEXmi;ev9>Y9iJ=FQQ((v=`abb+rfUVsxx+%S!$THs z$zna%i2)wBuXh4IPPL2~rjdbvnf+OFb4B#x=t1VsNJ5A!XLLu)2Y`((GIS6)Z1cV+Z2L0Fp zqqRgFC_Eq+;(}5Tzl&Y)^cT|sXwA(F>U_QuJH8|MK^}e8MHmpAe0DSJj(ATza)~+J z7|IjuAGZeHce}8BOgaw0gkg=bqKkHZR7{KY{Q7)SirA$Il{CPTbk3Ga+WkN-WbrZ zYV+f_KbttTG_k8~5VbUgv^2r1-BEIl(`g`rChf^fk+@vK!cpO9cfiI5>7vzj%8!@s zY4mK#X(Vitzr27tgDsS_W*)y)oq)0zGK(&vjWz|e?{DU!f}fu*-?vcF`PrQqgdQuX zgjW@axGmC8qAg4c87JoIq~+Ri;AH(jx*NIk(>@5uA#ias6b-m4pwkF8hokWDnCaI> zB`(^Mu22O8A+k_t+BTq-8wtPsU2{Qjsw zn~p|n7bDNa6&-WSSuyJ9F%Tu_w%%d2jUkUke@p~ZXtiq}xgSU@9Z7U?a8+nKlKmws zwze}dD>@9s*OaAIaU=r|D7Kr5b{Ui{!t2N096b!17z7x+F*Eo4UZ(X-B=k%re8Y1) z{JI=P9*@B%b0AD2gfxm#N-2gPV=H%gFuDtCh@PaTE>HU>cRCspMB(NMQ`3R zoU3lu&6+jls;c*S8J#9RLYk7q=E6hbxidk8ta`di@93uSp`5^U3z|GPvaguCu9#OF z`p>KaT~uE7aCQ#vu9)YGqqXts$@ZA*e=Co05v_%Qu0TI^;wjJ|1Ke8=v#&>D|y#GKrQzrbyxq+GDsgTkb&+w1mO{Q&R1h>Vq2Sr*ID;5e5 zFIA`q{ka~?Gm~}fyYBKe9>qycjl|*#rv4cv^C_1L6YK~+&dy3kB0I2LPBUNdlM0E} zKvp43dWmwJ5Q*?lY#h{$2wRiR+V1LVQpVT9Xd6W6Z%z)~K^U)$L1bdw4jZf<-i{{v z%OgBp>JN+DZKKs|clVb9F-24rXjW;{o@9nu--ZA4En?V4FWQnt5lB>&HtOc+?kZK# z)}o_K-!Lya=EUz(OmF&8b~DhnTgrA~%ZI>4+e7aPE>Nq<@7JB#pl8ccxOcExpUT5; zM<;LybTN+U5(&b1S89k*$s)nqGwJar|1Z4)LMe?hC z=<6eV<&z2YWmDxXhS0sfNZEXMy zR2(yAc#R{QXemWj4(F(mEk1@-=A{T+ns`bqg{K5-HL9K~JD&=upG$_?f5>do_!(Wb zg{!58tU7M=RsL```nF~CspQdb3uFEmAf(;!Ox9@ef0}#3KP+(R4yBd3m7naCyX&QHGv_mXh}6(6Vy(>#^RXV?^Cy zTUu~uM`4tr2nNJwd4AyXfNJ2?E(eMFI6z`=JjRAjRmB#%i#$idN~VQleFTi`#RB%T zg1`2{Bg@6H_*Z_VrW@>rB^4nYsGRM80dtm7@WBNK=iecO2&oVMKCa>;+0~b zl%7_zC`5K0=0VkZiJx%F9js2aAL|`XYw%eo`r?6XjJ_^fQuFset9=ZNoXdJ7j#(P| zcXa~s7pz16+c}keyYBoQgI>0EDvYyuQT|Bmb?*a#6O&wbTk=|gs@f(b)!#^PSDp=( zKC{cS-4q1|tmw>jX3fu5;vlvNV9Ug69+Q?*MalLRiDCh#T725MDAV!Z{@UBM+dWvh zllw#76aK(Ba10IV_2X~$%08Pslo|p>F*rRpNHx~LOFojrpEd!)=>Gf`QmpOfrlYJg zoItS*6EP;yLew;Ti#1e;W-}375yfDdmQ9dmA%f}B=iv~Tq3g)JtsQD5qfPF(D@m=CWZHgO_OTsAr1G#$FDCil;zI0lTe0y?f=Cy<9)v>wc+#f(5ik za%~J%q7iZ`?%F{{+iM4WIgIM%$l%?QJRSWSN9A=76i$Q%3qz3P<5YerN|a(VNcGuJ zPLoyGz*!Up(7pi3lQCum=`q>_OPX+Pb}u}m>_?3F*PvUSIiQB@ioib_y+nnHhW`Pu z`;7tlfqe0&@&iy1>Y|7|xpzo+jFl+E&FbDHaIf=Qn>k_6O#fUYu!~?8pY!tY>pqNL zdAdCGPKW9@VqH+ZTfqv#6cQ`@;PYW|3WkRL+r^FrPt~6U%~OaU#}VI%;d(j3N`(mV zA9(K{cVpDzER{?f1uWl z^<{+b=}FVdT7I35zcbZHj%n>)rJQg-QcbIp2@ ze;#-_T4Tx1`IB2U+7f<~}Tuxl51+rXRw1Qy@Mq1C}N z{Lm0jg(41Xg>%NmpFM50Q8MjUBk;{A*yXM+GAW>7RjkQkpg89{3P^|T!JE|FA&#RS z!-Nn|m-0NbYCc@1Ik?`4DW`928@?nk85!^t)KOek$CP<{cjbB}29tJBX)AB=?Cq9z zjEneIb@_C2!{1*9^NumMj#{?I5z?L)Q&=Y9Jp zi;JI)xvF>0?nSW32!|*B{SoVITE?b%!jvD!VlK^vXw`9ex1*cUJ1AM;sE}~jWyZks z!joJnBO#y^8wg6)+7@i4F=%!XKv=#Xa)0*F1-?S70bmCH#4NkLt9jJsMwYCv?hsHF z+$#5s$cN+p8sp7y|MPzI^u$0=FyeZll$0DE;QH>E@w)(No?+3@{E_tF1O#!E1sVzJ z0gwL{dEShoaVJ}rTo^)}TY=di1Ul2bylfFniIS3z^nMKvojNG89-YWcA{$!JA|H&< z58C~XE@^Pmb#KjjK<9ULjDI)5wl+%}{Z#J|X>}e~*XI5fyjL7RqTOnTQOXa`x%!5v zqAE!AzAfcmlJ^kv+Fu9ATJ?+S`nk&uq-sVz^Tu~OUo-iHw;Q>w|DMt|Ht8@66%#;9v z1~DMj55mzUU$mKI(Z0%>ld#ATZ~5ok{PX1uv#xP|7Eyqf<7Oz00d7%kOQ$C*-l;fh ziKeFp!jliY)cbpQYDE*+5jOhkSf26U;I>}ZLWQ>8Ogj)d_hq*HwV485WHpdq&(Di^ zEe>%Mm2bwCm^-uR1QINeEw}I}w-9}AZZnQE!yQPE53btGj5(__aIM3S2oJHP31V-` z*Jo_LHfZMSg_(Fs68_GCN0$ zK#;iuFSVv7Asv)WLa_${h7uPffL~S1C+<5%0^S~)Eih9v6Om~eS+u(gQzI-*94f%& z0J9)-CCe$?7!K%A;ij-sV!ZQE@(d~5I$4Mu7@=DN7~r*HM#^G@cv&0}a~tfi%y`#w z8nSEAggRa?=_x9r!0k%Ec*~E}yM_m?l)S%)99WhV^ zs2g+86^tMX826X5-(?^_`9!>^5;@kRLoOU?@-Bz40Fpt1`1?srUMQPL7y;{ut=^Wh zr2iCNsDktJsr)>O(0I~k;k-4$_rJD4aB%+PA4mye3Wb#wf=y_Rp)m%-5hPm^y6-|E zhr=;(XOB_RdKo3I9Q_qOt407bpfdn@Ow@76bCw4ME!p7|9_v945w=gxc>~?W;bwD% zq5?BQ)#1A0${lY&uJ#99gc~rA_>Gs&CBjz=qdi7p{!?DV^@VEoy7Sc=n~O&Sz{$*@ zdS}Q1YO#F}*OMj@0}w7+(F{=MDUA}D8INv}-vlm7MylKOE= zx7|+{3o>#16AD>#tC=*#=H=m`Hwdh(7KHNV{iEKg*&PECyL|z_|HYXSR%Q9Pdp1Ap z#Pc@0^!5GoRUSE{l-o<-RkJG=`lJ`cGXQ=kC=*~!BvL5KqE{gPYA%rbGe0qmRz^*>!#Vn*84n0yHRnV>8Fshxk) zU&zOer$Ey>^f+l|YI#}!JwbdkL8%B$vp!Hu#iQ06xqQ^Bb)ua9kg(&2S(2G>9)sm~ z`P12r(6R3EIU#78;vz_x#|-~>*Xi^qm?mJ%wR!UUC}D8zP&Ik*7gJE>F@?Ut*H-q( z(#OUTol&fjVW~iCQe0|_8e5irsRji*ee$q#vQ(q!9}I@3#`?v9Jrg$b)?w7SQ`|x6FQ?YNA}k5HdF|o>$0O=u^iyJVDmgzq}GEA~W4K z@htG2d+O)I+Fm)Z{>}~GfFcBYXF#vs0m2Ed`_sXvUr_WINy6x(y|Yopq*wjTEPV&x z-0#2+8f*h5@q&UUhhiyhW0#=2g9kouz!ZmY&>iq2baFfB-)DG5-r}mb}gC`h$zO)40EuUE!yX-={AQ|1PQHCrkTFLjp-2CRq@npK-g$HG$w1{NlB7PpY$Px**FLyFI}_S zVi0bj&PZAMJd7VcGU4lUOm<~bYmNDft6I>`X3{^#sq{s2y*7lY$6kNY^RUf0IzTH> zWt(qAt?q|mwcoT?4VdFXHD2@kuft;z!=S46S-}B4og(PB!Hs545oU6P+GXJR*dg!p zv+6Jq)mHF3;p`BYb8tZbG#w#usRlfqkb{0bCmEFE02!a=Fczxs1FfBaZduhU-}NUB zQ-~kFLNl8TApE`U{fPTYr;PD#0!I@67Hjx`rbjGk0dm*>zl{BRs(QpCMB>l=>iZu{_EAoz>m{1VDDkSBfLsO8RW~_n0Kz(r`K;_4qNHZ_rPfR>_~N$Q?l$S zhH?d+G%7YMmWdyo%O{N=YsSPcz9!!Zs7OXVkyHzB*S8x8xBI)V+>+m0_78+ueymwN zla?L!Y9oIg?S8<2*(t5f0@YK2f?t7em-*!1?c%3s*?+J!j9@?Gh&69M=tEutj%S70 zF`DvM;!%G6g1AA>a{hyyDnk7+76)n6$>~KxLXRrFwj;V2WCWGA;5_400h6(sevK;I zE_O~+C{yU)a%@B;biq;sE&D#Ru``|C^GXcNl(-sfXlOA2)q34??oyZ-Piqux#3|5L zg0a0dlnu+e?@7W#h~t`(zovwbQ##?!v?!2(KB!AXDez;lOzVQ96ql24?3{Y8ycW?r zL_I6N(r75eT{rWjjEPzOonN_FQw~%&=mnnc0^M$bov*;{k3cEl++6X(aAwGpW7bdZ zncnP^T}8LsvQDq1?QWZ!9gf%kDV!gfeRBM*e4E+%I_(EGH!W`p_fXf?wDqBW^F{c& z7FB--8~bUkru(;##mh+fVZ!}k1t>VuzwFI%=7Iw!_tLP z6{diAyZfSA@bfWbx2J%c`D_N>_kXcfUh3HozAoKeEokTD38@|YB$~H1M04bf%Kca7Y!WHQ4rw70m-1XFj=(1XR(D3D(d#Lo8&E>cr zXr}0W%r`EOb@$qO(5XIE(Y*_%eu8RHv@n7^!>SOs)->;XBzf4HXrd$Kk*)RZwE70v z_TedG$DD(^ROo+b{VJ-f1$>Y!I}r2EIahkI<{H)pEX*CJG(+883hu$0orM=qhzMKa z)V+EVR+)wh3DLyDbH0PCD}{z)v@9Lb#rxXUSkT`~sFr!-#Yo^3*2Wi#GMVM#F~X2X zMZbuF?Y||k{>}G#%Ywcq&k1Ge`3bn)0Z4sMH=e-f_icys^NT-#fW@<+p8jqYh<{+1 zL*$SkOCFEBGzhh9B|aD0tZ)EkMM%$F)&{J9dP_E^KVBEN(nEMzK;}19k}O011%Qj^ z$6GR+5wZVnqFF7t3H8md&Tz?f8MR@s&f)attdsOU5g-!WDoxwY_~j;!Zi^AeI?NCb zuZXGaN+rQSoZQUM@i-7`X82rXdox2v+{5<)oOV#Krg|LKp|U`u)Uqjjj2zH`A530E z)R9NXn0W~_knKGIqKgkbzXVcu2<^NvBjt)mOhry=ns|AYC#u|mjNgoy|21R%`pKmm z1qPn>C6v3%_nf5HjDVQBXXFRPv$RJ-I`Z|Lac6pK})}gDG2E1;! znzHzqiBX+$+}C4nV@J+|I(|@nW7GfSZ}7z!3H1Gte?lwI#6D$qL3K@q#_s#XHh#nY z3y8ep(BOsI(*4aD7J#^znCufI9fB|jQItqYY* zB@n&a3ty|Y1#uSD5WA5UCJf=54H?0>V1)qYLb^Z|ZN6S2{l(Opav1ktY=wS}X-lZy z^aHct5~zC#iZBx~$~^to&a0o%t#*2l0*N)HZCUu!{ivQd6YhBLVAQh)<@zMkXG)L< zzV`+b0r2GTF(J56j^{&3UTLhpdYVdjTDI3#}D{ zuu|GCX_a)z{GD@*?A3;8xIX*Vgx}TSSX(IfbtA=LGnNd6BXaEV>2@gv-4vKZ_JuhH zHXNOH)z$T$tKJM?g1NmkD_@u??o$Swye}$vSkKn$zrbHQLjn+&BA!V-k|m=ILTFYcG349s3Qi}M{*=C0 z=WyLQK)^MU@Y@pBoBKoa0E1e|7l!CKO&SwMIUlBpp-yz#Sw=P03XsYiS4&RRIedD{ zAg#tRg>33b9V20~An)|sh0VpGgeKSUzpnv93980tVTN_Z7?W{ z)K093m0m1><{qvnri)X>nxq0L?oKzDQQsP@nS+AM8q0{Ei2=mT-fnNFzaoE+tU+&V!&eEroB``mcEi?t#F!kDwd!Str3&4_Y!3Vun_o0b zJNl(l9CM0H>hrEPL#=6AF)(k&zjbl#u!wV+f=5|`Z1&Y~IFKtElJtZ;f|c5r%vg<8 zKgI^_DTlS6Nfvg-Rc_|sfB#|28W@WkV`f=YDn`zYT&T0@+yQ6W46Q(wN|ck1qY)I< zZ4!YmcqX&3#ytZAzRkP<72EqSe)x zC&|V_9|y07J&NS85#c}7Wq2HS&MZ%L$z@LprpuvKxmxDQ7nHO*LB4gdYaJO~B9XSJ5S9QhIN9g4K;icSZQi}@n z0ug4fm@k&NR)j3Gc!ziP#F?f`0+Cu*kk(-E3Qweh_(@O`?OJL~X!)1QHxq=xLwkK1OWHrZj@|28~Nh`_ws<)I3TG+m0sP9xR%={wG$9ez8 z`*O9OXPAbyiuL2)i$j^ABh8xqW&J`fQ6_Fm_=s^J72(1$!I=lR7oq$oSTPLMqFl!hgDEuo}3ZVW|Kkmz;RW~XlN2BmDs4!Ov2Y_IuU*C z#MV5ab_2w;VFx4uA61SjO#m;DKyV067IldMJT#t>;qv)%WDi-y$YA_#JyKs=xqp_l z-OxYEr4kfYS0KkLgFW~}gZ+PLDa!1S56nmnQaXPTyU#SY5c%m6wd3_ZmH(k*<_Rm^ zUhiCh-ClT}R7;j!Fr$6Pgo&5brL*cBb{V>Ij&?Mkx2oA{W$1r!lf2ujN~6KL=i1se z@9wCzbsQzxu_TJd$}7EQ$&$$DycVQia;zabLDuOPq$fo6P6yllr%O^nOF%%Fl}>q_ zs&(LP-upc|AFxpi)vV;8c#Ex%=N4W}kEr>(-tl}(Jg$1REMTYz`&toW69ez_`*lYS zJ&n?t-_se5#bsmjz_@4v^5Jeu>(3@QV}}>}2&0h03{JZbkkoA(`npvZ4E+rF<90G@ zdo<}u;6vNl&U5rdNAgf;@-Xg2!)Z>a;|I6rhedI*_+WDlu5MLg)wZYdRp8z<1Z@)C zj#=eVGH>8ls^3Rg_N`<*8&_fnwLYJWR+exQO7kogR5 zL7F1nL8FkC%iq4T%unSm6r15U>ZhI8dsS_slF8K9{SnoE%c(-sM2q!5BTLA}hhX+k zvaBFIFbDQ`1!8Bjp(OGn&(%NPpy>K6^DT@x{4$8u6jn0Q@MV1%WXUG>Hdb-xu$a{wOOF1V>$;rN<1&>( zd3dje#P^qP&tA7<#rWp(fhBCKhd|szz3Ig#!Ljde!>8}0izU83m(Re@tQP_-D%Bie zXs$M#2HUj}ZOBtJC+Kqd-ST|z6^xyLi{kERiu z06cD?Ih~?y*OC81RhxO8qAy2KjYf>eP^y=mqQeWFqFpN5dR3rDs7 zb75R`>S6M(*Ha3a2H6Z2rKe&Pzo`wI(_~Q8mF+1aG4>%y$ub56c>8bKL|x&2(LrTi z;7sCX*~^cjRoS7`GVSLe((?QCq2aq>`&A`2NT90_DU&HFK#-nGI!jqym_)esq)U#m zog}W5$*qWYFOTT?aGj&%ZGqG%OKba-el?opp~AU%ZO*dkx=mYe`?>bL+wujrd=NKVtvn+^ zh8aw6Q|7*=wl#1STzA6a#)s}Ekj8>nh(FP-rkddT@Fe)vIsYZY5cRmyzS)Nc!+cF`kj`1Qa_HcwL%TIAyjk_gg zu?53nSN*`NpEustBBWL1=WYnfp}?6l`AFr) zXByeau_KzEBp!4j5ma}u0wI)X7w57y^L)a_BM)h`1OomSK`IOZ;V7qibIewQ2MvJF z;&L7S4+pWa^e+~N{TbZ|hO1v((llboA)S>X&`+$|!^Y$mI*$9vCotHm1s1S4)+O$Q zeDf^6&6LT=@M1-VR}v_M3}dJX3BOd4HZ9ms|D|(ACR;cJrb>~`-1dUE-%%r|87|bx z3Y1MhOzJbU4J{o#b-NSo&DSTd*b*!~3uDZhjyEkW-31dIy(YeF4$YxkT=1d}RAQPD zM4#g|CuDxgQ@FUBIUBOCY!t#668&aFI>|!y=wb?+6>)Mn@^wv)83{g-r203nJu7(D zzA5T28pn`azy)&-9Tt8&64 z*TX__A1xB-4kgA6J^`OgiW+nO?_FvM<}vGb2z>MuRu=P7u_wBDIZ|e-2fAjH1_K$> z3c4(e>gqI=ioZX^tb7((iHkBfK!eZGsl|JU-UHMO;|RbO;)Y}%Rkv9 zG^*iTL4HX>sy}Cmo%_m?W(7HFVOUwhPu9SIP5iaavxrJ-F*-GbzIrA+>#1-)AfjCC z&9u|7N0qC?0sD!WtSNI;8Z$sppd5FSk0@IxiX2uVrNg|a4XfBMfU{a{(eMLc1Q&fj z+%1mziyggc*vzWfa+JO5HTFWV*mtgC_uuyNYX1KPl#7M?l{9Wq2du3sZgDR@6vh10 ziQ?Y&=-ZwD;(s;%4SiX+O>ZOuQvXVJW&LM&fBLp3&HL?hA804we%3k(R)CyeoMl~W z)&4J?8uIY?uj&Z@fRd;AhUUEocirFBYscx|z(Nz`)E7Y$FfcN$`-!WWr6Z55t|I*G z+IQVjY04LjB$5O;7R%+aISW#KG8>j84aV@QOUp1!)^GT>(|X*wmG2C!u!=i==2v+h z7s}u3_#?z%D9R@Wb~IuFG3jIGX#+o~8tp~P^Yi`OPUvw-Sj4kWjN6}F974J7n6nSO zKxv7MO+Z4sh@;v+^th0jK&7AZ)W|oi{DR#)r*09Wp*rn$V&|zHC!mzB_Nf$$E`>>R z5vxjNRVNdl8lIGYbc!S?;8snfdqtLdV(lmC#<PBpx_Wk0|SaN17&`N2%W0T(TXD| z%<@c*A!!)D-WK&E6g=7&U*50W3BbOHkXdCjnt-c;B+7YK^-FZoetGgI19R%vtBNf* zOJ-D4>hEB@!eoigAuJ#mUCB2O^^O%Ji%VJ%3 zG_U|>bE{@NKVZQQG=Seq9c~>rBKXes7qv|kDa+Ta(K<4LSKI5*?wpIXjU;o&g6{OB z9i<;k%CFcpoP;>&Iq|S=O+FLUdHRq2eS17hI^q*{B3kkv#)>#96?Gbjq0XfhY0o+Z z5uwzviv0Bn?55)<3MScZ5|<@uiZ?u_&TeSvP$3I>-b0Cmia7k@L$An}^N`Nsu%f1f z^9%#?QE9*9O$jmU7fGzOJWVl8OqJHOK*2!%;GSVVV>ZF*y~iJ4c-=81VZw?7ABs#$ zWdyZp<#W@uvWC)3s06@Lckl3Im_v(r+2>lvNzG*q+)Z|z{Ogy0!ycmBp( z1>IX?=xBN7#Kms4lUcCg>?(6PN<}{JCTtb!ygUYIY^GfHEVCZ2$z`!@hsA_NVvLSA zfZ|3KZsZoy(2VQ4R^)-bzP4yXYQfXc#TSi}nQzkbSYZ5!k&pIRob_WkS_h=4l&Klf z-1Iz?C6&(b%t@N1F{MFro~UYIa;=GA;)F#Du!acC@tP{TgzQhYCqG^e)wWswPUh335P){F zQv28sq()K%M@(SJ8|qq*w!6V_D1(PS>5uAQZNU$kIjeA~R!VLHj^@Kz2{=!8IIpa^OnJ4 zy@%eY&(7P;(8l`kZ$fik*=m1HQ$^W)o0}>eJT>xLsUGXd_aMb%UT_2S9(D$XhQWlF z-(yCQ+PQ6>PmAtgbu3m%a~dLAGfj6nX%RUSRU*SrCGK}KE@+GO=pPIbN?C)5EuVCT zh|BVo>p$DK+_kQv{29re>jO2>qAt8(+qAzZPIF>0X>~9(^c8{w0OE3TW+_P|f|Egd zBK!>XC{-VT#$uga$ukDQyJW z8K)EiL9qJe>r?Kz@7s;$_qnR+KZ6*nknUN%L+9jpdwYt|KB$0+?9rLK*T=0!=yrUh zGtUwPgJf5v*AI{6?Hkt=98`~5EAI>oJ%kv9FF00xxUSI|b3frpW@zG+>;t;4d<0{G ze)+`!w7qyou==0mYY_I~M>lkS25KHn_s#;H(E-N4Df1SK_`ed54vp){XoL?|`X>~# zdQ5t0KEo!?j>T4>h@FU*{Q)+GOoy^Y3Kz}FBM{mb01GyP?by1ahH>U??!s=h-Ul*# z<@w@3cTKPPp|7nlai@?MEse}AL|%nOvyRT83Lb;O7I?TTt!z`6^o!vl13W1267`=933JA@OS;e!2)_`P)0utK6z&N zb;?B?UftqL0v^`LzCQMEn)+srIkICT-X6HSqHjiDHzK$fE`=pSfuH#@{n6h~SrccSF0G$jEy5gvHT(93qJ$x35?KKL)XOjUPh0>pQ_wUg#+cCb|Hky(hM zQCp?`go75~an!3cGPW{%qnN zPYtac-7rlEnNY-5({S*}-h7$Ev8jII(Mc(y_58M?R5**x!l`LUgh8~RBi&wyc;?BJ z$B*%$ocE~b;6HAk0!6r-)9ztBY(;6KIw1jj43rNaS>y^p()~-^mYbCxM}}N{=IazZ zil@{c+e9)yr3b37AE5>3Pf|sy$Bq1RsZU+-T04Wp+WehG8Z*2!cTTbI3cPCMe?evT04 z{lFI1i<*DvAfCfOqJzK^4aUy|V@ROrq|N7DdEEEHzo83jYdo$G0h=>r$q(I>0M`{c z&Ga@O$}LvFsZd4!ALFn*va?egT{>Phg(Lx!5DM{VEn80)d|H5#V0_Ni5IGfxaD0h? z#~I=XT@RAft_o8_4tYM!8kcwdeAGfPpr;I5&;%LJ@tD?C?N^czjV`t*wOQU%dBY_^ zzm!$P74+5Nbdr`2W_PGEmy3qXMm=g{5*XXFd ze&BtU8g?&DkE~HnOZMxpr43|jq`h}->;>kz0H4QYhvzwOdn=$rw5Q6W@Gx=8R)mGU zFYpJ^op8{X)!ZQvXDq*P%v#Xs2aZN;A@)LKMQYnPY&GsWlq|lq26s3 z!&%E`L%y%zKGmm>2^!ph_u7noZs7s$+bTDfFd+DrfQFuV=EN@=xod+=i&BQ@?Q)wk zhs>;P3_JRn%B0+6{T9}6F$3-MF4gQ6BqrLugl5m&M*#pDhsU6sQwiE6UPUKnWfJU< zHUo95>w-F{3w!T5n7+cc(7F=lQ>U)ia?^+|XMqD;EG`s6%`8y-TDmm*&00N!glH9c7rcL)XKascwBbjY?OQ zeYUeMwh5DyMWNTt6JF+y=Ho71(5J?{#kO*ni91L2(viP%dkl5xfrd>o<1I4iC=kr9 zQ>Nd?Bt``6{Hf{P?H4oK5ZnSHhvui20Pi_4<)e?ynI|5{pE;P{41;g zi1{nr{P(}l!W-8vFp+0%k$_v$=UJb`QIEmdU_!G#n1tHj#8Bx?5G6feB&J|xW=Rpp z=bXH5M&LfJ2jw8yj7r@(-N!XSTg(iIqEg*$Gvy^#7H{1zJZmaSB38LxafaUEPXBG1 zqIF+h$w=GjaQObUb)$(Pw)%XZHpmo-&>pDY8%;HG?R|=N{f&~Sa=;XJ{xwLna(Fyq z$cCfjMXPZQ?7Lij=bDymfLKL)Up6I^6Z| zWGwrcz%PvN84#iBB@^@f5sG>-!)#RNEBIC$%%JoZX*~81nIcTI(-Wcjm^8Wm^o^_$ zqMOxsTA&*I4g9}#nXmpPAd!7!?Bw7~6C&zofKq4vF%xs{z7cKS-ywc@Vg;&Eml2(t zk4x*pxiMIRe~dB2!#!)u&6j?2t^4M$z}Un5wQr}wX4xF8dM~1A*Kuw|kr4{+h`Z2p z|KFHP=NE!twUTZL12x-ZL9uVajX}!Z5h9`SyX*g4MmgeGc9Xn z^9trhcDYszbLdpH6aU66fYocg^5_c@97!DZ-@5(|TuYj)x^9O57$9+oEv0kSt?YGl zJ}kK}AuPFF#5FIh;ujcyygD%4BfNyY1^z;I*w?nkvX_|F>IXS|NgFs~V@O3Af#K%@zWT-YGg!+h)^xLRsRgjyFr)@9{kw`VFQ; ze%SVOlw5y*E)si@8cKEi9EA+1;glw0EJ^wku1%!{9Z_NV+ZXBL0CHP*h_Tvt2v@wy zmVplseu+S>qfHJsy z_x^i`^VJ{l2|u#}_KmM9Vg&>i6P$kakKSNbys(?Oev01vfV}Fge}|F<;3o*9`6HY< z_EAUTVe+*Zab%}>^=w7x){iIp{8W{;9);QZ;{rBv7_){wQqI3QOwLsYvq#k5E8_6i zgDW@0@QGR2I1qSK?j*%%n4QxMBN9%LY0!OvhndR`sKR&!7l65pYiwY#h%EHDbgt`y7&lxv@ zvUnmp0v;0oK|VBP?dtrvOSV>>yr=LDekJI!aDobSwDe~8ex@^zF4`~*Ao@f@e(?6q zA9Cw85qy5Q-a7R@_Q~apw!|$T+3Du1dy6^ca1*-K?A%kaG}jV!O`XShYKZF?@KIGt zAHJT2NZry7?YxBzvE{xRWUiXG zt}v1aFT)TVk-?gn4RkOQdgeLq^%*ay@$egsY*#pU_3S=w5hO&y2F< zI&6Qj&%3s7dOv_ZNaQJm2`e$TIeG7Q(&PjIqma4B)1TFQ6tD;JUtQ4LSuuR3Wl2P$ z-cy5kj_B$%Tys|GFvM%p$M3m_S?mVN18+*Ly+8I!+AXYHR`dPSkE{8&WSPwDd^h3^ zD)i+`7X7+^D|A(wlh$Z(>%Y1}#3UHvL)o$+QkBu+y5JS*x$gJ8f!+ zkbEK&?MGW$zY7r0NmRGqHErE->C&Y3w_+i96u``NujE)}YZv{mrdB-VRTU`5M znZunpEaZzClc00FzC;Q&D0EgnM1(y5fbK1lyZfV=@GXEiiRTe}l>XkP5dh_U!uU@@ z!AMU;l0D0Ad%q7PjuJ0KWo6_Hu;RZZqqDKdaz=jazE`4Ely|(kwx&j_=8zaN6xJnT z{3K(rJ7GyhZ}td%x_yBZx-CzI7Sm=V_)f^N`?BGS?LP>ggEtD&9#fz-HiOO&MWI4M z<&(_q6B}@BCvs0@=lqPEYeKaVLYS+Dqck<>f#PwY@V5{g_M z#FHt4c*7o>8alqpC?9~3%FdG{C_w2YKW|6Up@(UcIkwzUh#xu}AB`*j`q(-NerDtp zcUj?RBvwg`tiXj6Nf0^>(VCUUo|U8}WRn!+4i8a0Fa;Z-5onF>>D_^pFcLbpk8Err zt<=Ssj8r%zq2a_fpNnX6bh;GaE|C^BloOc|VBlRT5ZyIh=YPW(6lXsii_Uw7NkF$5 z##1!TD2SS-+fi8gr@UB1*b;6!+?9@r-Puz;UbTu@z9Fqz1{Ko?ej@!%UY>^M4rBOU zxjYb@#y=%e+#wt}Csz|Siw4Ty&8FMBe>gpxLKtlH?CYG#xxWYvl0LYV`+Q~b>+v+k z`i1T8$LAGf>QNvoM3J)I=$Uy^emBEXKpFqQwne5e`pGHNRI0G9gj@QEv&PEy%H+CF zleOus7r`D9^MNj_4dGROKEMj}=i>G$rk=;uV?bQIN|iz9IOkv7p|Jp54Ul@Kvv-<) zHUyyl_TebQ?!ghF(y`sN&R(QRZuVA(u%WKde1Y5YZfzZ+`Vs4z+80u7PD?@#*6r9_ zykAR5zqk^I_e*@l;UP70o1|1s{OJ5&F}l?CirNFq7m*(=*S+&9y-v4>t7`I#?p)7! z&3W$Js&G^s+Mmb1g;AUF3yOrvkYa-8_V;u5ZxHqH!si_DS2ls0vxzE54il;K0sWI1 z4U3ykFbF*V#G_J38xVoVhJ6J zBt#&^3w$?z9Me(c*HYGpQ&tIc>AHQ0fpFbH%IMDBc)4HF!-YJHj(%Kyep+w#!Ud+D z0krHUpkwmhtwSM=O?UvI^=HBg*W-;Ur}DJ|`rgqGqY*D4e3zJWnng1eT$cGG z5^1a7b#fS6&_Btj6GqB=fwW6?^;=vkbr+`XQpy^#i-d?+Gni#7>=_+M!vx{iKrGG#e8zb5A32a4JK0ycT*t#Zm8&Xx{*FmD$okDL4P?turls@p&n!f)f{^bca< zL#H?(&_gQQi#5SLi&||&>XIQ&#}chP*Bv}%O5(zt2#sVV-#5|tTkG2&;Zt}RNMeX} z8|eH(`MoFo?k2z$C8NN=vCk;yO;=38**Ux5P1@IR)Bk213MAI?PE@rk=UROfZXb>I z{G=X?)x)h)tP#3-Xu9d z&A7C}vx>|0yxpe*x?1=8Tp0-(>P0z5KHp`1!5O9Do3qI7^`nUc(z# z=*iZi%D;yGCNP-h?gF?TBlQ1x@#kW!+n=(rVvVldp$P}c0+XBHqc^F`*#5ZNTDmji z>F&YZR%n*Z#7(Hqk;9~=HsSQIa&=r3F#DpJg!Z3p7TqgNe#JcGn+uak#j5sAviwf{ zLg6O7=*t05!O|Xl&*mPyV(XqfOV-wlhi}}jXNm_1&G2|53nEC3*yCaNB&q-abKgrI z0-z<+O%ogjD-qcf72rt1nDZP*^by2J{{@dgaKDSwvIqUxL$;qxr>DMB#M}2jezy{9 zbG*)=uh5$=ta|DxGkE-*O()5xz)`y^n^Rc3+{Z_5g@HE{^;>Q7m=TIs=t4C4t#b*5vPCE-%Ots~d-C0L}I!v=cJn0wX(fz?I zT$(~RZs4@ko(DyGUkb%abC_KgBam;T9eAAqrqc;1xYJWFBjd7XRe@6b!Tgm*)TIZ_ zZ$CCGt-~Pw52(b!w78joI0d==r{U~}n?chgHHy*K0S#_kpcVzfdt6LV@=l;0KMO6} z^@OH>wIxb5jv^^CDUn@+v?UO1X8}wL#pq_1Jq>2X^;y8427_Xfg06ze2^OT(&oGOp z+1**-+|#2Vo($vu!&p^rW6DH2?-s z3-D?tAqNml&p}gAkU(RgI>Dd;Oky2)EE2#cph*D;2H-PGJt6Ys*l*}8M??U{0xcN& zAVe8u9g(7F%<$j{LlguEKL{c!tUP@;q$KP^Ghzup+@<;xQ=WG*{rOB%bx($G2Ia4ZE5KSv*Dk zu3y~DK78|!>^{fk2dqmPIe%gQ-ox_+ztpsUR{LK5AmF3v`qmdZ%`TpNP>><&%D@?Y z|M1OKmJZ|K2F{dh@m2EE7G2IuUrXQ>Z{WKjv%kF@e!r9#{c=h6K@cYx!ivp@^Ac})$!5GB* zo9g-GsQ!e3-~Gc;@7QNJ?j6(4GCI&{^s|qkfSR|{9AOo5v!l|9MYmiD{pw)-?MZ$! zrX~1^cSeLOm{-uzljGwaDjvN&9!;~}aj7a_UtS;Aa3zOCzdfloPo9LpLFs*~Myjv8 zAaU~KY48Ece0UHK74f65t3IqX5M-W&>4yjwc)!iWsL4|1YHGe2_Gx)U{9JvVzw+!^ zmBvrFq^T6G#rOSkH)-z5sFh`UKThg~>EU_Jo-IzT5_PYyN5dH?;Psr)zbbz22-HW!^}2#W zMP8ec7IdpZY2^s+J!s$sEE+BgNL}DoAqsxn)GKI5aoVQ0SDp*r5SIQ*Wy>>8<#|jL zh`2(Z0XXM#SNPxKX2Cbm+R2lJf;Y1V%l!cK+$aaCfj|EFK(YVI?oY^#5&3WPMB+z3 zB-NrddS3|$)#=S>HVsZ1V$@%te$ok%*FJv<68K(KO`C-^`JLSs!}NqMli+8+Dk521 zpY!sYyX|U^I+~)f_*NRD!fut^;w9dk<10qJ0h*fJA2n8?UyXt4vb0Y*GN}37Cs3bT z)u4})OELE+RNP!wAOpzIB-aK@iJC=V(V4v(Vwd7MsU}`AX>*%TWs{%~ATw+BzL^Zbby18RzdCQ{3DpM3&aPC~#V9 znn8Gow;AhfbW5|!S1F3WX^A{s?94B^#<%qBTOOvUb&sZPqNug`~R zc6$n499~^46!%kRl^adhjS}TzfQ&YD+`2w%t{P{ic^MA8#PiW9@n}$W`s-6fKt0=3 z3kMwWp$^urIsb+F-Mbjp^D-I;mgZ`Za+PIjpfjGP!ZBlIw0N$(tBtkiKRC0}h{gEd zLVr2`^-=!*b^ZS~FP|eR)Bo0l`{vHJVtFaCGTt}tw_!9djOO%+!+Fuw=oKNqYls}g zX&|+PaFMO_V|N=UxIzzsLdpPUo@S!_z|{&r2~8gby7Iar1V4bIgeGRTaCF9(+=i_4 zxw24pH=iqtybl4;LSfDY3poZ8Qi9wMv5??Mj>r%~RobyosOkZ?mGOSQPzF6E%^&v; zLxj857!gI{{rbRp4@|zN0R|MIo=WI((9XK--r$ouDZIKG&XznS zQ<<_Lj8hQRnUKGNrz9n1dmREU->?YV-Pb6`waa;b^P_Ju)>&@=>320hB)1+ze?$U9oHj9idu zw666P!>wq=y|WU9+`q364F%0b!jqGAfkMX~+&?M}kI+1R#T#%uXlGt#VzbD^W(^aY zZYDNcH~|{Id)IUX6mg!jIL%Gw2D#;$vqW0FDG_sYEqdUHeGx~)VBf&xRwY5MIq$xy znQUa(M9@XfRLo)yBIy839!l2}==rD7zcaz$76{o{7%U?1@~W z9q(9gV>Rs7j`>6rc-;7rkU@q*{g3Br=zlp!K@IFhGEIBq)s|51|HtB?UTd zA_;5oLZ=8KCdmm80Du4BR}oVoHf+%DYKacewUD89ylYYe<8e{Y&biE6+%BnfcAZXV zS15IM8zI@+11PynD3)m{VZq9?fwn46BzGwQF|v^yqzCpONV=}jr0Y^LB1}uwPBt=N zasv;(rN=8_^?~H#7M^>JtaVwly9ePpUMgw0z2Dw8Rgpu_b&j_d3-9K-7bqQl1C|nz z1J@c-a9t?yV1w}CGL;PtthyX5K8gAF_TTI9I0IA^!D==TpagqCY=O&>bSmZ9z?{;| z+M%m1E30d@)m7^1j{0g^BumOFEP+it;Bt_I;ES>xSTQnD>_7yvfn^64eTpIaFv@n| zlMa)b;xjgqjSQH4SXt#&kj-d!C9zXk1(0p6sS2}uAm}Ac6*_Q{ZMoDGORB2eT<(e; zl~o;}K>UhWEq^R7ToZ&K)xInY!=!bRwX4dY3Yu1ae{ z2U2a{@w@shGC)@iF^g}N%X&{s#r#c;eR zPBS&gofP>X&a*s^q#Cf8B|4Tiw<<}}1B+9_8oI+P5s1ri?*qS?Y-GUXgPhB4y*FbH z!nqz)Z2`BvaOJzp_IK2SEg5!6QI>9VhTTn5=AhjQWH2Go5kAOJRXzk9B&ZYhlQy0` zgxuSeCDvtdS{D|mq)Jz<_$Ss#cc`-<=@;40tz$p8g8ke<_k1D)`d}nEH`%~OndGrb zWs)Y`q$1}!IWRL?@-ph^Oe!YPX(r5|rk!kLz~lzZ=t`Hec6WcSd++%)_z+2Ce@Qyc zW;fU6me0FuylwiRi`fMZb4%;k&2`--0q&yfa#&QVxvtA>XnC#cat8}nSL?dG41c_j zu1o4HcNzmLSGq0{Rju7}4F7C{R@RQN6>KSP1zW?XlC6kb!S-Ets$6CRC%93uacRz# zGPvl>qnJ4n>4Psj0cj3Vf*hzAEHil{QGIc4gOz6GvtH~P_h+khW>?F6*FYIH4l3r` zX_3p>&S5fk;qx}h5}&X0j=WfSH@z9}4tOrt=b-B%f8k9Bi-s=R|HT9QxSloS_nFa@ z4q7%*l_l=Cr4MSQP@UzG2{}Cix9%Ui#?r1H0ak?{6QU)udWu=L(|5!_&1eK^VOm%zJm^s?2}ZqCuWnO!XlBVMw!JC6v1C_ts~ zJJ87CculKhY0}p?ZY+b2jT@7a_#4;07z)E*K*9$VGPN%^!)y~-YNq5~41NVEHUw+ z*_Zhs4V0j`4N}`?s{Xi11P5-TgGO*@FMWx3wr1Ns;yC!`cjD5e{VEl0&ZWEUSAkHC zO7+^fb6~MZBAW^jV07dFm2C{FQ0`_(&!rKuHVQvPGg?;vkG*UEaT__(`?LQFo&&^Q zIM%S=-S#@cMw{CN*yI+t%>{=b7*G;rD;UoVH1hboLH_rvubPzj5+#w`cn>%)l3`2D zhnijQud2|{#xtX~IyR6|qlr{=2L$%2AalVP(R;Q%7&t6;U>DRKr^*jy92P z5PLZ*CCtUmjYfL(OHC3JeTQ5G66q-5_`T`?I3V z^XtnA;_148X7O^1IeIy9J1Js~J|J4dov9EhcV(p9FiCMj_Dkcq_m<;W8KUSO5daTv zhCsQHGclH3;$nhh^2D?gkB%}N8&`n8c-T-hqQ!PHsZH$&l((^uz2L`V=*NNP$|GVuH=v<35chPR%?_=IK6PTe=Rh4=%t@bsT7exSrACakJPaI_y0|eog=g~ucrYSU z+{y5Ba1^~hxr0z!-7!U9drWbpKc<+rK_)SJxmfz#0Y|3%Vv*Wxm73f*xzfw!#IA%$ ze8%tT5Kh^GIxB~j3Fe%5+<{QtH1W96glb2G;%bC?bMt-}owgc2iaxJk^W<@KN-xcu z1D&FaraI866$odSbZW^e7^}Q6C9=FXq?a7%l*E5Ym^MCEa7le~2c5QhJBq&Mj^apn zM{z-W$1~{Em{hHdSO%g^xfTl_s5b> zmHUhxZ7X!DMmQbobh@KuJQ+W4P+6<1q3DaBH%}gHh@`dzJhLIf?FkXhmI)MJhavq$ zqYFzU<(Eu0hUd5MX97dI3_z*D%)BDQ#Bx+#1vMKBA+^$R2W-GuJxmS5Xjp7Ji#wr+ z5RU+Ith((R?RP)iem{=YK977WfN|r7XL(%b+wI*+m!BHmfVy$&Kzy3!_RsA6 zQF90NM!;H4;lJ~#U__Wf-77&aQ$?HIPGO)*8Se~D2F9=A&ePZ_I?%1?4~8UC9kx+* za)(>5-yhHiOHfn5>xs)LSFEC(JHx0yETXiDg9xy35v42~Y@CARLPP)>=Vr>&5JlIB ziqO;v&~{kpOhm%XETHVEMUsn`f?or)5KHDe3f-v!eLw!KX!ZcXQD7at6~h~V{RWDu zIq-w9BdI>Q{Z@RFJNh2(=)1Y2AI=@cdc9Z#>%?l2OQoDkrS-X7t*p(gTTkp+Ejb;# zPRjwiR7-|f8`P$q`=d(>E!*FKpR3bs!D_)C$Mk z+=bYcnMa(}0%u(@LNj+$jK-26T?=_EMrqz4@wmJTkEBZ~vpOt{7RX5SfsDivkde3m zWc2wO$cq%QW62py@mQrXmD}0+adi$KpN>VQ=yc53*Dy_9%bYTHz z32cI&$e2JOi|kB!d7#~&-k8uenrm7AeNnN-se`B$x{c-V7E#?ipsKSdMo9>PRmV6I zDFO}Ua5VkV#n?LVAU9bI4mXNJn^Y&Z39pq8+LsP`BpdXCWY8wz1-VqYwss|gkf|a0 z?nrITv*p^GMOfRZ2~QNM)Ws1>hzJ-Xm7~MA=j2%*Hu}VA){)xI%Cok$UEIpW>~l~z zP8~)7@H%ojvSI>o?EB&o5rAQ5bsUM5EIZJOog#e%7YlqRhc{LZ_BV>dv^wZ8*IF4Q zeF-E-@<%R6A88Umn%VVAk}bKk>pV4TVRNmFU9LiImaA-H2XrAx*bFO<**+_zP4&1s z=PXODB6+4Z)CNkPe}SRqYxL7f4e3L!HBKETd)QXn%O19y_OgdZ2iY@$v33wCtlE{b z=Wrt)MzY*b>@wI+XxbI~tpoYjJbPej4J{#%^-x@`or}~shQ2C+HsR=Y5M~ZOd5Inl zTup_Kq?j=lkO!z_f@{!@Lp>Hi;H8Pz2xC3>0@!_o4{$Y&i#vXi@qsbc@c{);x=DR{ z$D+5;x}p!QD~_Ob#o#hYopCs|%+_*|TDe*&wGe9o|NhcRsn_Xx?cL->S7?3Ua1}A? z5zVN>!Tu|KIyJ{jxsSg6OJi?ck6_2<=)|yFe*1X+m~F2s%J;eMF%n)wAE79Pd=f9* zs2|a;#ngv8Y@I#O_wBg63)fO|b6D(*j3Z4$iNyI>;Ye}E5>Io$mQ^73JQh3SMa(Eb zY%YaEEJS7yXblm%@LYsOA;mx>^~oK)pal#TeaK*O1R5*`V}m<+K}HsUb3(~wo-USY zMpsz}BbLMz@?2&U8{ z!kUyS&mK*M>OAmF`jj&+;2jjB)09)MqArGvDjj`~zVwL0HR&RvPzhv4Cyn{1m%hDi zdn>3k&mOe&-lnX*g9njX>Wz$8YYm`D;^|GGdYLw~zXFHTa2SZjQ67_zWz<2nfytc& zC0Rwq1xBl+K}BGS=C)b5bh>|3x^allMqiRXTASMi-#jJEdvo-fXAktZ$I@^>vMJBP z-16cY+N6m?0v_YsBv5c18`GST>C-g+G}6H7!CjGf4^B(x6~ba4!ZJ}Gu$qN-g!x#k z5F*<)MAXk%S}4H^3@8c=a@Q`Z2Z&s!{Gy#4@v|E7=Y5H4%4rw4qrh*PJimq7N*8NKCIFzhCS8e?4phF96QkytLCdgL>{0l$Q1>f`l?i-! zfj>a}JT!lmPL95;TW~Eg;Ht&=!$|} zajA0`G{-QMhR>7{YaGkgI*M-{HCe-=8!E6;B!EEgp53vE6ao(twX--^j?V=4bPK@k z6$kkfPm+dzi;VJ!K9$ABCB9gn+(rH;j0@T8LTR2oFl-beU;z2m^AHLoG(0E>*_c?l zI+Z8@NCt(AY&R8Cc&~lLA|NglgB%>BQlzZucrT<4qAVdw^wg(!EM^PwC;A|N;t1wX zTmbqzgO{#_Fe3OoGb`&;zg#YYceHDbTbp!|P8?Y!Jr~52a;Z)nq5w%^fZwbhRwkHp zG8=U2OULGC%xtKX^JLaBL54NIGR_wKm@iIpQdg(979LRcRwinmJ&0OST%OCZqAH1- zD>7k%izI`}^2kME_LCx~ms<;f_uysI|NF=O&sWhV8N~JVW_LyIi``aYR zR@_+isz%MThc$#j5BidzeV|XZ>rmPv>ZS1_C~9x}?1rE>MKGT|(^;a)(CiO_~)1+*9g zH*5-MWC>p`pJhv%R=wVx=Gnu@S?O5e9+pm+L)7V_Fg*!CWh8fukcL6Su{^WpO3hxd z8$qH$6bW*tSrwLo{aQ@-lGAbE*-yFXsANHoYM`)*;o$Tv=3T5-IJ(Rryd_+Wm~N4x zBDao(1ZkUEnIOcJY-)T4|$}Hhn%*KhbBR|SejsLZc<5fZ_H|$ zu2xy9oL#LaFSMV=;#LJ|qnTDg@YTc01aV$hsDk#Tn!GF2AljF5imp&B%+Ie6&?Mhh zArIASN;l6QO#Iv+0bcTXSv+4Fn9>NrvEr`7%sC=sGHx+KEuN8tiogL3V{nq7m=w9v zKlYS}jdR?g$y{x6mlb`YAd2h_1U1hdmc|W}MHD8hn;V2bd1$e80Mv81gce)Yv$!S4 zb2KYRNaEHJ3W91<0LQ5!W;&KL;$msx)ujcp%5of&UBHIZwmFQ2c&tn6lTR;rO9_>| z;hpB$14~;d?l1^bO#3-kh=OHCdqh|+Z2{S&XtO%l8EJG8!FUW~mogO`u zazh(r<(6J=4q*}vD6kR7smTFeJ5aNy1u7lo5p^016=P%zz_*OUn2X?;!Y~dKIPx45 z7y5$e!jb2EY~CT_&3w`AiNCH*@6r`cyhha*UuvB_j3N+a4p9Uvq6p&Xmh~|JCKBWT zF{4i%+dT*yNA(On$)E?JxU8UW0I)#aXG=dh@+uK)v7tB~iq3MXyF(LC!zIblI*|88 zoaYM&o1pidvP0Ih0~Y<27|~&E+$e|KnxCk+Tk4zR7L1O5^()ZC-%B4dr zTK>tH!lz}FEiOhd#zFA5g)0z*KcrcYQBX7kwj^sO#qs_waio*VtPY}V73z_Fm3rinQay5DX*~X{NtLVh z+ON$@E!F~URZVa@Q$gf;FbgLaQy1KVSGqK9%K@9b&UFlG)6TMi!H~^QWCde%If+hU z18;8WC*Is}(tPbP&Lq=zMV~(7t#$S=GS$&q17p=>yrF8Iiyklu7qKopU;y?not)3g4p~}wQ6I~A2L+zYt4{FoSa#`Eh&+R91S`Q-GX8Gj~YjR?Qt_59W?h6>~?%-ZOB`_@ZGPE7Q>^!oKjX@L2~o z^3kvcK5MI4s^aQ!T8}P=fnDW9;fDqjP)z5%Sp|EDY|$UfL5;6Y?%)EgtbEy*mM@Rw z<;#n@G#|J?_F?y~#RZ&SD`%F*FBW!f!#a5DOm4G~Exop8Vs#omELtya3|btcb0}QZ zqBW?_3g;BK(c(aSBf2|wvH&dJXuf&&KsUc&=a+yt zdTwDTpICozHxg+Bzn3DY2B^KZ+EPxa}Cb&vn|@JN5Y`2T;E zf3qvzWlcuD$R6_R>+CkW`SfGH#V5a|Prfe4*PGjS#8-CL*KfDk{ks`0Y|lMX`e(J~ zzx1#1SCQzJUkH=Z#uG}U@{5#|b78+o(tpJQd;n`tk}tM*ce}oMr@sF``tPgX{LlNF zG}+-9Vz<+sbb)#mo?o2P&N;oo0+kSNKC?1uOWxXRPtfRTOkAM+pn`}^M| z^y-uE|NPtU{xDCTzP!5ni<)0uee=UN$$$RWw~3gEtE=Dr>FJZ?>AT(T{?*mh$B!Rp zAJyz``}XQv?3~T=;fiKnVJ4jg3MEB)wOc(cnB}*HXLpq>J|(=_9ydRh&zlefQ?oRA zo__fxGEkiI16bj!q$*^2JD0n8R^7_U_u1S0;Z-8`=l^(j_dZ+P;3${{q5JpL2+B$e!1P;@2dCzd-j;cPpgmdNVJ9f zJS1@+^4qt& zcV8y|c#@D7vrV4knwvN2>&;iy39mOVUc^aBvcJk-H-DRLR3;JEp(_iT?-@JK- zZ=RJ?lVm^fA>Vzy+if?C4?B7sW{b~$Rm^_PlmGby|0|b*f9$V|t0c)+t9<=%816q_ zZnjH$RoFn=&3lsSq`|=+`ow=ovty;?#A&kQyuz8>Ix}uoY~$~5KG3FU&DhWU@Q~N^ z`d{z^Mj`zRo#MZq)AyI5g-fz>A7a_@96f} zePB4N))yakT|aJr&nueK^EGdIC^;|nuhMt^k7V)bNB^`_GpgATFF$TpyLTXNQz#+% z_GSK}HRKJ<@MSPAou-a_D-fr(c_Pv6mYV+|& z!;eDN(JXy*$sb>GA70X&zl)!JSB}qp+Tvls^>^Ro>*EjGxn1PN`{lCj!jIM3D%DSW zw@LRdsV&1-SCN07k}WJ!9yj^Nzu;YvSaE6kdjH|?bC?kHDGBfR=|jHUk+}ZDiava{ z`gB{2U#8DqKRGb*@}|{wCEEvb1B~ENixQGY*aWsPVu(DPjQePUABo_u2N-W%pDgM8t>N%kG6x+rWF>Z||1*!$VA=h7C!YI`sa_ z9stE82R#7CXOe5Os%}@;k#)H>R~UAC?-;iG=)uzCzO_EQng&YYP`Wx2#5v~4L9 zgwoM{?SI*O(l9xy;}$s(4r2^fuwxECR%j3CneF@7)h5+DY<&TJ){IDZP{MneC{z76P@Im;%4%lB}o6Csbgx&>sM!UCSyB z_z2t+{$`v8E!M4AHp)CTvq5>N1$qF6ra@yXRwQ`#Bhq7gYFM7moN>opv*=pPtb75h z^7%&PnWBp>2~vXV9C#D0CoKbmqrDY+LAb=LvxUbVn5=dwN-*RWdhl@=w?H5mb3_UEltcv{S?UJH zN%SW4bmo0^ZE?0J3HDCX!i2ut`{D%6>8LhJq7&ss`Knxrq{ zTii@CU?xWRs@5RSnGVL+%aof=}>vG#yhKoIjO$U)>*>$=j!! zx3|{r<-IKl9p-5aMNDw?f-@OS857C)b32DElB7k(?|a5&4MEbOZXolGUCl(jwY zc2THlF(9=?R@d3xSG$KH>AuH`81-0b>sTnpx!lW{P=^dWZnP&Q1b4s6u2po3;l6!) zhb3|2Jt!k6Er193^LK^XYPlzEBsFZLjasM8_oR<>p@qc__j0Pyg|O`C%Gai%T?tFP z@PTR?s+d;_A_lJ)f>;}zKqS1E4MitLtr3YNa?#$KB#JZ?6Wx2`2|BFO{T#YYCV^z5 zb<&_EUCLB+ZlTT-Dh8~f2UB#*2))!nii0p0=vM{9Q>Qa$nqN2ByHxb8#cADlJrHnc z-GKKphK3F$-M5EW!VV{GTX;##ux(l4*`^=ma(G9=D>v~m=T>#I=%dXX5>PbMWipHZ zn(cZpOJHRe7}uaX7QZ^YzLQZgLK1nnLwxbJv;iR5-MG=2PkS z3mH%?Xkm8%7_Fs{w-IMZJNWZlACafA!z6)9ndC%aVO(+yd!V3_4m2B^$xjD8LRSL{ zI>0BVrVyHg$(a+?#b)OLGdXdj*$7R1Iq31Z-gY{fpS;q9PnmGa!syH$Kr<9anvKuI zmxBtQ=?64MMO)KVE-qIHOE`((<$Y1hEW5n1WD(fvEUf23f0DCnRah%+#KZ9M{@D%s z?8UHFAZ6S3lPE}%%@jf^Ngp*+hXp*F7YO{OQQppOM`yleQ?56ir+zf?1_)M=rk7y- zhdl-o@m=6r9;`(GAl@wf0}pbbWGBF)#_)pVJm~klm_%2qG*$!piQ(GRCQ=H)-4pbQ zQy2lyLu85NNCDq!Fi8}V!83JDku-wqeNo_8iGhy-FYr7O@a{xak!6O5{E7xD1zAr7 zymMMrIgX)M6Uv}cK#f^%@tvv)s>;B^KJ~C3o8x4b69nv+rl_o}K`mKtc{#6XiXuu3 z2Cac!OLFEr7!~M}yeg?Y!{Jt-$nzZG@L-=q<7Ln@c!3r1GL;ONY;OV{^-Bua!f41* z#?sKIdf!5Gi)to^qbLw`pCcC z_W8&E<+GCmH~-CXxq|UhOc`2jX(Urr!M`<#l?wr z#?dRMfAL)L`!~G%&3m8PGX1+p9De%`U%K@87azXs9iLuv+XX+qZR?q5t-0!_{na0T z^E<09z53#T6aV{LKRbQvhBIH<^{&;GhlY2&_N&p`FLIwh_G;m#XYYQ;;N4%!AHLK1 zC-#;4P1*FUoTUGOOV{=YtQ&mGUc_9ut+ zU1Z$=G|Ry_9NlV6?gTRHj6v)}*0{VxkUM@Lp1-nZ`2lXpG&;o+lpfBstkq-URd z{kQstHvHmJS@^HQbm_FWmi%Pw?FYqg&pf|-{Pjy-=C!-F?fTx+|M0-l8!jAsV*UGs zt1ll={_cSA9ajdg3?U?7Q#Qlm1BYColZsg+JK+%r6b+Z`I@e z^0BK|t$6j0`-|nu+n;%C>GjtfTYB!V-#BH-_1{^2%qN#Uex!8sU4xH^XT5Ugz5lmi z$*H^E^Ql{x-t&*sckcYC^ws}7;r@r$o@aey>66|^|L2x34_xy~zjEf_eW&!TJW9HL z?el;3{y%>7eb+w!_?>?+_P;;;#GmGcBcJyA-^on&-wA|{@YH zoF$u42PmQ$tzM#z{aJqfn>UWkVqJkle~`@iiIS0fKW%V9|M|czo*sQ-UR$@|Pucc$ zf_ZcH74_oQ@&1Ba@$HJA+dNkV{mTrVLa#wuc+8y9Jy0OWgHQ$|S(RLryWs3x!7an` zyl9k?^-QiA*BWIiRP_vF&Ek%AoNu)|I|uIpNYRbdi2|`xU?YE^B3Sm;q8aK748dct zqF%~T?P{Eh-S$?kSvz?iabbp1eTZPqmJYSk6AIc+)q~F-Dkko9a3-A5x3jm|HMb03 zMly>P%ldS(7y_sUC_#@Rz?|#NBcj8}mZP#c zRdtLU$Js_svjh%ru$3H#=S@-K7wUy&2acFU)Zya36kw9NWm4F*iTE>i*`{#-tZ-b2 zxD#99NdKJ*oOlZDlQdcq6=enxAaxj%4}?n?UZBpYqV_UwvjH_rWV2ZRJWAii$Y@)(-~9pvz26ZF*D z4DPlx2k#h(3et>46M+m>B z)NOALoth`+dp|E$u;Dsg>!x(mRIzk#OWC#TobOIgm+U=IqvPq*NF+JatN7tFUAK^A^Z3^g%t zEBaR7v+ee$ZW|EyY&1;h0##vWkaKlky18Uxur*uv%$bqk&mJ9es^%{HpYGklqX_3k zd;KRPnT4ZC)gjBytRq(|TDGBkIk!@p+v63^W1(#~FcL1N4cD3rWn{FF@MqjoS+CH= zLa>AYcIv@;w>A=pOg-#bR3KaoVg6`=l(j5s#LGxl3cU;L7cYbrGO4+B&$J1M@wG+& z+`5t6@Gt2Y9g7aG;^LwTWO>E)Q1W_EPr!xdpNjAj{f+ne#e^Y;NH^^1t}$IafnXaY zz!uz6-M7bx?^Z_%J4OuGvta3hNe>Is)OO(FmOVR4G;OS(=w4CJ%@i%muApr~Jvy6c z#J*t}maOME+^d%$A+TXW!FVf_LU}BatTs67M^HSfiYhNhGR8Q!wMWHRb>*I4Mto89+sZ-rxgA(A!XfG{$ztk*f5)h`<-{1Kz#` zB?KA!kJsmLcnJ}ssdyKVh?lZy0h9!UG+GK18ibcoM4AKNN-AxY+P!v?4=w1y03?rV>S> ziZ@SVuuj6^l~;_611r$5;Eas)fq@hh27M$6#wF(%1u<0MDb)Zz;WYpTPz&%%CLsq9 z45L9)P>_N~hU(DsQ^X|J0cj4vhZhgSPjJl9G_^HAsn``QX`55K(U;pW;wqc)WZ>f>-JlSd3F%fv-&6&u!DU+C-Asa*fz} z4cB)$x9;y)xy7DyP#Xa?C6V(=b~%HmvscEnKN_C4v%@=h_$X(6%kh$BPY>@9A%mKg zfn(|S9V^SWRn*B)S)UEI6-Ff%X4LSNZ4V32wRfa*cQgDQjZlGBaVtIZM6>k?Ds3zm zn70q?ybRp{rLR~ckclBhpFq+qxwRnNV<<>Y3q(&`56TSPvvq2ONh39ycBzD66KTv! zjFAV=Ro$|}XJE%G{6N}4!i(5XAPGjH_sDIKXRq)r+5||k%R$%COU3C*LrMe{=1R7M zQXntc<)9RayB3y1t+zj+SJFHqkcqZ2;#=5{5#I~`gkpGv4h0i5BL$RQu?Pxl8pF}^ z5f1Z%Vy5<{n4{#{qee288!Uk%%~+;ny%@xq)8Ib zIhriXx@2pjX{rKi>4qv8vLtKTfL^YSS(R~n7UojkpY_Rx$<5@9kudHSF4sU5lW|f3 z@xCc~9_o)j^)n=V=w}9l41>%d-B!ksi-~^b5EM{zXDdh0Lh4;EI*+&I zy65~piW{y~My_low5uMM`*T$=0 zdPb%36RI@PLaX_GF5Fyd1iwsWsm)c)xMBJ*5l_$5OpOw8udAh^4-4>^C*;cR_8jiA zr4_CI|sOdVGuZJeiX-3;IjgQIqTW&~6T^hn8V zV+5Co;MyZL=xBuGC{pk?Sd+V;M$EX7n#R3ETngZ>pG&tKYiSDH5X_5B6mP#r%Z4^3 zp?w>QNYvSV0C0nw;Ac5~u)pYwXCdkpPZqXW|#`*X; z(37b2jqPfJ-QRSz{TWTsu>`FoMupu9=T9I58$2MIx@wX?1L!06DYzD+e`0;H=Hqs@ zUMi9B3vIB82c^If?7~kZKZLJ(+{LC`yP1UtZN~HxHkjbE$=B9gB}Um~V9lpP)v(IL zO}sMQ;qR!Eqfvj-jU+fgvQswh0s>?r!Zkg&RHAFaiaVcNDP4Du$*frT@rDD>i3x*4 z1>Hfb6Dy2~&A8?@Ja-$24qWr%a+pd!-=$L+qo2g!1c&A`@yq;PDgcG694F zE@0VaiB2xiS`w2V00lh-Wd+6sdJo7A45c^2H=@$I^=gD*;8s*ONifEcGpBeZwU1no zVb1UqRB;K^mPB`;pGDs;kLsMpnxZ1G8f)-6tJsQZhytq!y1;XsDH>si<5H7QDlkZ= zY8FO0r|u(L!$+zvf}jGPE3;!kP zCkyl;lvVLF9cJ6LE^hT5-wSDLrX(q>#hxZo7vO;a{`-gYEabxhL{Y}?Wd!;}=qkS*Ch=%+yI0VZ91 zlhfe9m;zPM-GV7uvA0c8Yk~2BE9$O47X06uoH|8uFXSZahM)-=XE}xXinKw8l=S5bFgy2FGi%E{^UA2L ze(17dvN9l#H=ux{+q!M5AmlmAG!%M)bt(Y;p}Q#RloZ=0`|uEBAE+|XPEA6Ui8pVO zs!VbRr?nE(n*Db%M-LeG*`aW2Nk*MQs|)TK?X5(oV0B|EMDtV^6KWo%5w`;K#@v$H z*bMAx!hNfu!5-Tj9L8;q@^rL`fqSs%Zigh}kN4;LM?wJ1BUlm+-nNM2x#c~|RTjI~ zBz@J$LUa(%nO0mk8pa+%-T^fC_Kr|$IqmirzjZ zTGGh=f_E=8!kW6t3LI;jvH*RSMc|04q?nGtg3fCjhd7P20#E-$_U(9WP|N;;e5YGo zM=!KjRd6dc->aKY6`>Y)WVIc?Se^7}r5jU6hkIMC4=lqSuXav0X{g&q|6q8L(GU(S zdR?`>vQF=xpJ-S^wNd@RGEG+4v4M(FtBwUo#cCuI^lDa(&=YBkw|z}u?l`fkHs zvv~(Gu&Hi@Y@*iFjc`sW90qwU+v&`LB_DM>ve8afKQWZ?GKL_YBqD962xXDHK@V5h z<^N~z+I!nJvi<-56oh-xBv^@__ahG%sZ+ECc8em--rakP!r)`*Xe(P@Np_Q7?03KC z%#ajGQKD?Aae~H8Z9axGhcoAQ9*mt+tY|@#g^z99wr$(CZQHhO+qP}<9`hdCXYN0f zd7aE#@14$0?Mgc7u3q)6;Y?>aN4l?fNSqk1+BE19@V)i**Xl=YthLHNu@?K&-AlU- z@OT+-{3cMpb-Rlzp$=QGZwmQOZiC6O-%URv&4F`nL2zpinr<;2J$$~`Wa;b5;Z5i9 z8D={t+Y2|yiHvmlT$gm&TLk{x)){S)JA?KusS~>g#y5OK?j0YpMD6smE99hJ-Sl_m z$b+Agd-6hmc>43!ZB#|AIrzR2#r+UT7fEA$oDK#WrpYl2R_cx9(;UF}P}L2~;ONt2 z4jn{ES3Iz6wKhI-vp>fjXnn${tA$C>bT%(vb5ygj`A$=-gP9I^wDni1N^C%C*5NxV zTB&QKBe^?bs**amYudNO58>4NH4odIHGPbh+(f_3CAkHj#*Hujq&n%`yzPq|G39q7 z>DA9Yt%%bXoo&*%m(P}F&C3s!%4^<(^0rm5=zRQd>xm!=g>Y5Qljssf}qWM~p50g(K+_)m<+JD_j^u#Mv!4eeUl33t7Nnaw^>BLZ>_23W24_lhb`1m_zVT`B~e{&IJ*mOQS@7eUr%Tfi#l z2-%B@kIRd*UxVj)SX-Fi3&!T_xbl|S{|^CnwT$jC&3!!4OVRkW|5-ZYPmsC3QDQV_ zO61)in$gBoKhL|*Ro0XA{AMX(WZh_%^wllK!S+P|2agD)>?m62T_v-8;fjb+j@?T z!;-35N*m<4XGFMb@=ot`a_19hXu)Z)X(nm_a!5kDfC$tozdbttG_B-7w>~)-@^N#% zN1Lg9Hv#)-VKFOEB)M=)8kPif8qo&fILk2JV5}jtNwcqfU6mdY_m>mpBq0hzEoC`8 zKt0(di_C;4Z zWVQP~TC|@mI?#TzC)JYxcoABFCAqnH%&vq#^zdrx>7hF!&ie$Itv^_oMyMj}Ziv_U zvGaT|hCoj3-cD8>sYn*9&w27qxFA^9>8I~EYVE%J@Wrqv0ROY9+y*tJ3~CRdD4@2E z-KeUzSmg`zX2e#l6WtTX6>6#W*ND&ATD2}pvlWUlXwlu_NiDM_S=%2^EALp3D8OV4 zZtPD!cQ_)h^(3ZIprKTwC1$NTm*vVyncXlExCt8!;%OF>gD<7euCDiLH=XvU*x8)z zu6|hh?CXx^y?8nMFa}Hwqd0lFVZ7?3b29DWe5x$0zPo(d^krYa!{k_;7|5zYlYau1iIB&~51}N}E`$Pl zOR36K7IrbT$eD@~%xNWYtMV(RPQ004k(RXUFZ>*fO8&FoHw6B9!;qn}t}whhFs?Df zdU-TEPiJ4abbwF}$W{TL^zGZ5X9g_geXfAbbb}G*nFI78VO>L|Yc4Ja6(|6mL{K$a z2=uZO38lC2K`CFEquJ*MDX*V(F|qLpSJeb~(+)|@N$A8=6%KNx3yVBv>6Fv54Y3s5 z1O6d#CD?_LbxR34 zkSPDLU+_22pVjVZOP9Z=9NzdzYC+g}vqD!Z2`u2XUDZ69b9Fhd4E;jJ^-|a&g6*G8 zV1d}-V}-G9P-yapP9-!63exC6ef9hv6K3KB4zcion-6A)izCm3a%M<1s zG*f?1(w9|p_O2JH)lCc>G;GWfdn>+c--c-WA*UD6^!xpjbqvz>#^dQ2tS(9-@WLPT z{V?%j%5N@>-q}V3MA;7**El@|^JMebp?R{uPUs62P*z*Nc-~3#j_(i2LSMaP#11E; z(c|ytimNP8RzU@=S3e!6E7Ie|OfSs)?)>BKeygab7*bocv$~BIlQ-D2XPCc!QjUgh zq!E^Hg*Faff9AhN8*gU8cl=_WdB)jIkl<#bY`%`3%p804is(A^t4_PJxJzxsy6OV! zT4QE&v9pob(rxXewsrp01&_s#M)a^|q-ySD9dVyJ_vO8V&>7>0IxF(IkDKhgY54