@qingtian/qtcli 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,11 @@ QTCli 是一款基于 Node.js 的前端工程化底座,提供了完整的项
12
12
  - 🔍 内置 ESLint、StyleLint 代码规范检查
13
13
  - 🛠 支持自定义配置和插件扩展
14
14
 
15
+ ## 环境要求
16
+ Node.js >= v22.14.0
17
+ f2elint 4.7.1
18
+ npm 10.9.2
19
+
15
20
  ## 安装
16
21
 
17
22
  ```bash
package/dist/README.md ADDED
@@ -0,0 +1,198 @@
1
+ # QTCli
2
+
3
+ QTCli 是一款基于 Node.js 的前端工程化底座,提供了完整的项目构建、开发和部署解决方案。
4
+
5
+ ## 特性
6
+
7
+ - 🚀 快速创建和初始化项目
8
+ - 📦 内置 Webpack 构建配置
9
+ - 🔥 支持 React + TypeScript 开发
10
+ - 🎨 支持 Less、Sass、CSS Modules
11
+ - 📱 支持移动端适配
12
+ - 🔍 内置 ESLint、StyleLint 代码规范检查
13
+ - 🛠 支持自定义配置和插件扩展
14
+
15
+ ## 环境要求
16
+ Node.js >= v22.14.0
17
+ f2elint 4.7.1
18
+ npm 10.9.2
19
+
20
+ ## 安装
21
+
22
+ ```bash
23
+ npm install -g qtcli
24
+ ```
25
+
26
+ ## 使用方法
27
+
28
+ ### 查看帮助
29
+
30
+ ```bash
31
+ qtcli --help
32
+ ```
33
+
34
+ ### 初始化项目
35
+
36
+ ```bash
37
+ qtcli init [options]
38
+ ```
39
+
40
+ ### 开发模式
41
+
42
+ ```bash
43
+ qtcli dev [options]
44
+ ```
45
+
46
+ ### 构建项目
47
+
48
+ ```bash
49
+ qtcli build [options]
50
+ ```
51
+
52
+ ## 全局选项
53
+
54
+ -V, --version: 显示版本号
55
+ -D, --debug: 启用调试模式
56
+ -h, --help: 显示帮助信息
57
+
58
+ ## 项目结构
59
+
60
+ ```
61
+ my-project/
62
+ ├── src/ # 源代码目录
63
+ ├── public/ # 静态资源目录
64
+ ├── dist/ # 构建输出目录
65
+ └── qt.conf.js # 项目配置文件
66
+ ```
67
+
68
+ ## 配置说明
69
+
70
+ 在项目根目录创建 `qt.conf.js` 文件进行自定义配置:
71
+
72
+ ```javascript
73
+ export default {
74
+ // 构建类型
75
+ buildType: 'WEB',
76
+
77
+ // 解决方案名称
78
+ solutionName: 'my-project',
79
+
80
+ // 构建模式
81
+ buildMode: {
82
+ development: 'DEVELOPMENT',
83
+ production: 'PRODUCTION',
84
+ test: 'TEST',
85
+ analyze: 'ANALYZE'
86
+ },
87
+
88
+ // 项目配置
89
+ config: {
90
+ // HTML 注入配置
91
+ htmlInject: {
92
+ head: [
93
+ // meta 标签
94
+ {
95
+ tag: 'meta',
96
+ attrs: {
97
+ charset: 'utf-8'
98
+ }
99
+ },
100
+ {
101
+ tag: 'meta',
102
+ attrs: {
103
+ name: 'viewport',
104
+ content: 'width=device-width, initial-scale=1'
105
+ }
106
+ },
107
+ // link 标签
108
+ {
109
+ tag: 'link',
110
+ attrs: {
111
+ rel: 'stylesheet',
112
+ href: '/static/css/global.css'
113
+ }
114
+ }
115
+ ],
116
+ body: [
117
+ // body 中的 script
118
+ {
119
+ tag: 'script',
120
+ attrs: {
121
+ src: '/static/js/init.js'
122
+ }
123
+ }
124
+ ]
125
+ },
126
+
127
+ // JavaScript 代码片段注入配置
128
+ jsInject: {
129
+ head: [
130
+ {
131
+ code: `window.APP_CONFIG = {
132
+ version: '1.0.0',
133
+ env: '${process.env.NODE_ENV}',
134
+ apiUrl: '${process.env.API_URL}'
135
+ };`
136
+ }
137
+ ],
138
+ body: [
139
+ {
140
+ code: `document.addEventListener('DOMContentLoaded', function() {
141
+ console.log('DOM loaded');
142
+ });`
143
+ }
144
+ ]
145
+ },
146
+
147
+ // 环境变量配置
148
+ env: {
149
+ development: {
150
+ NODE_ENV: 'development',
151
+ API_URL: 'http://dev-api.example.com'
152
+ },
153
+ production: {
154
+ NODE_ENV: 'production',
155
+ API_URL: 'http://api.example.com'
156
+ }
157
+ }
158
+ },
159
+
160
+ // webpack 配置
161
+ webpackConfig: {
162
+ // 开发服务器配置
163
+ devServer: {
164
+ port: 3000,
165
+ host: 'localhost'
166
+ },
167
+ // 解析配置
168
+ resolve: {
169
+ alias: {
170
+ '@components': './src/components',
171
+ '@utils': './src/utils'
172
+ }
173
+ },
174
+ // 模块规则
175
+ module: {
176
+ rules: []
177
+ },
178
+ // 插件配置
179
+ plugins: []
180
+ }
181
+ }
182
+ ```
183
+
184
+ ## 开发环境要求
185
+
186
+ Node.js >= 14.0.0
187
+ npm >= 6.0.0
188
+
189
+ ## 作者
190
+
191
+ yujie.guo - 初始作者
192
+
193
+ ## 问题反馈
194
+
195
+ 如果你遇到任何问题或有任何建议,请通过以下方式联系我们:
196
+
197
+ 提交 Issue: [GitHub Issues](https://gitee.com/fengrengame/qtnode/issues)
198
+ 邮件联系: 296963166@qq.com
@@ -0,0 +1 @@
1
+ 90054ac4926cc6e74b2c6837a196d15b:b9a50e52939f02363d6e2645ea95f71f08513b00f7878b872c8d0403c7722cf09b2c8a935d909fe919f9cd3f53593e9835b28b0297d82bda7c30317b9e256bc8faf5244b5a0dce413edfb339ac6c0231dfcdd71953612da6d2d3bf0e6fdceb26c892cb7d9f4386d41832618ccea37135c086a8fa2a0335afe88cd45e9e441469c233914b6c606acfe7fd761cfab95f9143e94f11abc0be233a26944544c2fc371cd31ccc508c366f068c23e06357a6ecf49357cbf2ec4b286ae5a31f637b5f1a9ecbe27eab48ef5d9b7c58489d0ab434bd17fc53b0ce9498615dfc642841edef4380c78ff3a2f271c8e48c5f8fb9a745c1078e94a3c39d996a63e9fad6a5d293b2bb033514aa2a3662f9d5af102f55e3a84fbdb358987164fa6e41de7cfa9c38e36b169b4e537716df04c309dee2de9730439f317ec27e043517f682fe9b43312d3de4e1e61e90a56c28b4e08c0d37d0f9540b134d8e0e81d18def36a1b719dc301b9c264b4375e4f04cfde4d24b08d367de6d77f3da2441b621bbc2e8a95fae1d3489bef8c15ebb787d916b6c68754975e23de59f21972ecc3ea5ac6cbe87ddcfc7aa2f62197a977220e43d3f0e330ebda1df8657bc5423637c6c286a2198d326664d4f38d08b5432333092857c9ecd06b9048a0bf731709dc7e2c4ef980c06717706f71ed6db6ff62b315c3c61f2c266edcb47e8b67fe5bea42b30ed2ccc8e98edae643f31dc71aa4f08c6ff73b6b45de3f5ba5c421518b638448c6f03372bd370a689e2bedf97025ac8f6f23e9dc441e543ad0baaa60d4ca9b5b6183eb69f481bf885b9b4ba4cd5596a2e8f10ff9bc021f298a154905d46ff193d6a264f585359dfa341cdaa1e12dbab7aebeec0c97783324bcf55f72892f61afee62fe884d3f62a50e3a9557f795b0c7ea969eb4d2e365b6d0806a63f1e00453fb3f7088fc9f251771416f7418999d93b1172139745b38eb0d9a4905735d815355aa7d955a440a9c3fc9fe450c0c50d83efbd51c37cbf9ee51732111495a89fc1c7b09c0f975b95d38960c4b4e16070669afcd0b776365d811717897343a35ae93fa3137e78aae653eca52bf8f61cae103ba9e2c398b52d054720e2b1e98174894199bfaf862a99dad4276d52348d1d1068b5321f9d0c6469a0cd36d828550a465425a14625ec22898f269143db619e520e255b0e721115782440aaacd36358aa89247ecdbfafa31fd3e19f597024a8aa3d5e2525c06d41c81cb5a4c67e06b1d6d12f66f5c1c796e12aa2b91aa397521ad915f878130560422334b8af4c312e8cd5ca3685c6346d63bb34e26606a4869abfaf7f48482dfe80d04fa43c75b7cc343ee38b9ddbe949c58d6b5a4c38fcfd1d5fa706b46fc4f877303305ea1a1a97aedeeadc145038144a1ef421b97ab2639080fcdf61c62eb81cc0497986a20b8dbb1eab2fbc2f0bb092211ce50c6b09545d305a7e045ce9853484b4e6b4ef23ad13ecae7b349802bb154b3c777761e8e7f30c311d51a04432829f8bdf6b7a801cb59b08a77eeacae9fa383d05c3d673aea8ad6ad6d44cf58bf48372905d88685d17842692b407e3de6e0ed103f5ca964d591fdc4fb5e658e0eaa5a2e6b956243ba95ffc6d762a4d8c52b75dbe6ce454c9ccb0e080d67d98463edebf9b09b727911be6240366c550d5cc5c088aee3fa188b1db7ff8d2ab25bcd733a25793ea50508b6eb7af9c05c4af2d99e4f589db37fe1493148ee41e838294a9077a1b6877851d2e6bca408165a7bd8379cd0cf11baf678ac954bc8740a38b23c429435dd796b770eda553f6d708378a4a355c6677dd26d35e44587b9ad1231d3f76d6ad6ad7ccc34ccb6c4260501faf37132d5030e5056179399673f0bc2d8e5e07cf247338ddf66be2003921c875489839b2b606fc912d2ef5c381150a95e37011a33fc4794d348e36281cce791ba433675f4f044b992df6b185431c88521969dac784351ce777e1d7ab53c356dc0c2c3d535bda359f6b29e72ae16de283bb2b9dc7739ef65eec765b605a6a721fed61437602e403103bc5a83bba14595fa4e03b6515f3cc45c1f56fb7c82a83f3fc7b96c0759b0ef6737470ab1ceba2f082d60ee6b64614fb6837dad6c6cb9b0a0a058d0e328670f402ba01699cc0123928cd177719edb1ed828e87aec1db5570af08a888785d383ec89efea30931601d5626a01b894181b62818c59825c84b98365452b4d5f603290b2629b3ccea18892173f2f41eae4e3221e4cbbac4120b127dbc7a776ab8208084e13b695a4c9bf310859c90bd8a33a94e1e5a9d321b9ecf21718946ade8755aec471f2fc4fbfcb4124140884a2b88a30dcbdb76c4c840d20a731e1e955417e2916e13b687da9999fbded03cf5571c2cb651be372f21840803c12e3045007a7c70a151c13a8b573d7566ef801ca23d21d9e05818cc503dec33fbd236b93029e3b0c009a6204d392c034be0772db8bb8dbb99ed4613ae63aa842b2313bb5f1f4c38ee34cd1cbcf9c50a504a70930915bb7da470639289954e20ea47833e15fe383548ee13f933bc81970b5931e2a216b027b45a96951013e136d80ac7f3bc031d1e8dc679a0218d658a50ea3791547b0712aa8b5a9f8c38fddbaaf286eef3b4879e944429b7f79db4f1906f48979e4da78d02228b7ba23a909f75a920c45469ba1db67d0ac74d18543527e5cf5cbb16be6d0b9132f773e86c078a130da1c9d29ba8bba097012cf3168ceb1b802c9d9137f9e2ef17fd8fafe2c47f0ed36208809af8414cdf9bd9c051a4be30bcbb4771cf5b028cd729b3ead60969054c06fedfbb2247f867b4dcade9d026fc4258ad9cc873b0a01e3ae575ff1d2e9bd71107c9fbbdc961c8b6383bf494f5eb27ab601a6a5f69f1758bde579c560a3ed5d5617c6c116f6f5a91183d808bf2812a9396272f4d6e3e2a44f529d71de5f4a8daf3d808c6988918fc7e7b333f244be4ffeb6aff01888a07a46dd2226192cb5e82a9d8d406daae5e82a16a849257001c8bad42fa3fdf2a01287c285f8c5d1959e5ccc87d477cedf7acd7536833e8b93704d884c22488353f86e80d71665fdbe9930afeff37b10b53801ccf6dbca2f9958cef7ccda50577ffde8bd76b1c5fb1110e99dff4e9a25e61b8bbe0b8dc4d543454d89185785252085f8fd3bed6dc4a22f6287c45c2d906fa622a520037837eb3874a86afb51c2a3b0a1e87aa56ff272ab3c6995dbdd109001d77352f39268548090214ad8884f66f74a9aefdb79c1d6fe11c2e1de5681e99266191b61db5564e7bf3f722856b49c62e92877b3d0ce5b774c1020ec226c8aa164544a97790a9797062019ddfde15535f40e0d23c058761547eb4edcc2d6d52a3ca3abfc8949c7affa8203e473236968ea8072450e97cf5103a228a6c76c30a6515aec69b8ae387df81a649fd7dfebb5eb3f161b28e548851c8cb76267d7bebd250805043b09cf96b15ec9cfb12b9147c936badc1fbdd10a79ad024e16f7b362c93e949d339fc07caba3963b993e48a4b59cfa9e8d73ffb5b4f61eec8056753dd247a14ec629a87e1850996c10dd9101fc0f23c4ee912608697acacbb86ff8978aeff24c88623c3143fe3c19e950b13beec9d6b003123cbcc0a9ad360af796f817008a0fb99bd7c11929f8ce7318b8d63fa1b76595ce3e27cdb1cb358308044c5c427df8c2c027abd7e126ced8acbe8e8425f94057f6af1e55c51f943d39fac8b0ada31d5f60348b751adbace59a4643eed814634e1060878d117d39c5f278047bdc28bea3c1f2302a2753e4255f4f13592df2e26734351a6b469ea4e5d2cbd9533b1a3fd85f48b2cf4ed08fe7efa26f8bcf3767ae90d022dd3c244b034ab5c7a5c8def11b2f8f8de469b77de9a73c11de8395f42272962a8d43decc85ed9e17c8def5a3dd13b11adef12bfb73dc15ec8791ba4e48e31f5ee44139c6838e35525d9ed6e932d5a4447024c91ceace20ceb1ec0dad004dcad4747294475896661401b3cc03fc1017ee0e0316e0e075264e0ece97e91eadbe203cc12e29405126a7e0f4ad7979428e2168da00f7329dd86a6cd83cedc3439c723d5863d4f2d2142fa09c9a84da01a4dad886dfca88b55e9faddbec68e83cfeb972256d505d93254f05a24e3545fbb78d997a748dd34cfed5383b7dbde0faa64321959d1c60ce59b7d4b62f0913b53447b322a28958c249b110ff86726a5a51910c4e607f0e15c9c53958a79d75bc46115e94bdd7464db28a7b03a03414c2379ebe6d3332d377b603d97c0c2a20a3cc3279bb0ac126d9f91f502c4d9e5f4ace1fb3b11a11ffc66daaed4d18d59dea4f468901631ff3cad6c8d304d36dafec341e511d7f53f4053824f294bc91d6715c69f70c6cddca028b9445a9c88d83b2c10a84934cce3b8055a71ce15434fb1156448c9220cf8b124d5528722cec5eef07f742c22415a9d9b4cc33641f46fd92b17bd8f0b11dccaca34b6125fd079fd883d240ab31040afe48d0d9776d2f9f6b9f2141503fcf9a2afdf4674737d1d870669d85ad5dc935dbe92d4323e44527aacf7ea0232376038d717b5e7354efea486f6762d47c077b073cb9ae8af6d17db17572c5f22b422bc50a3d216a212980a22085796155be48f71a241888b97e33c234a81b5bc1e915a0d071668d1a884af5db6cd5fd50d29ec223d3a76e4fedc13214569108891774d6106ba6e4e3ac1cca98a673b41d48037ddc621607972b0dc7c39687959748d2e6005259bd7f634d18a282387fcf7df105170d6efe92789a80ad71d7b3a53cc2f88a10115e4ba15f6c472d53c08661371a97ac3d9cd22263792b53fa65a695bd9653103c87e2889ebcf537523041513600cebf19df74c5dd58bcae049881bc1637e2b6f373f44f0e6f18594e9c1ad3ecbf3c9ea8bdced1d6c220b523a7f82b1c51657cda9352a550ece9d318a0ee9d091aefafbba8e2da9547b5549b01567eb156534128508ee28cf8a4fd22a1a7573a1df6e749da0d2094a722fc54111844aa107d0e3d10eec7572da9ea586570feeb48da1a778560c78b495a8074e70f9fe5b4bdf1a408b1248d37947c6c2d60bc706910f9c5e650933c6b1cc8942f43763ef5b87925c9dcf07cf7a878c9a79e1f295423f86ff003102ec136e520062cfe7604bff07287598697ef40b1d1405677449a515d9b3a1c6138919f1856554f36d53b1365dbe8f9d9d22b6739781bf0f470dce93940c8b4aff048a8e53a4571d2ed0614b21e0daa670e8e4e57d98ad96137a0a2dad8b81c5eba96cfd155496d23f27ab6f28f702a053be6162254b20c182b86e9f01aa618af15d0e3bd712c82969e3aad124a719b3c6c1b935c12becabf221dc0ded0f49a7d5854202be1b67af649d9e88bd6d0b2c19f631ce6a7b51d0e5da47b2af880da2007cacc5260005b5f2382aa47ba33848c6e4677485ad3ba20d3aacad65af59794394bbef1aaf19f441906a235fcf0289a1c729438585f026d076a58c5796e18d455734253c9687c3cf43da6f91ec48c9a56d4613d8fa6dc83fab963f91a2e56ac02d683576b2bdb1bbf1e4cdc3976fcaeeaf3cb4e3647bda7dad3f399c8485acf14d815490962213e5b741f5a2a4e1dbf6ab92eb42f251c14ddd263481c3b456a81a9ccc3507c566505a5917c300613013c06b84679bd3f9ce229629a69b0e26537a48e37e131221c7f342c16e383e0de9f11bd9ea884db74cba346f034feadaf59d0d471be1f5437ba4b2468bd86fd97ac01f008b891e22ab1c3a73f0d48b59fbc86dec6d19858f846a805f43962e2c7bad8daf9f3ea57f3ed28660eb80ccc7716e4b99a156594e829d27805aa476719c3f2e2d25e98c6ea38f11d3e563d49f1314febd80d19de737eaf57e42c933ee4a9c772f55034b7f61f8069d77886c4ec48f221425f564ac40185a7535854f2b2b27a0aaa331c30438672e2a7c5b138b81dfde9ee55d48267b95b2806cce21e2d733c8249b87d9132e0bc69f7893c9df293683afcfa43324ffff39233a05fc5a25729fa4696fade56a3eed88db1924d54cf5aaa5c5bfba86cb53386d6e069a1bb6f2eb529e8eadebe64a01b00191f0dde8e6b5d40d18aff29b062753ebd8465e1f5c8bde1855b3317d987ac66be468828c316aad9c6dc420edbbda80b8d458f31f63baff61d4a59ed4ce89fde24ea2e094bf617df7db36386af0b335dbd741175afb526ef0e5efc4a9dc9aa0bbb910898ec3b7c7600e6b174052eebe52820a06503e05f90d02a09bcef740e97c4986d3b7ef229b7062f3cc7919ee532cc9af8e234f44406808cf27b999b04da58281875c1b2e4f85eabcf12d63feffbb8acc19a8b2153d5cc46262fa985dea0b070813d1425d913e4643d7bf6fcdf557c593d420343ea3629e19abfb34d7a4d4a3949a969e4aa2a4444a1d983356377f2848892563cd5d127c63e38e2db2740e996a3d459fe9b9c51bebbbb7d5e570472293b04b88383c0ae8b22c113c11c7463020f8c1cfa3cc82eb99c11c48c66a5bb253106bca1e26975285aa9c32654aad8eeb939216ed8c96ee251403d65522a2f83c20f18c6633d9141de16640046354837e30bc5c41f7f8ec6cf32f2ba82cf71f6af8b03de595260d0478b902beabd2f66e89629bee9f5e8f911f6ed07899f7035bb3901845bdb800e0fb8124e8521fb94806bea811aeaeeb925eee3b03b7caee032ab86b713f6f0e2f67e301b79365a6e498045ab0600b9cd054223b4814f10cefd99027eb6da8dd4562891b3d74a9bee2025e051fd86dd4bf8bf278cf5f73769e6513c43b68971cf842b30c1a25c8e0d4542892745fe303963b6b462c1bc252c3c2062028084ee2c335c94c92b31f8a78c26d21eee61afde1f36e82e950017d32d01b3222000b933eba06fecc6af7327cb5a6937625a23c2e41212436b7b87105b67572b7221039d06aa70daacf9e625a64138d02df47a833c0d055753546fdb5827503f3052412e9d495fbaf99c61847f87070a518c37a5ee1973d2e648bae99c8742a4288ea68c38e482f6678f404e0acc7e4c1833c62b35b98310ea6df30a0cc33b45b1ea97e8d111345a16951ed1dc6bda8d1cf700bdc74c9975ab4d13b0fe7d3aa2914b4a99144bf9af879d200eb93a9e454518ce7c08cd16cf3f4f3e8aba1596c79d37e28bbd2e10578ca5d54add6a17521df51762d7d693ccf4c07c576d35133914f547e12bde193e913157058435669331e3f414ab5efbb544e65341f5c39172f9fe8a4a16086b776d847318557a0a696938c32e5f947f848db95444a039ba9670ca79d69c564cd1f8a74b171f490392ef26aacd16dd8e15af58eb8dbcb5d40e7c1ef5a3c0f8956564d4112dc8853cd4b086f488832379f869eadd48d13e69805c93b3f7eae882e43b7102e1f08b1a1017fcc24d56c84742dd7d499e5b1836f0a3b8bc6c9d4585f93e58a286dd885794cc9505e333f7290212c23616118a53208764d26c9a1ddbf279fb6e8e47244a64c5a7541c880addbc3bd86f46fe0468e36e2190dbd22bc50910b330cea8bae38eb5e86c160a33e7f4184bcc23922a14580f2ab12eb929bdf2683652428902103ecab284d70dfd4986b495fd9d8936dd3e96a950e1381ac72b287ebac0cae7e27ba97ab435e2dba4a36b1e4ca14f72a039885c44bd8b38bd492b7b7f2443cfb52be1be0b29370f7d27585e9f36c33135e6be5d5e860609cf93b528d42aa92ef95d5cab22d7ec3ec33a83e977bb0a97f51b71156be47d77bf3208ade9f3fb2119ce49886b55a6fcf5ea743a922bdd527bcbffc2434eb8681f83b2c22351ea7808d4361e66cb6b6390cad0663fe7ecdac925c957927be3152004678ed396ff6704f60edc5da356893bcb9f68096726c905696d700b993f539e0b432215c1a9f7b72a169abdf03657deedaefd563472e91b0a4aaf211312a082b2ca836f86cc6bf7b8d957bc90a04c9301e3018e61b3013c4c81ae1df2044474414c3c35957250edf2e591327ce1797248ee0ece3336b63d33d49d19f177ad2821d0ae333e634bd5e43769509e47799048a12a4d5b398384084691a952f46baa516b952d1bd85daeddb8ea7f31033e3ddae4a6a315457b7d650c54d855e691a9a090faa8d1e27aed9814c0da4135c5783e382506a0875f3b3ac416abbc694511a178c3093a5a511396f6b16d5b59246b40b65f362acfd56b3f8c714f8e565f34b76fc586f0864440765e6bc0557246dcc8b93255231d97f220e9937c73da7ce391422359390765c00442575d6a8dfa8112321a20a9a2281a52c9895467511393a383e102baea4ba0bcf6cc2e4a4c48eebf99b9e3a4780d82355e33badf1a82d66b2480374db34bb2e904b1c59251728b3d3ef3d4bcbccfa5728d6ee02f3bf0b3a489e2c292866eff729364620cbc6112feb48b6e2d99426f2a48c3df89e74fd1c3a9cffbc680c8141c0cd912e3b75a1216e39403abeec5f47d86130c59dd71a0650a846ceba8819fa073f626da5bfa9629e783dd2b619ebc354e994a48a305e1b0c7534b426c45af2637f5e121990de4716cea7a5973799884bab5d22f62e0b5af5368946c16ae8abe7aae897665742cd7f245b478a24033b3be7aa40362f8c943def3181aa78e135172c8891f2d9d585d18920fc9b541a3048724eeb642338cf930efdd0ad01f96fcdb0656bd7f1dab3922c0e3f3814ec17c51514039becba3c78e31b2031e4f7f98918f4f8fb8b50aa4a668b8c6d890068db68da0c1b5307b9c67812865e131d243902f74ffcb633d3b0f84f3c6ed408820fb127d6687cd7afa80f2b8cc454f9a4e6fcf501e7867d10e066900d39788262f07e66ca2dec61d434510d2418481fb5c83eb52267c5ac186d049a460b83be94871138dd8b881fdd1606bbda61d21e8e2071501f22fb47bdeba73d0df28d0f4b66750a5879ae45d10f31bb30a7f1b4c516cb729607113db73f86e5d1b2edc5ecc5c2acae8d5143a1100a600d6597fe631cd3bfb3290d8ee644d08347590a4bb9c5d7392172ad5175ab128a54021792f58c66c1329de8cb228a24e24b05a080931d2399b305d333f4e15ebd5190bc615eb05663445363027db4fa10e4259c8a8f92f4abc14476fdc4c04b5f9e17816886c5bce7fa20f47c86826ea3c06cefcfeaf1e7a39d279dc48f6e431e4c7d12e85e61adfcfdb24f88461861df9ebe855a59f4f790e0bbf9a65159c5ad43371b91bc391b527d13c749c3fd0ccdd2e52aba497446de0992cb1ee2d0153e37e9ab88c25a7916ccf116d0e6d1c95a7d50f368cbabd298a861895c78e355547258c161cf0bc1847491c613a7e5a5406b322aa03c21baf91396b69aa5ebac966cb09e1aa0a51850e7b18980805fee375e0f8caa6394b04606700bd9394b718b3e69b19b0f264d0557fe782aac380fccd4cd254b95da48e1783386f6504a06d735b13831822dde4d724ca26de4a980a0688d27a810d9c19cd3d28d226a598d543e07c853d821eb1755386e4772e64db84fba13260286c0cc2a8a885db3ad4e15716cf1f3a26e3b03afa4a190645b66300fa17d6c3638e5f06dfb502a04d338981f7ec0c0c853453f85663ff2767238542e06db6ae16f45d7e0d5a860e1abed1016fce629fd83796f1a1fe7dcf7ecd4807b75679938ff5a5951daf1011775a78e7b556db719b7cf9406344bf195fa5dfd1e1f6cccf069c17f0f5f40ec3798687bccf4cf1195504e2993e38cbb24e782727555fc3c93213e236805b268a71fe73b0d24ea904767e56905bd9e47370743e876d43917b95685aeea94524f61da686a215b714ba39d4efed5ebe49a3b93011a2dd8b0b64f41027e4bc967b9613d91468c672f1ae2fe170afdbb3bdf2c03630b60119a14a08e62638f94aab90b714b91946541f1ac9b14281c7ecd589a44c76dda5adbcb0309e251f4ec3cd4fa6279554fcb0c6fd0a55a2ffd07b8dfd258a32ffb1f55e6c3da39ac8d9affbe29397a59fa65862accfe02389abba67f5a94ddbc5e5c36543c6d4b18bf7247f96625cb0738f3b2107eea342242912522c6d597f27b01822f1e21fc2515a6e7c5d4e0089d41a8affc583cbef1cc4d1d25f6a2b2d774fddcc9eceb43e0bcb2645480af862ca6a4bf3b0a954363eb89e39d00c3ddd4e03124905763c28b063d2e4fd135bf4cb29b45aadf3fdbb3a928ac8e85787d2c66ef71c4a5ed86bac031c40358d084152802d4a6f95493b87a7d13314578fb1887437a1d51cdcb1138401a4b842ee2f28a79592b3d2ebe0863c805367a2af1cf1de7e4ef32b4debc3479443b6ab4d49cc1635a69b37b5b51704051ffd60d03112604410c8d8fe5ddfe566dd3d98072709ad977497e8f682cffd5f45c0a44eb65c09f07209820dc1bd1f4227290e4a6d1faf4637e043ac7ac55388cac9e20ac2b44b9af9e589ca99d2f12fe4ad6a0133dbf32f73b96faf2631e998fced6e1acccaacf886eeb3820ae08aec949705d4a996fc727c9a7ef479236cf180f2e4ee8a92b069424a2e640740e09e76281e44d1e7bc9782e566fa726e83ac28cd1da991fe4ed95e768d31df5f4bf1d73279860e40cae566cdd6ce92d4c915cdfd2f1bf526e45ea8660ea464c75189cd9b0ef4658af10d666e10aca083dc87ad09ea857e26800634b1fe67a8d65c1fbcefa60a6495872814363f5c9bd8aacaa77d1c6bf0c32df473eeab16caa4e00c65951b454de8eb8b08777bbc6e904212410835de966ed3ed39cfdba6d1f158069b3ec860d567b7030bcec69c7bd8fbfcc600f6189e5d391052ed6919f971649933b61397550173773205649453ab2d52ea3388e0cc638c0245e99fdaff2404b61bebf32721d354a22da18a7f53f321161878d81a51add89c6a368bb4fd284fec6668c3736222268455048bf25c3a7ba9ab6a54d8579494d98e56d395cb4683e5c6243e311135f3d7b44e0ab043b58bc02e3740cdf80f4383b43558cd56589f1e4ce03b01693032ca9f942d3af49426b6b6b306218b4811eea099d9fee4b18ced9abd10b8638b0dabcca91bc8cbabc50b9abb3f2496d40ddd7893a327f1d8f03f4c00c1534f166f8e56ae44f196367935140d8236b8c13f9f810f2b86dbce1d8d18f891c7fedca04947cca2bd24ad2599823c6136c1062e2a45bd322d57ef8ccb0ecb5f775b7d0d1309cf61cf05d7a84e2ecd3ab1b75747f283d2c7d835312d10f5bbdfbf2fa43e6a2fdfaf289532b3f723ccb33c405f068246601f4216c777f4e2766e9e667dd01fb3f9d752473478efb71ea954d9572dffa4ade1e2880780b843cfb57b31d0af4d93e37bbc07f9551f8e23b19b34201588d715dcba0a8630369831785abd6d927ed614d124f8506e666ffcfcf1be6dd3a375e5dc09e33581580ef64699e717b4446b625df2a46dde685752f88cd67a1a45a7cfa8353660c07f33f5d71193b40c0e4dc5f71b269227ec49cd31b52de607a10db96d76e00d662c081f3abdca22db23b6ba2d370e2f2c83256218c2def122ee6f8a9aa23398ce3b6af0db2b3e647ec4f11de0ef23b95ba00dbff11a9887e6b4d2160ba3ea0f7f201bad807bf1b99b625fb1a8272dd601c9e50aaff160fb40701df2e001d6e9563e9012f3dbed8059a385b3d029385b648bcb186d210bc9dbe53081eafd62a23d65dcf65bf9a160f1c90a5f5308a45d9c4f9be23419994212a09c87ef040084a154e4ea7ce1bc13c3a8a454b66e44b6fdee9a9a8c39bbff07b7ee497e061264413ca77d9343fdd9f8fb4fdc219260533c1c14fca9926d24562eff758570daec6d8c748720cd8f78fada26dcedcdfc770981b54b86e5aa0e8e8bc754eff6b61ba48661e13032966f8040514142cdb546d2cb749c0ec8e85461f99e8969d90c7f87b05674d34915f718649ea2942de829d13a92f75a4a218dbb3c00dc9bae84baa0b0a3368b1d32e41db57c01c524ea4ae8488ec48353ff1d295d6f3fcd92d7e3a67799af179a8bc4ccf4743a6cd57f9fd7dd8fb8962b3a1f5162fd6ec58479520b21c65fcf1040677e2c12f94f0268aad677e0e1a2f42776bc6be9d42bfd3d5a540e54553af5fdb3264cb9fc395995dd23d41186bbcf7e8f168d5276de64ef66bfe2fec1511099755798672f398081c2ae4e176a3be26b9ed79b465ea0b8662559085b9783c0d8bfb1411cfbd4dd4e366ef591faeb742fcd1a9ac0c111d39ff3dff1adfedc728aeddff664b5362233787585d7aaf240f863cf411923778128393718268f5c6a5d59132cd69a2542b1af3a2f4d36e7bf963cf065abd8b8e98863f81030c219c051e0e8aa249d7e827f496a9b381132a9ac216638316e71902206883fe2ff1815faff887cc461ced7c11b957e94929a29826d6cd342c89e980c3fafce4162d147ace444fc2e6b160dbc755609b32505a5a594f664df2e68118b54789d8e6ee87ae88e33b585b1d1cf7d70ebcf41b616613198ebe0ffdf790954e7ea381ae0578f9e3eff77dddc0848dab731e0267de216717f34082d2f45c3935c1a1d3c9817f8e9cdf99df0dc9a3a3522d924875a6327857bdff4860fb4a2d0322240902e10bc1e2abc9c7e94d71817ca7189281c04378edcdc6a28b25d8847cabf5f7aafea04b861fcc3be5cc590872cc30945f88e2553a347d069073701653c47889d7ce26d9df289962cf707a7760b0ec264f164c02cd2bab8abdf148833a3807f1e544b3db33d614c6ce98d6f15aafae682e4c3809a1a6e0294d3bd07f506b1daaf7afaafba0d34ad68de1795af2d65b085628d3ccfd0d98f74804fe0026ab7f675209ab81fee89c97c86d22e684a4932d80e5b034bfe123c1c8e3e25f0697224bb785ea2695b6fe3caf8337ada393021bdd344ba5e7b64ea587260f6b17357022481edc62703a2dcabd7a882e8870e27fcf5bc1159f1459f2bd10c7437cceefda8870cb92d91d1a2b380e4a72b573347a766a4366bed1f1d550889e8f324786ce2a1e37b333fbecb571744f58d6631298e32c4d30ac05053c655a2b4ff3f861fbf6295d66f3feba40c8e758977f3d819f61df1882410331131ca448dd234626ff31aa4289aeb99af73989574a748e35f7691a689e314a162e88d8d38f318a58494d1b41c593d0c2baff1cfe3163fd0274dc5666d4b1279169213265ea32dfe4516b7fc1561be8116768474e42d6f9b22f3709c7b8a6810474d1d7130a02a1cd8d30a378a443026a767f84281d32ecab9969b7d26c0882ca18f02c6dc3b6cba3cec3df0aa8afef0086ecb89ef6235d4d0adb4b33a31dcbb00108c31030b70c72338ef8ef1caf4bc51f4261f2fc0b09e77c261cd711676611320903927546b2bec888ebaa06167a26e471699b058ad0317b835c44a6ee7c411597e4529944633d82885cdf17a7ff1faec518a2124a13c043699cf59cfa06761856922908b8b6328ac82f3b6656ba228da391d7d24aa6f5121405241326513b2ed0d499f84be8c4f3aee576583d5116f0ec1c7b52658198c0a0c39019efefd3bccdb62626f69481e9cec6833d6072d67876266a69eebfcea6b14aa6f93f85d2533cf6d2f9280a3dcfa1414c180b9c38d0987ce48d194fd0ce2f6788c875e27234a615a01540788f3ef09037820a6ae86e0f258b4b7dcd0b25da192db82b31fc71d7fc35c3e9fd687af144bd1a7bb51b5bd2229252a6f384b2e99d3ef94aa347992aae3527270225162a8f7b92dc87ed3f3b7edb74f6150d6004f35b1c7c1f060caec8f17c3055581fcdf5387369f7c9afe94bb1d78ef31aff83fad11b57b8c17634c6e8016e095417bcc2671a88ab715dad939c0fbbca87d7e099ba60a1463689e80a5eb5992132f65c60bb7eefb62efc511e252253bb44027f87bd2697f7af241a068bf6757996a4a088f710fb3bdbed069de94163a09cc081830b0e90ee2128b84dcc934b52cb1d0e6f47753f3eb16499807dcbf26276ea4c045303cbaf16d2bf154baa3ced93af1a387faa524e7d2671c42fbbf2346f9608f965a862e4e96563b06508475be4232e46e751da7acb15a56cb1d94de9f9f9adc9eaea5551e694f6de63707f8f7e9ceaa219eb632f0c1b1d6c375adc4122f329ac25f4d9e2667cacab6d60801ef72be3f6331844c0e17b9ab6cd6f9a6710e6e76be18e28174d97318d74fd0e21b3bb31d1afea573eddfb1eaf5731bc111a7fdd8d82e8a1c891dc4b2606bed63d98b3961a56c26693b52bdd87156f7aa3fb6ba74de962be3728ddf35986d7e86de926d472cbe02cb30f8c6c2e141223ebe2bf8ce8e4a13432f75f8d112cd59c809a14e79c49e7541d9ebc13a3da3e0ca97c1fbd358237ea9d652cee40f5bf4306e7451efbcfb9483576ee9488e80cb7425e1e51df3acff0173d4162c5768165f88c2f7f5d20af30c8142cda7b5b6c9d548dc01369a5a528ad289a3fff567974676463dce408b35e1d3c680e8c315ccafaf40f53f525bdcf2ff7a8078d80b0200363114f7cf83b0743fe671f875a8815da356730b91a92453c064b26f4a1b3b2e5dbaba6dddf8e58cb4dd885a93c4a4c37bad62feef50e62cdbb40f73ad74f1d2e468bfdb326d5651f582a2c0763c7b4bfc110308fa12f5b0530e778c674f42ede70a024e878b707295d9c8d88ae290396021ff32ae6b75ea91b993ef1b44b47e21ab95cfbd277591e3f4f0087d6f7390be37a7a4809c52e54da864d87b8d404d1431c3e05aab34fbf787b2cfe08637381fe8934b5bb53d5cf4289d6ae79fc8ca1fe3ee130cc3f20cbc0df76249f57aba86f6927a621810f6770abc4c6a6db598975b3ac0f77b0ec91ee74a2e89682905ac6a7dec1dd972259b0b425c0afbf4c42905e498b1ed0a6ac7625bd685f9cbec73f630db2a6134fb59b61c10cb994a721c0f5dc53875bbf8249d5abf33b5a09f1a8cc704ac933f30c47c4e0a21e66acd6ce3730d598308f6a6af5c1ea7790638e806d5bb1bc9e85f5b28dc934345cee36c261af7545f83057b3a5978ee5df487f25072553661dd3ba307c635ec05bd1ba7ae5180a1726e3e1eaa4f0d3e0ee12f556028bf080f8c3ab34764a9ae63fe31b742748f1032182f3679e8ff60b1a231f9faa8e7300a96092c8b685cb45543e01adc1385ad94b83b49a1012c5987a49e456e98e3f057645ddd2d86b6686d1656cf6e83a469a4e53ce48e3c672698a0470e380f118ac40c47e162e374c422af49685b149461e59b5bcf9fad7eafb00cd293f67fbf97f55a529bc94bd147ff4c0fafe5c670f10504139ebb324ee5d4dc5aea7e08873a0a85e234b0ee2e4f3702d902b1152554bb822002fc49e0b4ded561530ba5af4a55470f7ec682124aa8b2324364ae49227f8ec37052107b05670cbd06b4d0c649cacaa100194528fb13bfe0a3c3eee4fdccae856d11e564a165a2ea93ca616c411d3862358ff0fd340df161bbcb2ed252702f215dd788cdc01b0fd015b2eb6b1a85e4c8fbd49e56b7175641660e406359b8e746833c1f217852cd9ba3828b4488b3bcaba1ee11568887ddb5483f644d6edb2d700e2fa0a65eadc623134229327c4c4ecf0c4d5b422e3fa94adc675304a0a0e6414a19f6db1df1c5963adbbc71bd9b99917ef8d89339f3a893c83aadca0ffee67bfb22b90fdc922c70fff3453257a8e2575f84af5025d426c1f162ce2224942a01f77f1581e0555d98ecf40d7897d6afa76de8edd627ca284a2527574773dcdaba9e56f2bdb8d1d0b0fc87ec0ced55fbdc681528639db725612419a1e1c474f5fb62dbc202b5bba1e8e1aa519cec0f74801db7857581f35843f63c4e12e505a1bfacc9c49e338f95a1511bf4b8ce95ef6a9db03e60c4f50ebeaf611d486995bae2e739b5fa7cc8e8ea4e98cfa703e8290e40feb7c09c39a5c6a4ee7cef0609ced68fe88d983d50db66db37e0303e86087dc0f8522a19498cf6b13133c57514581c3e5be17500941ebaecf9143250b36bae0165abcf7a7b5c46ffc8c125fa8c1b3c8d563227c2b474fe5c1d32ef1bef55ccbfadbb33a06e3698f493854bac06e808aa6e472c379e89a7a66e4c8d399750451ddf39cb05d42977ed438be1e0e5924b011ea7878cfe1ef3019262e796b019fc32826db7d99ac89ce1310e9b6ae042f962ad10bf18e1b81cc3cdb8b8539617bfd3bcf99a6b027ecc7061053fb7a545e4b3fe0c81153f8562cb889d9240f3efe461d79454d99de8ef8556b7481f1e8adc7cb7cd28dd67c511cd50ed1752cb8fee04a33eeec47c1e6ef5167fbd3d4a355cc40e5428213f2a4e96ff07852be967d5b00831abd8929291662e6a12426d911aa388e3a4969533dcb9900bcb0af3db1252af1ad62f80008e02fbc9f730f34960d1b423eb3306c2b12f9482feb824752da0c56e6e4b1895c8cc49b3e8031f272165d5be7561cf205b8a334a4d49b3b5aaafebdd98166e53fab462be9ff85b63e80296197926ceba115b1d1c58bc286a24eaa8cf3ba25b66d7322efa8e0ce5e2b5d892a1d97f0e814b0fae6f7f2c49a3ee35dc78f7d531caf8113d085293fd74d0d45471b703ce2acd9d9e5d2a415ee39322954ad22cf716c044a4005e4a11fa40bf485ce960ac3b03bd42ad9c0887b86d321b4d2b4f0972a57c0aedc65ad6f82a8eb77cb2da2e1ac5d9280e30ed013eb550b387e1cfb1bf818a735ce02d6fb8609e19fdfa01856d0cf9cc70316cf491a3c462ebb3d42e06e0c68c6bb5cb4574c55ff6f4b3b34a179571f15f845b38c6e31a01a59bee279cc17f04f90741a1095e18bd4319ea2b407b2cbd0ef48fce457d06b9de57eb16b99a1bc4ebd2a9d006a9d4a57658fa0b476cdd5470b36574fbe27841b10cbe706334c7ca166bdb74d470c57c7e126e5adbbab5890d88dc974f1a4f2351e4a8c94cfbdd0744f834deb9582ae5d68643f3c07594531ecd16cfdbd3c3318ca991af9acfd387d4c524af75e0d112e9ca0dae8495ee4fc34fb0e105b98c505db13a4fc5aaea047d578f16db31a94a3d0ae706af0f8b0b0ead67668baed0d121050217b910088cd51503d56c98053572956d2d69c5663d5f15ac93f870c495969dbb941078599ad749d3f1ccbe6bb2aa6a5dea4c34dd0dac002183899c65069d03d3bc2c04754ece1a23dc5d4383212956d53c23bc0b9b2ae12dec47c98a8cb7314ad677c860ed8172175ad976ffae1a4df4c0ea2e7fafb86e3840668c4126c6cc5b44d6b8f48bc19c08d533e9cdcc9845f1b3b13a23ac18ca0e4e79f818844ba1753582a884adfa0927000248f9e82c1fb878cac3abf2e1e22e429affa0f38747bb30b64618ddb2e8f4677b84d56dbcb42b40c79b993ed8c4e299076eecccebea9b50ca1e997ad0f78a0f6181d3c0bd93f3a7805eb6c55b5139330a906f260edd70cd7c011aa957a29cb609fcf1494cd65065a10a5a4edc90573ddc328a8350bf79dc82ab7ea0b212f117978bc3814b40c3518998f720ea37b15aaebbff56a30df90c369d2e1dc0a8a2e358540be64bf7a0cf9cf89d27ccc3e0984bf168cea2bfcbf5f1f6186b41bfb7060583db28fa19e17d76a8b08f6be4ca35fc07949aab6073d2ecf55d1e53c5ae8d114389acfee081e7196f2d4126887890f8df58be6b733784f6b5d1822b24a3da1bc64e96407c0252ae7c2e9983d13549deffeaa83f72dbe74d05694e3b10dc56ae79c14d3cd560de4a18d444dc05963a7c57d780ce058d57917e2099863ad9f134c3da2d2b118b2dce1cd71915372ca6884b964e160203eabfba6d22cd91777b65d28b7e740612613a101fcc612b691ca30041479ee4c6fd41fda9c96af2ed724ee14fdad76042889af920c63f63e31b6e4f4b4f36041084dc6b3b77e4996c413ecaacb067d73b12236aeae0849154350aa0574f4498f5da0189bf5e3c90a56d063f45952746896f0944d3ff6a59fb538de52646410a33fa000174c4535e0b36a81d9164e8d84e23b68107a9220a6e6f4f94c316e2b2a073efa44521a28db407cdb8633bd479c9b969e6a8959285fe37df8d097845fbc1d7b1ec0043744dcf993f2c84202c7b9538c1558871511a6e6fdf669671e38d153e14cd718010dc63681d6fbf759570fbf9237b1ec22555fbc70a7e4ca0fb1bb82589d7db3f55c4f3e84c60aba94568f11e0f0d0cdba57e31383c247999780ef362aefdb73426f5e4e82e72416dc3893e22ad21bb8d80149dc1beb2a149e2e8b29f893a4b94bd661a720f361344478a821283c7b3b099627c7f7d034610b52cbe1fcb8f664eddf25f49b28cca1d092be4fc436852a88b6ea84f5a36514140bdd2bcca73374daba4bbe00aa3f3dcf3b42db5248cccba8c24e8e608146b71aaadfc01f43fc617b47a3e2d080614bbf642322574f3d1518220aa6920b7b201834c7b2ee85b7c62bf457fae636d4eedefb5a8a9d0b821345636b53ffda128caa5c34472ba91c0981de678ecb75c5a3c3681c0b12594a5cd22ca858bbe6a2e2e972cd64e1b0c442edc69bbbcb0875f919fe213a6cf43e394fe9749f7e8f12a965b473bc0927b459ab42ec3b747a34e728b06fb1dc3aa9c6907b718da643551828ae8c4c7269052841e3bc738a6ba203be6707c37ff1de4f3a974ece646a300e4610e50c72389380041d703dabf67e964457989b26c5811bd1c49ff9dd9ea9d08c8573944c8b29903258c06e11c562bdf19e697dfc85037c72da4e6adb7f84b04db3a68ccbd9e0e2f78e4b3734f46d7890c834260b65d8ecb770bcf9f13ef868dbdf38aeec39739ac70c9fb0352919dad78eabe5870cd5a41fdd29c74b1c070abb1d569da8b5a78985f871e7a1d00fa7a7a8d072161a03a005aed277aabce8dc343a143a4d79828be186ca33a5e254e9868180522b6ef4ff3a4438aba44e5a44d362cebfca3f3d68377cf389819807607f1ce5a51a383cf14d6e765bcbe74ceab8d62334755c1566dc62327164e79381429d0416dec53e6c5703ee9af0e46f3c1246dc9bb5279ec213fc24c09aab2325f87b69ed61cc35254a52435b8641ca95e085abc8909267f7cd0e45b3e84226804c66bf4b76c6f1ed0e643c4ca25004a643cdd488af3fb2f9a214a3252ee51947c4728d5f87318f1983f79f6f8c194231634645a52b4c5123d5debe2963192be5588b1a936c856b8874661a44df259e639c126f400fcd0971a787a60c78ded281391a4cf7b4c72a620e4c5105c0d2578fda9b863dda481ec37b947e254a36466e1b99e19866e00bd7e36ba119144bdee0ebb5ff6d8355ade627d4c831dd41053f4d67d3c899245fe44863cdc0ff39eb168ea2bc2fb8db1a0d5d2bf6fb7dce3bedcee223200905e4e8fed8dbca61e806e593d7e1388b9164aed5a5d95d93e347db7e288a327601741f5d89369355c1f3527acddcf3c11e97a434f4b769193736dc187815dbb10c12223224a81f45f24e48586822d1afd44e8ff4c5daf036d55166dbf07520d6625d5cf9b5289d288347a08ef1e0eba290bd22de747da6d8c1a8d575c8224a7174cc49f451358bb5cbdd7c0501e9101ff0b5b80ae0ed9c7c916fc8dc582aa24c72c1a1f2e318057435fb5d6d15bad4ab8f18d844d5a593b1abe7508b49f5fb606bb418d691f5a6f7890e58765a95eafb3ca5bdb951e3c059375775d3c7fa0d37152c944aef6a109c4c70dd32407f5455c748a0194f239d3d6575fce8af4a148c054d895abd2a833bd884c3c5e0aa0c332b81f736cf016abfe1632847d16dae57a6de1923cbf3be23ccf52e136ce9c3dbc4619fdb3652fb61f52f0c426308e87c6e7b549135dd2fa2dd982caa5f73b30e83772ae0749348154735de67dc05375ceb2d828421f7916caf92d3c4a4aa20225e7a5c829424e85e983167cbab176346d38d7630a8ac9577d982b8c51931ef198a78412977b349f7066ab82200ff58370387d675d04d4db9d4fed0e791bf8878eadc611d905a6d00572f82601504b8412a50b84e79fc36bec7526df5a3706611d045e0f503bee4e02e87492c3cd229ae405b97fcf4c0f69f689c8eb0ab89caa0ef449dfcae249a2625ffc5c77d24ae9bf497e7ff1d0c1609d1f611adfb3079d72579878a63935623718d7e769038f42fb9c429a09f18f12ce621089621bbcc0115ade659319929e85b139aaeeed7936f185d3fedc072f3f960d60898e6f6803257fd6536e51c7ac55a9a86c8a0712a071a98ea5243103de30e50f156a6abb61cd160c44399d4a16790a34d7f151ee75cadc18a09b9a02bc68ded2265d5692199356c88989357dd40c4ddc3ca8426228ef9966ad69e208b35bf99e18ec862d552949b7c778f7fc41dc2ef3b21d3f602e47ef2172ed1fc52acf7cbb599bfa2e2882e8fa801176f3dfcdd60369fd236ca0a5435ea68c39cb75716c2cb2a50afa06c6dfb1e5b93f4b702d54b805002921fe55dd7a9d9c5c1153ae9e96429fb2e33a6a0a5d9fc625170aa12597b874e067d1b52b5620b4eff31dbb8596e0484d1d5ba6e2cd111234fd758699618c057fb03ac8e8b8f3fec0f3f82c10efc7a71d9af382a13833cfec8d115739602938098288fddaa2ce9a8adb9531fd678cf4111c3d44381540841831e59d8e0f1fe08e71f1432c688a5fbd41e866c0bab5b3957938264f5d58be884d9f347a87595959fc7a67f59fd02a4ae06751dbc9cf54244d6994127358481da8430fb02e9c4c96d24644f49dda5ec45d3bfacb94e47160ca91b1d9f993a727b536b0035c27d1d6b83cd8062a74b952c33a5973de6877f4333cb405db561d9a8b0964aac069ac30737973c1fb70e36f770a41139c9f2a3b0804a2bfb97b531b05e01044008c974b9f5655edba9dc684423be0d92bb3196a59f3547674fda2428103d3fda510093a717788e701124fad0418154a1187761989a9ff0084588c97082620529f8eaabb3e7fdf31392a3e4331b2c690ff59961d3631dd65a1993b9acf6a39b4b21e76dfa13ff600c4b4758287a2449312a8b6abaabce835a82f80204bee2b4615e801406c44f754cd7e868b5b0ef9fb2f41aac792a9a2e247f1e8692364ac01865a91470c59ceedb601d8ea66fae5dfe50fd4424d7651b6e2d37030a5a42b72ccd491f4ab6fabe9f3ca3126a7b250300dc6e721d149e3dc547eddeaeaa83c71624ff2a586c9dcd9e0cf79300c99f0e10d07111bb951f45f6b789b4b336e57a3b5e37b32405666793e907e8b68f8bf76b0ce9b412305ff9bdedf2c0ad0523c1f1e4d1934a5dea4c65ac4d83f4a8c91278d5105a76396f8f6233aa24ba990708361bd83d64226aa298089a93526e303a8a5315171e77521b518c6bfc932fa652f5550ab05ac4f592b4297f7f5a24b9cb5bb0824f152cda67c008c8939892a0d8e70cce45bf2ac06e56f2bd0d05a325180280970237ada9e0ef38a65fa4770755bd988506fdc91002328cd8df8f57e0c68468ea1919354a785fef2810297a6f00fd652031ed98cf177d7e525ef891704f570541a2d31d79efb1ea944a3755678feba575de8df6bcc7823baedb19d0a5a601fbff4bc0166ad0af5e1d466f7e5b92481123c6cd0dc94f074ceb809a9056f8a9ab99070a6eeab9960306f651b0f9f36bd8a91f716f4e5e9b7f776736aa8f82cc0767a9792f470ae3fbb71ef46ebc4337e12f66c7b08cb255d7b42c5f39cde5b926bf1a174f3781ddd578f83ea3f7b83f5357d795be195d236d54d5fe87b535a86ae2cfc8116ca2a577f84b5388024191bbe27ce47345c5e60a05c67677873e66f54c0eeb6328a6c580cae235ddc32f0c0ed5ac82cf9122b18f42930d1e94e38549080dbc9462482b6e81b8744237384b27447e93680243cb54faf0f94a6e1a2a6be650ec8357ad1edec4d8b36812adf3fa13d58df4900c1e2cf7bd01cfa24ada72aa57d934362d71bf0808382f0db93e4a6247d24830487a5e45b9d7fca87cbeff12c0addcae4e175c9165b19cb4fcacb0f1213d2f914cbca800fe5b6abc432d350f235799ab47b188667290352da1e31d5d2a8215e1a1a915f24ef9da389e4fc0668a45474463b786658653c232c60fe591881abe03106f6041e04c63992a45a50de64c905198550853ff6a50a86e069641909f1434c3d14581fd277b96dd3338800c2463df7073d37d7b3c70a637d01a1221f4d0b3aa83f9ac502ee94776eb49bed5b66396df573ed82046fea16afc787c0d5cc5b8844aca4ab262a4834b88c15786c7e7155f545a9de70e576fab7821a2fb3458ec1b990ecbb4b6e081297845712ed630fa6c8191915821e5cfde7c89467352618c94f1dc5ebedc9f5a35c1b83a7e8b940bf87e5952e489ff25bc598529a0dc50569e5a5f38d2f41f3fdf824da6f7068a8466a4cdf3244686f62400f41e528578ba4ad0e6e28a7a1a9ee95b5d2e85a1f578e76ce0730097052f3799ca28d50ae96f0a9a222a6152372c928b5be6572b4e99fa6ea7f30c3e2364ef7805a19079bb92211e493101d17599e620eaa36cf1fb3d0f44799e687ef4cd3b80dd01f93dae9278d360e94cd61efc4b95b125755f7583f9a3971d423e89028c913b1164a6f4ea414c1867c4dc3d4eaaf48d1cdbba54af28080b3886a310efc3b2e1d6d0dbb815b0dbf668ae2ad03f9dce72c9998192fffe28f82d481b796096f2ccbfbf74324f717d992eb0ed9b96ef2e12ffe8d49e1928117de0b4e84a37c10704b5b3c0d606325244def17a0d1b2bf07a47de3021af68ec6cd8d5020b49e1c345686bbe95be654dabf1650c2b4bb4e9e6964c86d4713b45ca32359ea8fc03acea768daece94964b40c41e8f1aca8a3b709902f3b0f23b4ad11320b73507f566cb8dc7bd0315ad53c0bfd755fac7892e12388b1c758c811b5434e5b6d8b12d371dd534449bfb91a28a9a9730d6804a91453274a49eac195318ed7cb1a7ba7015f2e61c4fe132c64dab108c07b223f90de26a652a0e253cead8b58f60d1070a2d6ad2239e44b0293ebda8aac3922c2be9c594b96cf67315ba05e7127a0263b1c48b51c2cafff31751222f145817f7716abfe74b593df9e714f25ade61452b98b15705347282a843b73448a2b9b8c273c4bb9e8558327a37c9c52aa6b0ad31258369f526d514ed3e6c2468d9d6d532c79e3c579280f776174d01358aa316bd721f080ea175e83b57310c17c0dc329dffa78c9c30f3364a1d3c7ab047b1d0b1c62b138b358cc7554132e367ce954743dd8f374b965a4dffe92674eb0fb3a4e537658513c9165c2f479e0ecdcdc01ae1986e7a817e53b16cb1512e774d2c04bd79a1540a278f39ec30250c2ed4c518fbb52b76d011aebccd571fc232606422bfe82442a65d080bec1f815746cc98b77c6b86c1b307711a24fc20fe69e28e8d0b847965d719a0564d74b74cfce472dbf008784d16f73e18d99a858993e0269cb18a4e7034ef6ee0fd5750b30fa8a1a58ec6fd18dc860648b006b95d1bef6d1298a20b4ae4e0c267258c6dfebd5f75171626d96849812d01c0dc1dd4aa66485393f52cd05a47277fd51cedb456704021a013bf9ecc39ffc6cd770d5691b6a4da685b9e0fe643fbcb34fcec089a2ee0e04a3e1d387d692339a5b558fff88fcf8d166081eb435ab215c5bba482092243ceff7d851083366d4415a5d410641c1f106457def6a92251f856082bd782ee5dcb5bafd28ca25f513e5039bad92152da2f173b221329f95af3b5e3b642a91fe9032c1b48cf4f1da2e9cd774f822dad61ff4ea33486b6f5d66665be2c71d81d20550961d036a18927bf984c8d4f34385958dc6c1dae38ad6c1b749113e83b8215f20fa4cb5c9c40903ece02eab2ac92073e179eb5b32bf039b15acfbca85904f0000057cf3880d15b76e1f8133f9c21851b640e670487402a16cb31ec4b92316d8b4f93f887f44263a2ecfad56f7b553d97a6151c021488e8ee01f43f1b73d5bf1d4fe9ac1d57fd5fcdcbb8d96dad023b6c61285c4d959d6370615f678accc3431137208d8c1bbd409de87ce512f8e40e5d3c8765e2c0a77c0b751191b78c7b063e379e00c007d9fd41e93fc65e1b6382c77833b743a4441cbc730d7d0b38b50335f6ea19e9e756916d93c060a0f39e1fe13bef1b45d091266c56c0f00af1497f8db99c172c289e33b7c50ce96f3c1b15978cec9041ada489859c3ad717cd9432c44b173932fd13b6a2aa1491f3ce88d855585be3c95865b2c3f9c06cd0f9d0627034f2fb1840a8953240cf989a409bfa9f1e11cd638b5d9dcf1d13977f7f28cfcf6408d7485429825152b32f833b2753bace308eaf645d2b21e6bfc198cdb9181aedf46f3fafa1d376a1c4f2d35b060a1eff5c3551339f68d895a3fcd903e913df381323ce08d04c0ddf754890aedae1ad0d0ccc9463ab4007e3284082fb02cca3052774a1b85578b2ce60702111950f7530493c000e395ab2dee6afdaacb3fffb45bbef15463d0d8d92cfa4727b1bc521c0d59655e4e3f0b838c619a16651c734af4f06f2e810ad5cb30c64ca70d8dcad6ac04215474d55bb431f29eccc5e16a48109041ef43d15fe465f26b9bf88c3024b7f468b110f629cc038c40627a6fd3f771e41b5b597a150ec7a1553fa11ad4d260efc13e19eb1cf75d6d165c0780e680091ca2502fc89e6d65ff2b82aa28e4e6489d4f365c2277f8ab04a4765ac2b2a9b8068ae4cfcf196a94a9a3a0baacc29e5e490b333f4247f1f3d2bcf7896cdc7efedac3f78ba62e8196140a72a061bf4a13475a5a08280fe321e6392e9b8e4dfa219730e54b9e7c3c2450e0be716fedee84ee47632f3420ed2e0b82f6b167c61034a076196f95b8ae87273e81356f46fc0bad3be0f42e3fecaabcbbb954404de00ac599e191ecae84e115eeb7a24a3bb7263ec78abe4d1475ae980566497225d58daeac35b045992812e26da95ea4ab177e6ad8887a93113c4aa20b3874be52f08ae79d87e4d54de8eb52f07fe1108dd1ef907bf8ff575cec71789e856667d2b7c8d858876a7dbc8fdbf6dae7bf108763b27cf4f9cb9cfae38f64facef7fd6c831743c2085687cf589cc11e93a3ffd1b84e951a221513b705324f0a5c9148b7ad72a7d8091d91405afd0585ecf40aa64288396211a2efcc3c37df17cce24a40a3bdf9d209176356b49579ee6ebf9302cc661e333c2a64d4c63340d5fa557005c63f45215d7ce7550e09deada8096633157e2cfbf74a45538599a0eef8c18e38442a181440130bff2b4f36c64bfae231b80a664bb1e76ac17a9a1c28f86c8dd43d49b604d790605ad49b6aaf60125282f9b2cf57a2c27fb324cde6dceaa42c79aec4fd20ee9474d40980d05b0d30e8b12152e8d172f0ef5cbae524cb1c65885fb51662e928377fe307b28f9dc4dff3cb2183e2a329c1f3f1b795c84ddfd545ed670acc17a6bde25e548a4bc9a6e67e58a3edadb79c31fd6718bed1f2e97f7e5100fff73ab2fd21a2e616f410deb665a7aca42c206754fa6f32dc0200a3e0561040076567445ec31911527a2304c89ce163667ece0e657850104272a64331f8ca5f007d90bc99d61364ee3f225eea053bf5d2c7f19adcb1fbd06de9fd30bbc4f5ec55681b054b00654b2306a359bbbd7fa46559dc7196c8de9ad6a55899bd6c5eedbb63dd66113ea49cddb8a9ccc80940e9fb024f33c780baf04b89cf5a38dccbe4075385cf664986be2254be7111bfcf1dc92ff3821c2912f2e0cd59b639ea7ded0318b5fb0fdd835bbfa199028080b1b0640ed1a5f79f806905718554bb1606f71f07a1d2b1b803f84a633ad0d7b415eec104eb095516bcb104012e54838fe721b29397ddb07c536ce8bededdcacf29510415ea3b5a9fdbc745dcffcf1bdda9ae68e906c443be76af38dd2ca62894f7fcc3c5239234797527cab4bfd3e87e0c7d96ed3bcb043ae23959dc30a3a5511c42f466add1995416f5f628ec2e395f0336bd84713f58701217a3e41de59ee570a79707af497cde1071bd80aa68b1a4e7443a0f5479cda4b0ec92de20fb09cbb592e03001b3d5fd4ab6c0b64f22b56c43b27386649a296129733ed98e382ac06740b989a47b5a5e6ca04a830223a17547b0e34a30c2c27cb2ea62e47fbf361a23dea91a5fd112e035b9bd39825d76407e5a5ea6e78ffcf2d9720fe01afaae82307b38d9ac3bccc454ac39c72b24195d43c22c2faae8beb718605c480a2b0d581d738a027d0a8a66f67c6531b3f850b6d83b21b2bab5ef234264f1c285ca2b022c29ddb86571d6310b43edebda55ddc9e6625919e330008689abdaf87624df6d48d334d7b39f88425ddd320be0ecc3441d8ee509a5ecc0d52faf7cfb5dea4cfed646f8b0aff13a3bf48a03526a076fe43049d1f4aac2fc9350beee7f522f6f91981763f6390d6aac65eb2b5b3ee4093547498a1458ff9cb0d3b2f9b4232a19170c64dab7f5fbf22c080128ef20ea3d3dbb324d98f917c1879288d7d0e8e72d5e425e166842fa000555eccb19ef3db161e4072b96270e115c42533b7eb2b9d66cdabdde20f23f51251922a4f1fc58aecacc637743920471ed8295ed0f69fbddfe417ddeed0d086858f272bafe2bbb3bff14057cbe62f6e64129033ab5907f2d84f0f019e882447e1cc39619aa2ff7cf0fecfee10afce04226404b1ff7cb5c8e795f6d41eb8a018532b1f3817c021b5e0f4444d7fc4e2564daf8dde1e3371b8d7c91f5e08af4d2534c828e81fe33fc647adfcdd5a877e58e690921d0856ab0aec0f7a022684d41b07a8f0c47d2dc9d593a2929eab13f167e1365621d7e87298001880894a407469166fef29126da8b8b6b0c63974c81d7272f2d04e698e70ff8691cc2482f97ce1dfc75a84c956e76f88b92832ff69c2c2fe9e26404d805a08a3266812260f14ed6355f57b04f46c97cb8982bb5ef74d83cd671b370c116900b037d8acfbe688197e5320e465473e3ececd4aab18d0c83fa92c9f0ca04c20242044b6d7a7ca32012524932814b0600d35e9c1345d3f01da6ffef228a4a7b1474e12a7bc6846ee3dc195f1b8e91252e3559f5e0630be4310d4bd732eaed6d0e1c6c3b7aa5fe75b148340edf87401c2356fc370b289ab0617dede9a1d874058c41059d634aaf23e2e0ab1768358edabf0c2f3e8a9262b5ebad0475a2e66d3b6eb066325ab5285fbea0f8a4ab8e3d4b92673f0fe6e042ccb581d7edc7a4dc19d04b1c26873a8dc62c0b9ade46dc0eae34d33020332657008db1585eb04e72c17681371174bbf9558a58c5cd1382a07d23ed8551bbaa2729cc85b29751d61636cf2d53d621079d62b98766d0ca3afa6a5efab6308f7dd27f0dde39f428e331a30aebacfda78b2fa867b7aa7f98223423ea2304e7be6c5b068983b43042ea843eae0eb7e1cfa99c059f3772ccff894100b7e795ee8a3c29ab610ab0b3c5bde88feeb7e3d73fa14759d4e6a8b150a03e112f01cd46831a104d07fc7c93fd86eb1d5b85d052a9bd399fe52b125fd08a1aa8ebcab03f15768f3448cecb94488f74e392ffa06fcce91e4f207436b1d731f32647e1c5d89897f4b4a6cead4d82b64b5811996da62e6d6e994580b6e531b0de6bce0f79e72247d36baf5c3d3e91e1b67da13f3edc6cdf4b48a0e55dc4bc27279157d53c1b05a81f04d4fab013b29343d68e319ee5275c96f47250902a2ef16fbc3f8401090d5f46594c967bec9e3fcbfbb73edc7e931f69cc3e7edb4d76910ee77c2ac0ace70e50acf6501b5853997596c0dd779bcc614155cdee33f851ec1eb23ffc15c0eaae9324592832903d6cc819bc06e652b8ab743b40f83965ba589872ec67376fa262b0a374b409ea0ce7d31529f752ab9f5415fbe4e0cf4749fe876fdf23d11f92db1f60c4dbe522f561a532902d16b5cbd1d717630ab87c3baa3e6851ba6892b9ee1ea167909c83a795073ecc1b2b5b4191f46001253e41c1addfa937a33536b5ef4c7015422b173d044c64d91f04b4e84b4876d6f73bf65c1fead781577e5f03c3284d6d44ff1e05e020903d2a001f0a3763200f41f4c6bbe1cc482dc5bfd6177cf5fcf954973e4d1bf71be4c27be62adc4efa8f9d8e9dc7de83ca13947331cf465955bffbef2802f5fd182984421122a24d0b6a92a6679d64ac4490f9a72256ad357131a79921afe53def2cffd1f6df9cbee8050530552b2995640d4070376c0b37af935ea8927839841577a4db874d85bf417145175850ac6ebef5819d42e6a7da7aa9e86543f56f2a0fa29a03f259cde599a5c8656d05824e300f21c564319fccf0a35f94e6b16d8f2922b1c91a471d3d159efb16e52a5d01e641ee55ac13accb237233b58fc10d3729dbf35790f77d5c742794c2d8a2ab455295d606a982a3f1f567c380efa32a34a678b0736ff468556ae5b1ceb126c02f3570e352e40d3e1258eff431c7e12fa992e2bdd55a7f3d410ded35418ce25c66f7ba8140b37aee910fab4cb112ca57f28cf6bc96826269bbb28f1d2a9c3352f48272a5d6ad1c88da9ee94e88a58d35bf3fe14e4c50dafb2249dc4f9f1683167921dd35d7829a095f3c80800e83e369309ee1d7bd9b00af2dd3752005153ac179988aba3f08eac5f5233b5c9457a0db971c52e642c36726fe6157707070a7db99854fd9bd538160bee28e383dc5d7279a4f1d81c3770685509e88c4f44f460e5d05502d30f56ce28316ddb08fadbefb9108bdd1082f8428b79c6a40e1afd9fe6696ad308fc5965cca0db72f53f9a08758b5330752820034bc213a43871745ec827c2eee9b84b2a214b0bab3a8a2fa324d35d8d6b1796eea60c6f9cec26da93dd1e35d54a3c138610278e9bbbd0dbf706e1ab4cdbfaff0d65a397859f1712f2277dfea2d9d8a4b6798914d557dad6a3412a18f95502456a924c74b155fb79151427c816fd7fbd60aa56f9cc1b49baa6f8bf522f907f3c338c16c2c183ea6e83435006848f8b6ca0258772c9a54fc5e0c95fe4f27e3d827f813e54b90bac49a3bb7c91f60ce0e2fceeef1970ebfbd00eb8e10978ddcc3c905a126e259bb4e6d778f9eb85640cb71da538ceef127fbe32e60ed819dc2496b3589463286dfbc7e38d9f83c313cde3d76c2b3dd0a2876fc814dfbdafd4d1c1a68e4d43b0fe1f02910f077a9ea9ba3c213b816d64856b86770e09d27e670d7cb1122783118379f5b62faf31facc20504fd09094c586a86fdf31835872448afef420cfb87932657ab16eb9d04546a30a5554ce75116d33bf300dd0c5c3cff9592c0c31def0597c7c86540b7d32cd76898276b72b056fef5bcc737f571c974eeef42e4ccdd31c6d7d5f92f4a250e6ff41d214dd86e2ba95f7d06e27b4cdfa81df77190a7301e77c9433da034a997f22b63d86b18f8c671b8dde91afaea57f341db632403c1f95115b0469d36d789265d3b5bf4f58109ce8cf8de09484732370f21e7619ac3d34d81586de019b05c2dfac55fe73a0315e4a91642ce81fe31d1a4cb5759dabefaaa9fe94bdbdcf394458866de4ba5956f350e78185d9a1796f4d0962a581bfb95496c5296a9b9f6fe36bf9f9e71fca845ecfecfa4544db75fb009c55cf75dd958f603f4a14653f4f6e1bf2e29dafc9585b2c02139859e2f2c20f9df868386861b09911acee2cd28fbf462bf179fe680d34bea2fe0f9bdd18fe882ce38bf38d01f7943e0f2e51e0f0b34f3a3dfad8f7f34baa8966c2ab2a21f9efa0dad32032bd818e23d57a511555a2a1786d3054aca8cda44f825874e9a4ac96729a757b976b1bdc219521ffa207e44eec612c836efc265bfd038737dc6b7d699be2123bcda8d17afb9f254137c841d2c13d994f5229dc5b35b10d049310b8896e856bc784c19dcfe7b5519d4591348c7d4941facc22e961f666eefe300c6b01afbf71b3a4d0609187bbe8cf89517c1e71ff5f6132e01c3dc0babdce71362c5d24a94aa2f7279ec5b20a805d49531c560d35e515f45c833ffa3a06cffe6a337b12aab5548c841b857b25b8dadb4dbcbce31bf1b991373d702d13b49b6b050228d0ad902687eb7e1f3b5d470ac6add045f8ad70d82637c1eab5464caebf2f9570a718e77392702019dcf20990da55209dd214417e2e54dc7a8b85761aca772f8456abc5e840d80d256ad41732ae07e541d38082f55e52c5b8d410ac9adacdd1ccf520b99787bda255201d65005be2cacbdd9f576bc9e123490376b4838640bf88e5b3dc4faa32fb385453038583057613171baf14c9c59cd1db47a922c5821b664ec8b0f8ff54be29d06a26b522b10b262cc29b46f63a5a7c82c1577d01a45d72780cc55d6be30ef53cd6f29ca11548f727bb8d3d407dad09dab4245b4204468ac2c572c233d7862739ed19afc795f396295edc2e88e86d06f7ff27c68c1ab9580e7d05f9d138095c2984a275c09caa5d53e2b3f6f65f5bcd4247ea064f79743465836c03f298af20383c77fb7346db7c46948bf7951c9ebdd7adc0d329c4988435a0bf9b5da76235c37cc7c0fda131261f5bef4e627fd60bff587e78768f7fe15102af2e02edc65d22d0244fa8dcbaad74ee22092508e1f647d253b39e8f20cdc216cee32aa9a547f0660f31a05cd3d44f51ea39acbae765b86db758f9a6f2af006cdb0957609837605048e4bede960aa00ad8ef274a18b6e9dfe6df95c663bc3bcea97c8b192372cc4dce247cac9ebab5423ebe930bd81f2844cdc959218d872da1c6ad2ac5a0cf11e3026bb87961e89c7f11b829696b0ac38bf08b818edbcc736515498e8faa3d0886a280f15f95bfa69df1b9d6947027413b913c93b2d2967a5d889bf3464d3db8872441cbd547515185963a84b89d4a036d201bba6ba2b8ad0002ba20081883ec0059e373da45e294f1bdd801b505f2cb6fd6af5816d93334d00010c0d018a9cafbd08bd0d4f1ab07c6e8d2fa69db7274c61d1be7046632403cf62e8f3eb8fc816d48be44e2fe15a5778e48a500294a055aeda3b5a1ea96ebf8fd390e48f16094d8eb04a3974321e243fa314c6d30fe8f3aa9ddbaa207bd63ccfea35c8aeb6f3267f4097fec2447661290c1ccfd2c3eb4079c4414886c49a91990dbf8b7370078be42430050ed65916360da688f21d8fb8bc4a3489ebcaf10120af0beec4051e4c65b7445e52ccbffcbc851e605b496a821a6b22590332a925974c3e2298256cba6a815dcb4b1588c20216ed434fe592b375e8102c4d0f5939eb7e4ffe6b186cd38ab5451db2e37033bb9c358d9514b1a62fdcf738949abe5f9c69748910cfefad0ac4e1c240a08c1f5457a22ce37f1af5b3316169008f4191845569abc9af0a081e7752a05b303849452d7c24127d63286a78c848c9cb3bf097cfd248fb3912d56111bfb8add3fc78a6541b36515f569cd4383adb1ed1c8ecbe18a2142a6793ced786beb56dd5f2567aa5f4fea8267f516dfd14fa6d81fce1507e4636421c83c5a531c08e3275d69a2feae7853e6578fbf41a2b41186b5c037e12625a7f597d21537a1aa4782cda7ab7d1397e246230cfccfc5b25d66d01288a6007098cb9fa3de14be1569f56b9b6cf3fa981090e3f52f9b832d4f3e823341b34dcba07449459d632bf8a0551dd9575bd1b232ccb2625c75f254e3bf90a69be10fc5ac6e43243225878e53c843a49b2156bae1577afb6f4a59260414d3f1b03f2cb54988956b44ae53d47007095276e6cb454fbddb9f42ac6b521a9ab08dd676f147eb447d061848d64dcd1c107daa62fe22ad44f9241a9ad8267571ee08a2775e997d29d906a288990338b6151a5dfac079da5832a00f97417eadb80134869869bbafb95805a0f91a1539cfb0c95d1cc907fb0e13fdbf68a303be097e14b4584e97278054c4efcb6807ed5585b008e777e40dc64620de26ef775812e11f9403d51661f1c692e821e960df55797191af3c4e65198bf7fd94473edc9d852053bba9ce1909f2129b4929bfd5708b0495786d68bb42c5054c7c16045c4c52ded181bab82d3e29e785948f9f61f87bd24c20afda7d39e3df7ae93bf3bce56687f0d98c15c5a4fc0fdbd12f13e02224e925d977edd7081172510623f40fc70a65df6fc428b82f69dc2052cf09b96fb4fbaa98974bdd29c798563cfd595ce6e2f4c02f5bad14c5798c06575180c0abcbc35b14b4fbe09669d30a71442d04ebe4d4b42c9d291c0f27c2f480e0b8019d0185ebf8284ba6b622a033bf6dbe8204d7af964f09d45f24eef8e913bb272c80286143aefd554145d6629eb2763ad74a8ed8f724db28b57134a5071cf605c77ca7dae30b8e2777d6426e16e1e2bc9b5cf05b0e94d708cc756bd541725caa85b48d6c682db6a6401f2d3f694bae992c9291c271265881fa3265834cf761cfcc8aabae3a77db1729ddb51767bdeed31d0470d6bad822ba658ae009f453e524ce963df9fef0bd2022d51aa24c3ee7881ddd2d4e59e5ddaf01681705cc154468ec4f6425334cbacc61ec9669349e9a33bc56436b66dced66cb76db0d63088383557abea3dcf2951fe8bf207fc829e7a680195170014791b6bd8201910a4dc778949dc262ee2011013d61759ad4b0f7ecd6251ce070dc9af2fdfb513ad78bdf2965527e280a4a27b7d7d2d1845350209ed5c026d7df8c937e96997527030ddc13211ca501047a6c5148dbfeee2ddcd025463e73ba74a8830a3ade84ae6b7e6f6ef9113f795b6b1187e88c5941ba234151e05c75db38827a1c550482e28ae625680df5efa30bfce4850898d5a4a6923b812e7b20f973dc012a7a76d39c767060532112f808bf2d97406a339681f84d858f49715a0d99b78c9008f70d84a5ccda72d598746826a3a85ffecc2c408ceeee43caf5eab8ef04b7d854d40a9c3281b8bc96d340348e6ac991299948769dc35a52a1ea3c06acb4d0a9e447cd08a9115fb37bba1ab3b76ad9104f1748c762ac9cf61085c279e763442f2a6cda8fdf28ade9b650b90f4d285b22ce61c00f38c8c8691bd7d0f80a4e0f9d798ace8a915c2997059c700ef5cbf6fa2e409fb5e517151449e7ea3ecea215cf6690d6d9f611455e621cd1b599292e8d2f21af1b0e8182efc41e11839e6492f9c929240ffcb4277eb8b1b4bff4c75397005cdf1c6fbd39d31ffb71dc5f4e21de021ffb37d4fe0d18ee56376c2a67962161dab1861125275737554d2e7f1fcb8b2d91828ee704de19f230d258646ab16a6be95e35d596a2b371cb3cc5fa274bbf82ff455eae73c2efd8c23f3dda58aa49467d2f8136e26d53f70d50163e51d1fbaf152d5ea425504becdbf5186e5b86d5bd1efc635864691d8b60f89ebcd6eef48752128cc50b186630d51023dfa229949f1c84bb1cd64aa69054b64ade8a81ff7d34840f824ea92e382c60125c174d0477f51dc62ff58dac6329a8bdcbe146d057bcaaba4bf0b1c884a882e4662805a1067f981031ca5555afe20fd507afd0ad8d7c7d9070da29704a301d323287fa1d6ad7230c225154d21835a22d11e2eed7619839ee29edb6838534176875a94396211e68b038ebdb10ed268ecaec099f29c742b4a60b660273b77146f83fcf2dcebb591d2411ab620fa5e551dc7ca87053dac715853f528848b83cc1a2f310a8e488b2262722a783eea0838dd9ff3a33a4108a684541cde5cc680f688d37ac3e5a9c37abbf257be94b6c51917d0e84fb60e5b8c44a9e2ff3a5028c79b4f29570db87844f6de5f1f5ae9c071cd32d597c5c10ee80117aea488a98abb15e33dd824c3c5fcdee3532ec551f956bb8846d98c97af9c42adbb1f55d6807374d309a2326af66baf56bc5c3e463fc141434203e2086222e858f47811393c2f092b7bdf65ecf1ee1ee49c8e0e2a5cc39b44e53c80d0a49e78892d882f92e4a73adc81a229f8c6c770dae27a24ee6387a922be4305abd1c881497b2e9088f2a774067772f8853dec153ba774f9b65afd43b028c2f571b13fcff269534dea0ca1cba2b339b72a997be88784c0ad607e031e68ec23bb66707e71d7008feab281676a9923d95bee135241f3bb1e6c5364b2c44090c41edb4c5829b7bba5e8b5964ca69e21cb208718a74638ed2340d97c0f8fc877f06b5625494b121b5e87e6f386d4cdfc96fd0f24ca18d5d8714bd46469e5657f1d787ad85d4c377ec1583ee6a17bc6d1014950bbf1147e9dfcd3e06501bedc1a53b92f672d8a81c0ec0ebec72ccb4e584d83a3d0e0d94e73f1362014b686a38dc517443d949b0ea076c3f6d00be1e5886d235c610a0f67f3678beb01534a05807ac46d3344062ac55cd71759af25b2df96dc17545194ecc6dee189cee6ecc34d6c9850ee8576ed2dda75fe877e38d3f6928966e0c0ce8b7ec17331e3f0108da6b9767687f8f38d049b9a5787bd3a160855e7ae8bdf1b9708e4b6b0ae08a093243bca877df5b4c57448c196645297b9391face0eae5e0309f0c124f094f117f13f31c10ab076d1347d3d167f70e0cd9118d3887a1c9d067369d7c4d67d94a4beee4fc12aae01f1ec83ec002500dc9a597952d1d03c90c49cbffdc37bb4dbdff96fb9df86e4583e411ca5941e12e8f08fff9da9364b7cf03e7ccd032e386e5ad4b1c3e36a59965fb147f9b581c775a78c76bfeac2d93baefc1055c231c2921f87c6bac3cb86c0ec068eebbbd03a2adb33eb97076855645efc7b504170ceedac7318372a42f987142b4434627d67ef998a19827406baad0c2c82e9aa4a9e4a14dd5747a4a3f06f2dd466c865d9207372c01cce4d17ad7079e24849eae3dc6a9ebf12099337227b628b1af3789b7cfafbf46f3fbcbe13786aa2e9d0bd9776753a3f71b4df5444335541ce094a49cf6a1c80808f90eafebbf99b407c968e730c244813cb1849f57cce934368be4261a2485e23486c00d5ca6340019f5f64d07fd2219588d2160869b9ce464b82144e04d43e3cf1f35a2f531b37c98091940c5d81d785a067a214aae4129553a78b164c860188552c7b3ff4fd67086c8592192d664c43a16137727b3421a611e84d4a71f8fb9dc6881af836bea609b10b01abd273e2c2246d9d9e1f8dfff3e690b473356f883aafcd53a9131ccb0c691a3a4d819906a6de67ef4da6b9f4d427790e093550e01c081b37d7607c149170b338f3df6547c0d7dd07be517174b0451dd207a4a89fb1f4b1f8e41434fd8a5486558d645cb92d276d1048a6170a76f7effb9fec90733fb862b24758c9c1a25fcb1e887c71602833598b2616f7600d37cba3b6d55b4f7547391d73bb19caaf2614bb2e05d72a5eff5f7c9b3cad419dc6a1dcc02f0b20b2e58583680070dcd35e7c9dcc47f41870137c8c5cf4dd2d9fa9a96ed4b561341dafce49d7cc18cd623e3c6bd65af80359bf8ae6238f0a5f7ad65cd3796b92d208c28e408484d954d0a6f5b15a0e20208b890b93bb6e271fdb12b9c7212ef251344c9fa933c8121880212ad87a2723c98649638693104b81ff5697fbd354692e8adf79d95716d89c792a1bc5610debe47c093aafef16ad2b5e821e6f4170573d598fa5317ccf7762588756f05572a5abfd109b3970f3d1df03f6ff4506c051a0a5f4ab2fb902dbd5ccabf5215823381de6539dbe8ad8699f3d19f287c4e4ba8e5f0ac2b4e655c9f9cf64eee6d82a87fe405b8e9811cb748fda75790587fa99c5453326ea549e0ecbeb2dca8f0d9cdfbe74c752bebd7bbddc6c8aa4752f9fe223c2321a8e25f2ae9df4d171e206963266001aad3d8d96159826b3a99a874491a60740a756743627147306671b8815c6c6c8f1aeeb1b418e62a890d0eb3c93b1e85fcec59b081a93666143f5fb87cee9a3979a92f8098f7510e778b74a6f36c8f04103992cc24bda99560c24cc17e3b4f50df7ebe9f7d889b3220549fd0ab07d7af37130728b77a397a2296be5b5b5c28df3c184c3d146798aa024e4a743e5268ef5726c49ed0482f767d097a896fe4c12ad97c1e0c6afebd49973c1b7a4d836fdf2c10e61b440b3dde9b0e8b2b980cdd3de70793efd5d98292039c417c933ce1d11e3f4fb2585bf91e423d4be6d3662381c3da363f77127e4aeb7dc82b88780d8f8aea808bf1d8ac0c1348042b7d6db9c56ee2b6eb0b74593e152cce76a86762610bd1d71f58a6cbef4921e146803782822fbc4b423ae528d828b7a8ec648a69eb7f7e2a246d0ba499b690b9f307a9c5869f0845918c66ba2921e7a2e9c98180ebeb073fb67075828b9a05b606284f5e6cfc6d8e0e76a05fc15dd66b3a3bdf5cf631520a5251f0f989d3019978ed6068b7cb924a8ed044c3e19be9f2f56d69396b12e452f0f614cba778e699e8a261a155e6471a30fa121c1f2da0a6183a148ce2cfbd045543607479703e9fc0da0bb5684246d5ec2ee26571e2fc7175a477b5fa76a81f56fc71dc001df72534b5bf22e2daea508cecf6050710f60c365a2a0e1ca3fc8eb134ca88684b26fedbf85e44bfbc8c09933262a1833abd14657f90188ed4da02d11040dbe1d119968ff55d5fffeaed29a290327c7175366633e7f1c35fc2976c8c0933f9972984ac8165ea8e57787775d86efba6703417812e70f2c4293334519a89c664a388fbd6533bc82f2b231ec44a66c3bffb9cfdc1c311decf56866b24c55255bca382560908d0577eda616cd474d160244ead3476adb07eca8b9551c7a8963c5d48c9172a2c703cacf314a084488452e34f86d588aaa7f5f946cf26cb70fa03f2767bcd41eba33d92f87e20c8b05e4c31164bc1cdc9746644b569105512d47cbdb604614ccb6b289c7f5b73bb684774d3654695504baf99fc5bab74d33a376c3445afd2191be4ab09e6527a263a2f7841752ab87d4fc46d8d528c12f888427abf41af7d98da159fad0642404a56dc4caab80263cc6151938f79e452aaf1a5396eeb893a8415aaf7f10e80180431fcfa01b39669050aa97f02c02a54d04b686e8e0914790f3c3bcc3583ba29b2c6be283d7dfb0fbb0c6531f6aa5fc927b7f95032aa87923a4df9e685441cc2c502e7cf6f37414cb0d62e5bf8c3eb53d3ec44fc0b7fa95b84b666fc030e8cb53415a56ff5446fbb23aa20090facf78da2ae1984c28353ab5955a3807c380d93852fff0688759241e9cc3f8afb8bea260aaa321716956ac3322895805382b97ca5998738b0cb2192284c0a07039d8ee6ca3c1455c273db217fdcd66b2950021e3a36f3db6242efc10ccfc200c5ccd4d4a55925f376e30e61c800fa73f7884a336fe8a09aa2d3a733046c25399066a69c087c74ae8de8ad8e15beca4f09f4b5a5c5c5d51b4299b3960b185edeb72f0425e01d92b0489f49fb9204b9ca51d6e22fdd84cf5be31d1665e40984d613604fa8d2f0e6afc2b85c90cea516cf111ba2ca32880fecfbed1554822c7d4b0e93d6d23ef61433a489e0f86201b810b2c114fefb57121c7d1794b152af95b892678e4bb7685a957a27d093f62591b237f23b517a7cd5a101eb7338368d24b5bd90c39e3b5763007303bd209ba77931f4e8e85904c2268fcbeff920f76e29cde36ab3e8af7b6901e9a85c8d797a926299d0c5db92453f5185da6f7c3031044e2f885caf2e320915fd5c25f7935984805f7f5f9847a5731cff5e8cf0a209e5cbc1b05bb3057d9263ed87c7df1e1d8678b8a2b70520109eac67d6a2658443afdaffd7d78f55ea8ec3f894d3af24deb26d37ecbc70ce2229ca1d1c036aad2e09e4a12850d756a44246bf102aecbe83d077890d83a9b6b599353a9893c2745bfeb3c7afe5c27633017a59dfcea26abc6172cb7ae88eab9ebeca53f426f21bd1b822debe02177e79ef96814619b2b210caeae2c23792f779f041c101a8d459812ac0ede4a7ebd389dff5f94276f5c64d8a6ee2999dd1ba0471dadd238aff8e7d52880b1a6738ab101ea052c0d8a29f7f312fbc3e0dd918a7011877f54256ac269c797dfd24c916c75d2ec05091c42dab26469a4635bde1e0e912ef9a6558484a7e1bcc59cb85e8d9f43045cb429067aa077a4216356f535cb4b7e403f797dd6b172a9571f43cfd422f1fb60463b1b27cb09f357d41660fdafc7b82db3c2ac513b7a297911e842be82c3413a8ae04bb219aa5874a15bd87d83c9f138ac7afa5a971b83d50083e355944e06a08c38c35ed20957d1dc2066e5a36b322bca1034954ddeadbe7b9c91d8ee69103e10a65e9cb1ea4fd8f7b94c3b6b75375f73de31eff66f3c340e4951cb2e8bc6db06ab408d4b76baf3cd17becaf0c2a80458ec95c35a02825eecfe75cb9990979c3acda423d35e82437a57dd78471cebf213b43be901fbe83c96472d882e60f7ca5013559a63b72b3b6ccf172a61199ef473f9d69d3932239e005b8f17edbd2a4c9b2769e19ed59c01b0bd3f69a6595470d455b6cbdf4f3cbe1f05df39ab6df50c3a6c2beca96516de46affb6857e50c286674234c740c51c4b45e280f2e6afda16c8c4a2c1e85b47f488dcf0ef9637c6a6e147677b5ded278100ef33455f74051c40d2200cd5e0ecbda9c0d3c423777d188a82bf20db2abd2e76ad2307fb7aba96f6a2bed2d79e32a27ddc9c07f9bbc62774d4aac2810aab7600e9e3b955baf378c4e3e0a19344f4cd883468a73b563af551bc68e91198ef7d17b6d323deb4e9df03b02c44c8863eac50040d47072e04424f2a3e91821cc5df5e393cdb54085f93bf51a1ef3c38b11cc625bb81d70d447b7876456e7dadae42673d1b6c5936ff6d6890d89bd8d1fe68c4d404416c728a95bb03ea57701bac9638cc6ff0d222222f18a669af42df2ba603b2ed97a3aa0cf4364061e0a62397a1d6778e650bfbbc09e7deaa8514719d6d4f28a7194b6faa86db0f4c61475166c0c5ef75337782dedac24c4850ccd7f855b046ed0e6d4bff5379574469f977b363ad64d49c313ea2f6508ca64f31e2a65d1be45d01a3f6a6dd4eb81586953de2b069dd84b8c4754e2a660944e091594dbf943051d5ef30ea342f7b912e91d861183c49afe6f68bd78f8a6552d2300361ee791fed4001b980ed7341734769d16581fa33796f0a685455c06339871ae5168ba1a950a6b57ea9ce437f886e31cf9059036454a62436c9c657ea79ad91c7151d25b55c1832013a49399dbbacacd92668dfe5c01939f53a4ccf9bb3a55591e8e280e877b64b02576907596c338e583a61ea06831034a1888e95d562cfd7b6632e4dbf8be27f0cc4f1e0003acedda0879d6f65a1fa82f8940494e547206d4ecbc3083f1bbf9be785d7f86793486c138beaa9508d2d8bb171e9d54421e882f2fb2d824e5afcabbcc2d314888f6c5f191df798b555686723309663c377dfceda58350d34a0b09329a483a5a099621a3511571200768f95526b251f68a22a42124665c48dc89673fbb0b8906b5d2b2d61c31d6ba835bcf8004df489ec73621f6544a95fe9c6379ccbdf56659fbb08f9917b6ec6604aed0c247ecd43ba3a94cf09b919db778ba21d651a8e892f76dbf8fe7e063397bdce4b851f7cfb6d91670568ed553c6610133dd6ec786c08738730a2f45513e9e99e73198f0cd5f78a6c1681a3ede04b8994309a0c3a37d4d7c5a85c4ce4e0b5487ab450771101dbd86f39dd43e33d6f9447261153b076548ded86215c9436a18ba2add4bd190f6d10b7d58304d082efbb1a274b7ffc5ba9f40573863e53b64d2bef32b537b67cb044ec289356bed449fa34fe70e80d0f870123132febb4acfcb6612efe8c377ba26589ac771a0205be71883f427fac887f0c1069ead647c892c0fea2e8820630f6d7cc86028eb5610f6e023154e3cf671455ac1cbd21bfdba100b7e419e49ce64b779f529c8b848be9975fca79815853d528076e55eef3946d2e7e5561b816b76a66f28b818853aaa6d18e99a5645a680fce92bab20180a4c01fbe40fbbc6cc8c22077a221c938c24aff8062d1476658329fa6081e06e6fe0da138d3de2c0ce8119fdf647b08f058c9238b261388fbf0b6c6bfe88a49d4722cc49c4fa6773e8fc0c7bd1a79f35c1efbfef3fdafda301c894dd3418d82546b0b52d256aaabcbf327b5dfab68225ee92fccdfc10aae9c58574baec0c544df3f8902b8b3e7e37d6348b21990d166dc3f40ba119a0d030435175432b6f8d7004d5f02d4799c9f4b73868f3684ccaf53cb4e8a6dd5f64bbb2ec50fc3c9130d8d3204242e758a5b7bbd527708a49c8b58605f794328bc63605c490151ff9c279a13a2f06c3c6c7461c8c56bd7b21490aded3fc603e3db958fe82d80d7ba9647840b7783f4afdee0bb37f75e454625243d5232f17552adc79fa73377e8a7905d8f3b8c72663672132d19af5cbecff17f46796d259c940ad9ab70d1263f7cfa2c7ea7f5d48079f25d3776b16683a365f61ed28a43b9e404bf0bcc2daf0d9787dbc47ac9333272015428200e33546f1a9f4dbe8fd67b503825f881ad24df494d2ae8e7b097a77c9a43f43eef488521457d0bd6949593884c091217ea712286b4fdf34d9c35f090f16b69851665a19fe767a0d3abae62c7d59b618f56aee946b234fa0ac7357e6df57cc01458946f7908e23948694e0bcfbe20c6c5d2c3c683d9d8c80694e83f8c6c11b55e0c89f6224ba064f9af334ef0b5f07784629f95399e9547dee66c943917356253efe5c14c17876e0673a1836eabe0c4b87f3859d56474a082324b2f07757104ab12ae3e640f94cd1698dc81ce0de0bc85a1125805d8a12083a8e9893da4f047b2e074331b290b587be3e5bbb8111c92a3226f0c56117e5a8e3618a060771965d454e62d50f9a8bb122a2b1421dfafa1036e3cc7e459549813be96c04bdb1134cf6df4b2ffa00d2b60e32449e9c0d6c1989901dce4cbefbecebcc5cc6d07b2930c7ccb9e77ef31fc1dff6b79009581c3f17dd1dbea8216b5d7ad1b0619ed7f1cd4b20210b55decfd74aac1a712344e851ef06b2dca9e9f0b917cda06ccff0c0041b97b631767d30eaa4051026c3622806c063a41629879b5a20329ddf51ca20962878be7167cfa0f57faae542533a4e0c504ab876b444ad234340a5dde0354c04e38fc91b2373bdfdefb976eb02e15a25b48b32d31bfb52f82c0efa2476bb5b855373e27facb7f10059f71ac21961a6bd12da5a1e353205d68188ccf6ce3f48340cc4e76770a4a2115cce85e7264c9e81f460cc89dc3755f6aa02d9cff80880238eadba0730c171fc2b9796cf290c1eadd73787c941214eb357a4bdcfd1ba0abb6a4dec211bf85f5e8c0ecef1f767597db9fccfadaf6ead4d2a9df525dcd571cd6772c02b6394d1b18cfc4f5573b4923cc2efb014e04295a3383eab62259786519524d2a2fdc60203015f2eac092d4b7657dc83d21cd5a816acd9620e2b085d4f55966c370c61410fc889b7263e019c1f27673d79265d91fcee8078def0d4eb9ece8616639768b930fdd3130fb44dc1c11fc6e50267b320475387b805088454da99e5b9624caa06175793065be194f4cd92ec12711953266518717cb08d791fb4546f3e66e12184b2f3665c51490f04af956a4d7efc88fc8f9c5d1b4ca5994819c76458ec73e285cf676243acf1f2e7ee6eb84ff5ab5cf0b2f5e4bddee031765c5f607175dba2f1178b49e5721d3c5fd59f118d9cd1998c7cf0642dbdadafd68fd708a8215cdaea14f12335192b6486a4dc54626903f690e65e3b1b2452561bfafc068db692710548e12d9075573bf366466325cdb13922f795eba7bc20f3574e642fbff620bd05417d88f1d7a2ba2d5271dc0c11be287e1251d2dc2e1cc2202a6759af292afd0b1017340126ecfa19dac7bbc04458216ded65137418a0f558b9015db8e4a6996761f0ee7196a023865112a79580271d7bae56050e3f9acc08486de5cf89a59eea2a352d62580c23a1bebd1daec286d8ef3a17bc7f1206f58c3a941544a6d94deddddf8a4217f15ac35d990899c930770395426cf2dbb5414fcdab29e338def8e265173c8d297484f15a0839d7ca84a05fb08c9c45cae3a2fd763c1ed5ef1b5c7613d2063c4eed9b81d1134a7c1e5fb93d09da8cff490453b7dee1fee87175ce5ca9f1a52e7af1ef12677147e4003e8af793b8768afa463fd631b34274c2a6220e513c2ccdf8e722151b27da88a621a84166a7c7009dc7184c212e3050242be25354d98a0e6fcee37bf098d0ddec43fb884ff2e22c8a8f7f386605b538098ea5df8e4de3ddb68f772abdd661f1b46b818374231486c0c8cdc6056d75954e181ce13bc02ba1172b0353c8e1c4ddc5ac800da4ba9833c6b333e7a48e13ea6eeab53428bcda2067c47a0227298a3101a51b458de6693f23bb5e28d2557d1a790463606ed33d014e7216a68f67946b250d5b02d6e259992b03245d7c70efa49a91a729191388f6aaec114f80332755946f52cd7d22c95b364083bcbe6ea78b02908994ac52a71e7e318c7e3168c04b5efa7f8d42fff27c8a925e5eeb71d6574d4787f236229d0ece2be4851a1065b94c988c5367365c5032ea2c2719c7786a9084d35ea701fff5a099e8e862ca093858cd3a696de21b3138f8a3c028cd46535f7eac79f579b412d40ed456941ca6039dc2394b9ba032657f031708b03303bfd77031dc34d6ad90e1c20db8957983a47118519ad3d251cbae612ab9cd8c70e664e6ca57276b7f26e3875355d1cc10220370b8ac9519c733c0f9388dec7d90d85299345aa8312eb657b1cf3d543bc099515f9df6c02b03dc35826580ddec0f52f413406e8dedf110fc47b83af80d9503eda5fc85e077648fc6723d1b4e6d6d256ca427ec0124b3d848873da44dbec99a6a82b3300f98740aeaa5b5ecd95731389a4513ebc1aa413b2ee2d7f328d73ad7d8e1ffe2fda985a5a0a937e305f4b5060a1f5a1a2ce06cf409a2a36a385ca12997d05f136086594a14fdaab6ac196a35ee4f2f939331443a582e7aee14e61ab3f45066598c8dce5ad9a46e727b2158d55d04997dbb71aea2f489f9dbacb8d12412ca8ed5dfd966daf9b2fdbc48ba0a0e2f1893a740a803b9ac461a2d562dbe7d9177128c00ba4a08ea2bbb0a1fcfddbb8cf94d689d278ddccb151cb6d854d78b27fdb9c118594762ee19255bbb9506dcccae9ec6d8df591555a88d977cb4c066220ce94574b81260fb08a092f045880c74b13c9b6698d8f72acd1f905524c8935b93cd6466be0b6773ecb516be7de4dabc83996f6d5296f194302ec8d94aa569ed35886076f4ec2dea03d452884fa68f7f527f229a8144b1dd8cb82e5fbbdaa61526f9f4ec51132bd44ade636a8d1fd9a9f9ef5db5fb6682a5956bd0403515bef0b261ab23f94b8095128250f1c6c997b3a06f7fcf0c78b78efa07309f91b12d8584db721b334c4275421dc942c89748fbbc5670da965f684db10bc4318a59038c9a36daa7ea55755a94c5b2553840d0d2a899302bb691a89bdabe3a98ba42ebaf4be0ec13f3e02cee828520a4c021ad7ffedfec3f9947cca14758f4912b0c9b54e876283f0b87523f17957a5c53117ce25f1bd3cc6a9e94d214e6788a1e6740a6f807305c7afe321007661d9817c197a091ee3525daffae0fcafe46ba0a1a2e0a1dcf3034c9c4d5e70149eeaf7400646840021795e48f8e18193df3921216153d7de2d51c2145462f3a20cdbee5d9ad00c887e108764d65e41e8c06960837d5ab4623edb257dde8f90f384a11d402eb9498daa36104bd52ee9a32a2125b70cad7eafc447a821ce4513330aedf5aa10d9b217c3f0889961610e77fef735ef8bb87dbc370feb99a34c9a8a2773000efbc51db2c5242bd0c3b188bffc4df0d6227fd9de5c9123526097afdf2c754e1d1690889b1ccb4d3a06510f143ff859c0ad61a83b5ecd53d09453deb5506da60a9953ff4cd71f5e18e309989f2c2b9fd748e1bab923237c2f0670004b18704593432286ca39c5fe156e8e560216075f9cdd013c0d8e1cd7c1a9be6c95cfbe09fd120647e1f51223b213ac57473242cee1c86a96ff6257bb3caf5110c327aab74f67a5ba1531fb257262bf704033cd7f9e2ccae24d01b3270a05ef43a53e7969bbdf28358b9172fd73d60cc94c927e53ca7038f4a5a4346a520d4a55914bc284ffbc28ca65a90a7a6ad55e9ad773c8ebaccd03855801b496902235f9b715f5c89ed5fc1d0b3b3a67c8e641792b975c54936f0ed015a833ab875b8aa4471d24262a124f47d5bbe916638b93f437794987161d8350e7d4a0b578f5a1108eafcebad71aa0b576836db39cd93124bf13d6901bc0bd321f66608e0502e27197064025097dc9d8a3c175a0246d9aae934a89f2ce7f55b651cf9249c34de04ff14d3d3be818d6600a1fe7f452113982da9711330623d41ff2e795608f0152bd49cc8c162825f61b0c1f4fba022f31a9c9929d96c0c1fbc386b2eef0e5d2ebf6ee7eca871975e9927ef4a29c9f004d79554806741ae17b59ff4457858bee9c5444f5554b8f00aead33d9ac42ec7e83984d71d22410e9db5771d6647a1901346d0192ea57b60001cf3e474fdfd17757e5d900e969a3df7ddeb67c666b6ea05202027402f312194144e26fea3d7021ef841166a437fb9ebed705c8b040574b93cff411e7b010cd3bf52f2391e3542d26e4822b0b6eaf041ac269501245b48e31d2bd4ec97a31462df016d438b306ee048b35f1c9f552704ddebaea1b97f591af01efae0f0ceca5ada270755a490ab693a46cc88f8f48a14c332478b0e99d1b2e60f0c8b901add7c5ac337b6ccba8cab7449d72cf6a7702926ed497cd3d89d96f573a4bcd43b43978aec97ec31c89ce32c8dfa8c96fbc0a921ba1c822da88ab8c9fd523c1bc12b87c6069855ccc81180970940eefd92b56562883a2b2f2bb741a2e6d8a6465e046724be223695777f20f1ae9a64d702c6026229d06739d229f3a6a8932330500ffe138eb39a670a25994c44b5b9e8fac124aad0b6ea759490c1263146ee8337a0c9df2466b9a7ab5a813f47063334e327d5c3158c0a28b6fda053effc9e4348127c3079ed5021c5faeb2eb5fe8efe0c545cf8f2a00f2e75307253284746585858f5aaae6200d143a4e73455f4dc2942a12e49b996026c785f1e2f53c2aeba16a720347668905cde5c8cc3ce99c7ca90e0ea22101fedd2b0668f88e4c0791fdb3e93ccd0f68af0d618b6d16734b89d77823c716d891596069a447bf92ed14145324d94a47bdb9c44dd722d770296f11b9d3b83f2ce014b2799f9c5803f701214a6d257317d697ad3467d4e635d4f9f49a95f437201142769b849ae9f12342c5a50e23c78b85dd772e3318ac9fd8a17365a92e2907e0d26ab859c50c9d2146687619a7332d0cf12b56ea7587c8e677f9aa7b1fb1867258423501a392c936bf911e40d530a85755817c9ab15c009b28114289440ded240fe001f0390d57ecba02fef4ee0ebdb6398105eb94f5c8498f6a9de899dbe0bf14ddb1d470b6a4c5d618fdb19b5b4906cc78484970e0dbc3cd70603fe806cff5578d7cd071d7fc69ca0aa11ffa4cfb4e9b8aaf40a8a99d085e05883db3933a5609fbc87e600b31c7f1dbd0ff362010a62b4db53bf31ae1caef6b4b011885239bd52604898a919ba92495b56d7f7f0c2edabcb2574f113c8f74ea76d549dbf52cb6714749468fb21606ebefa10d13c43b305f79a7f44bff153c4466f684d13835e0e61a16d02f3ed97807afbf39a05e0968f8d0ab72629de26a55626850edcea9812beced3dd964813879c5bc9e65f9c8db64755e0b4aff4d6211d74d144b5c070d8ec7d79cbeefc96e3037eccd9cbb1e2e36481fd804cddfeccc1b3fa088ce76eb7e780eb85bf8068a107dcf8883a59c1b87ca28f58834273c1ec2c6585b72e4fedabdcd606019d03907c8fb8feba09c9342a46f6b2377a0966ae5362afc20c2070a64eb7acd0919c889b22bb5ca2238d72aa843abf19602da696254a990af7ebb9d4b34f29a825857807399ac63b3b85c0dc7d35de9dae91677b8efe6f3c533c2d81f0e7cac816a149015b2d5c650c124e7a118b3bbd257d6ecf8f30350aa795a39aaeac072a4b3c839bfd6bbb432b3ce5abd491b750e5e6f9fbaad601f7816b99e5636a6648eccf24a1f3ecce8f5a25130e696de214ca9be9c707c6b02abcd6c04886365229461a628e1fb71878ffc5b085c670269be11813018d3c0a80483732e8bcf0246ab26ed593593b1d028b7a49d534df48b5291572005dc7df86c660bac6d6f1ad7c51f110e5d636adeb16eab0ffef6b2e346d35f0a9bceaecf04f15268e5966bd372e34e14123fb69b1e9a04c5c8f1d242b2a9962258af7e79ed01ee16c98bf77c34293eab3e7b26126b3d616510322f40a599f993e8e6b092d6d4f85553d6d70658206dc5a76a7d2ff0c8924c8da9b4da204940e5215672692d3c17ea54fe61f2c2dcbe96a56b1ed951b5e508962b9eed3bf1067b5598c9ae5ca394e460bb9315ee4ba8d80184ae13d424884430837ebd53557698b11df69fdc3bb700ffca306aa7aae90403c4a0f4cff3dce4f9ed82a9a83726cca84e1ebf24b0b909e8b2428f0bc3e97876f8ca6bdcc4744b7ace6d9d31b1cd39125b6d495bd7562c5a91ff84383eb1a4d787613bd3ef24f8529478be0ce8fa326a025502cbd649cd188cf93d9616c2188b3f25a9951b7fb667fbca8186e794fd224daed67ceb7c4156c047522de3b58e527a3315e46e9399624a6d3e2106dfa30225128a2597de6fcaf3889511fbfd1f0d58433fa5d9775e6b33d7a971d70674cea8a2097e0a9183a7a41128af1b752436a49d6f0e9b06424f216fd42441c34b718062723a41cea62a24c2db0012b202a0553b2fe1604bdea940903ae853f8664214ea57b448059c1bd06e1e8408d7d65cfb9d52833082b41cba49b168c43e700f93c6a3d893e054cb76a4fafcdf8bc1a064b6f071f7f11fe6311661bdd8c988a6cca875bf5b3517700cc81578388b79fdb7371ac56590162bc8d244906cd9003775ca70c4be358c1a2ce3f8c9560c8e375b8c461540ba6b1d48859567a48b61120df160885fa5f3555f14c6f211eaeee88afbd8645200c6507c7be662223619a2092dcf57086bcad9e96a9cc363106350024bd9c9cf429352d808c7b4fd6270c632f0ef795f907298b2b302948a273443bab387ae452c4086db7f2812407df391d247657b9b8680765a6bbf30082fe26ac235d0478040bf97bd73565f6168884fe74a7939cd3e991754b787c62a1ee933aad450b09b1c8d171d9159eb9bf50b3b62134d28f0867a722dc02907ec93a1b432917fe2a3f4f6c2be706d7c829497095d73433bd30b1b29f696b5da6e366e15b06f6d4b10a1f94b0189b95cae6119589bea0381f1af291b4d7f67f3a27d97362e108553a68c67fd6cb0accef1b8b3a3bc986817be4a196b12cf48bc80d8bc278dd6b46bdc47ff6e41244284efd9408d9a474d74ec5a8d7f6955e5ef7e47300e07928f392eee4a87835971a2d9d97b3e36c167cf7bd7958df1fe17db543176a949ec204ead4c7201a96ddc145633bea1009ef21fcd9eb5180e9bdd5800ab344b800f163cb604ca0b5cacbf863ffffc6a8a152141cfc36d72d3c6cd4f13808fc8849323d774aca3f16555a3b7eb5f4958411845dec61b879ded6529c016b706d66a5e58557ee9ea57824679208cecb7f7ef6c8485803f1c57495f27769e0130acfb755a6982b4d5e69bd86550240357e4af9451ea2117f75d95706beb16f846fbb007c6b64c2939860c10a5884ec60fbefa86b6e876747f06ad7055f3afd75c4932869ce1e9d85368202f48d86295adf6f7aaba6ab5519b916f5ce06d8871146b3d744d1ab91599ffa995c5a0b57eb42af12093aa0af3f1a139ee51216a62068d7a4eca32607cf7cb6e1587550888e9f5fa5e114d9354bced8a125f3062a723a4d82e2959efa84c123d19a891c92a3014a5519da0fb0f014583e6b0d9032804d29004d51d83e56f291c346899cb3e9490b8283ee7461156eafd990b5b392ae3a5da22523b1a05efe77075522d0fac08003679de5abf0176369dfce77ef35fc2c00e9ce6f49abe42e45d98a27b2407760e7c8bf3880de7b54de59e68c56c89d7194099a5a6a7e4f17eb1e6a30f19d95baa4f6a4cb1238b5957ccf4284c1e9a1e310652b59c20acc0ee2fb7a3e8b999fe24bab067f899aa6eb1c6557429a7c8d2e5f32c87a7840f50c7450544e35b2ed740b06a7f5c2539f323c0d4fbf586646faa879d9fad33279d73828e405e189399fdb3e817733b67e61fb012d0efa73f4f4137541afa129e81a47c19f4a5cc0ededb0fc3df6a2b6af94c2eef4f2a8d710287252429fc4ccc32589dc8e5c8906902a566d82ee21898a610a34213ff8228539b89159aca40026bc36a1610fdd4ea9f196484362c571fd7f9005f473f7007ec2c09d0a52fb7aa5b288e144588c921d8e89d4b71e36d79d997ab2cdd394277b4a6a78175275c5f0cf057530f6ecc7c24cdae79242391974abf22be0d287eca8e07941e06527c72aa6ad21d0bd3003b263a57bf212882209e4a7892e88bca92c68c0dbdc00ec0a8e77d18b262995c7052617c66dfbfda238d93b6eb089eb05da07332d2f42b3531e78ab30e7125b058b4ac2087b94c72fe5b07347a4c683a16f844befb4b3c4756ee626f350f4b7f1330c92f4d16a458788676fd5afc17afc82cf7020ebc72e3267ffa6903700124963d7de493ef183c9c676e37fd77c416a8b3da3d2f8354cfcbbe9ba02468b4e92f2f3e9f9858a7a4c22ca8e5a03a7d589f950cdc3faee1e9a5a75cd0a8207713763ac019947332b1384ae18a95397459f7052bfcaa64c736f1ebb162552fb45305121c2817d812af603f123e95c01790a1404ac2a6bac21e9a329b7602b2912c6bba5a906cd26d5868165b23233535fcbbd777d1ce33022cbd2f6154f055ef09371068a077e9d6681b3dce918f9b672678e706a0aa245f89c914676aa6661351e8a092ec8f958fef313cc328b8f27533f55c58a165b5d096c8671146514db88eb262269adef72f9642b3d0b54b796b1cf020b69fafd557eb8bda8848da0ab18949710a35c21dcf26ff246b9a34232a868caa4108e91f9f216e7f2cdade55f8e04550d3754e2501c12bc4bd2ee878fc18de9e8197ac34d05c776b7fc89af419e6cec7c9aa2f4093abdcfba8352bf7db41f364638121273640a8a143e36b2fd985913aacd7b96dbeacb0210906b6a2b8e8cc3d3ada1ed318b13b948f76d0225e65dcb3f150b660d8c2ea7d5b51bc132fbf2c7b9229965d78672707ff8b74c4622055e34570b814118f0c64cf1bc47742b646075dae6743a7ab26b926652ef48bdec47cd97bd8d9b5f7a6c0a406784e154bee53801a2a04da60d642538cb76f4fe19d1322125de0edd9b535116fde37d38e7d425c2bc1fd9c3116a8dba32c4677c02e02da000fbf38eba3b45e18fac2204eaf37ec0a22bb4ad569e364dde1beb3f6821a37d9acb37c2f01b8acfb29259266ed5997a6bdb50b96b8edddb59071e986d42dbb46f21f8ab05b9a0cfb2d8c671153dd893eed73c86abc0e9ef9271ddd468e632ea7bdd972b77d95dbc4d4fc7da7df98c19f8f1817f061f819c0c5c21a7af1d0fa81faef5439e189a0b8ae9a2f6c314b3e70662570a1b0dd18a7a8b50067f6ffa095f0cc15814ab070b0a1f1438f3a355d1d7a3c84d9fbb7677a8aa2984312c1d18cb97cef21824ce3e47127c78a0648d7eb70c3d1ebf8b5b2ab7210e952d6d22030276c4365dd31168eb9fab131a061491232284018f7990c54f23072c16b7239c97eecb21441efe70b8d188edbb76a66a21e2c5e6ffcf9716297eea5d3ec2c6fa78de70336276f9fa170bdedf9dbfcea4e42aad634f7fa66871270e4b17d72b43923d3c6cd15f0df2f2da2c9c3cf5abe9f0f5a5443825347ffb687b2b6a217620e0aac1912c4dbdc68fa48d4751ee78d90797e20a3acce64175c986613f8ddedd25d0173762a39a06670e2ae748e955af218a07783c30be7c15fc240df081c3d745907e8704dc3256aad07d7529b34d5fced358fc26a632d562040992ae1b8ffe9eb4fdead93d706689ce7a8c1a13f845f9094ae5be3b6771292f68635c11c424a4a6389cd9d56107e7430e3621501109bc754be9726454a6fda06e58610d3dea31da8c16e8e5d4bf4144e067b79259e116ba9ce27238c13511f321c43b891d7b984f0847dc8e0518d1482506fada97e6e4c6cbe837a522a19242854de7a045ede95f2ba97422064e09b5f978122999a80666751c6c46a03c05eb7badd15df3d82a6ffdb5a89f47fa00be2b880eaacdd443482c2ad0d807345a421cf004f291cc269fb5e1a9e4a73d8e53aeb10df1bd88554e81550fc88a9b93b8d5c7f5d5a208324f9a8fc48f2d6229a1353f985e429600c10b960d3b9b73aadd7e2270e8ccc19a797a8dcb3b1536d2ccbad607cae052aeb36465d9e439d2016ae0e72bc15a1875de7676f5181f3b871a30d90230b442a2d5d2395f2a302f7452706bbda2ef199e6417d8d92a608202207e20833dfdc3581d8c316272171d2c86eff13fca21761bc273a95387344e5b982c66e7b3f6c422bc3f0f6af9531b4c6df1d25529be8f3d2336c7eaee19d37e7f0541bcc9b1176a244774a4f0ac235a61a47bc876c93fd315bc4e3c08d68b92d70f88f3d0badcad9bb3bc978bf99ac910a5392cec8e1e4107c95132ba8bf20fb7ff60d62f451045327674e4904be96d4c4fa903ab8c6c3a99bd1d722871802133d67f3cb95473006a0e1d573723552c211943cfe5b22a51b6ffacc4bc10491e88e3f94421ef4d10be59c091b0fb3db295ca035570a5bdd44cc5c784eb858ad7fcc7ba139f9eec25489bd9089181a3abe4d5b02b80e70fef99ad05eac9bf0b961c5b537b95bc85fc2beb746cddc5b81674bc42a41d6880bcae7d8411863de1c786c1ccc576a8b7f1d01081840a3c45596abae410598e9bbe2c2c635b0fe856d804be097972541aa9e23d6eba026cb6810288b0bc4780392da545ef248a66fa64f7568863274f5456826030114a0938fbf063e8dc1e4530d1498f638d880dc3df177991e7054772101608fe302d89e838bf486bfc0f5392ae71bde32259fdff419c92b34d0cafc303a385d1fa9bcd500893e50aa311bf515ed2c9f2971237c7652753bcf72152145e46cd0eb7395642552855e46bf91dae8e8427044127a04b52d295949018dda5583b6368d02d0caab4f3371d19449609eb6c13715b4c1b4460f9bb181b1997ce53b758e6287c8f164e752c1efdc121ed5531e5b93d0fff5d4d59ac65c1150d520cc7105f7dd15a9c877c45341cf64d2abca6ad9a73375d46c2d2498d11db83b8f3c14c6bee8db1048fdc67a8878a4f4dc57f4d647592de539bbf499e4b63e1021f192472857652bb2e019f4b98985a166ef704d86359402c2d6fee7d55aaa8931eda438d07f4e16a78db37e39665cd3706a053e060123ec086dbd31236bcc3ee2c5ce9eac952dc6ed42651d96d3af2fa01314b71a7fe085900f43abafdc1747ab3b05d882c60b5c301dbc18e83fa2e093d12b52ac503d8104d6eae1124266d35941b73c62611cdcd66ca46cdcc53b25ad77eab5407b42565bb6a245d12e0a2b00056cf35372be60418cc8714c72eb2e6a89505e0b3
@@ -0,0 +1,279 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+
4
+ <head>
5
+ <meta charset="utf-8" />
6
+ <link rel="icon" href="./favicon.ico" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
8
+ <meta name="theme-color" content="#0d6efd" />
9
+ <meta name="description" content="QTCli是一款基于node的前端工程化底座" />
10
+ <title>QTCli是一款基于node的前端工程化底座</title>
11
+ <link rel="apple-touch-icon" href="./favicon.ico" />
12
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" />
13
+
14
+ </head>
15
+
16
+ <body>
17
+ <noscript>您需要启用JavaScript才能运行此应用。</noscript>
18
+
19
+ <div id="root"></div>
20
+
21
+ <!-- 项目说明文档 -->
22
+ <div class="container mt-5" id="project-docs">
23
+ <div class="row justify-content-center">
24
+ <div class="col-lg-10">
25
+ <div class="card shadow">
26
+ <div class="card-header bg-primary text-white">
27
+ <h1 class="h3 mb-0">QTCli - 前端工程化底座</h1>
28
+ </div>
29
+ <div class="card-body">
30
+ <div class="alert alert-info">
31
+ <h5 class="alert-heading">项目简介</h5>
32
+ <p class="mb-0">QTCli 是一款基于 Node.js 的前端工程化底座,提供了完整的项目构建、开发和部署解决方案。</p>
33
+ </div>
34
+
35
+ <h2 class="h4 mt-4 mb-3">🚀 主要特性</h2>
36
+ <div class="row">
37
+ <div class="col-md-6">
38
+ <ul class="list-group list-group-flush">
39
+ <li class="list-group-item d-flex align-items-center">
40
+ <span class="badge bg-success me-2">✓</span> 快速创建和初始化项目
41
+ </li>
42
+ <li class="list-group-item d-flex align-items-center">
43
+ <span class="badge bg-success me-2">✓</span> 内置 Webpack 构建配置
44
+ </li>
45
+ <li class="list-group-item d-flex align-items-center">
46
+ <span class="badge bg-success me-2">✓</span> 支持 React + TypeScript 开发
47
+ </li>
48
+ <li class="list-group-item d-flex align-items-center">
49
+ <span class="badge bg-success me-2">✓</span> 支持 Less、Sass、CSS Modules
50
+ </li>
51
+ </ul>
52
+ </div>
53
+ <div class="col-md-6">
54
+ <ul class="list-group list-group-flush">
55
+ <li class="list-group-item d-flex align-items-center">
56
+ <span class="badge bg-success me-2">✓</span> 支持移动端适配
57
+ </li>
58
+ <li class="list-group-item d-flex align-items-center">
59
+ <span class="badge bg-success me-2">✓</span> 内置 ESLint、StyleLint 代码规范检查
60
+ </li>
61
+ <li class="list-group-item d-flex align-items-center">
62
+ <span class="badge bg-success me-2">✓</span> 支持自定义配置和插件扩展
63
+ </li>
64
+ </ul>
65
+ </div>
66
+ </div>
67
+
68
+ <h2 class="h4 mt-4 mb-3">📋 环境要求</h2>
69
+ <div class="table-responsive">
70
+ <table class="table table-striped">
71
+ <thead>
72
+ <tr>
73
+ <th>组件</th>
74
+ <th>版本要求</th>
75
+ </tr>
76
+ </thead>
77
+ <tbody>
78
+ <tr>
79
+ <td>Node.js</td>
80
+ <td><span class="badge bg-primary">>= v22.14.0</span></td>
81
+ </tr>
82
+ <tr>
83
+ <td>f2elint</td>
84
+ <td><span class="badge bg-primary">4.7.1</span></td>
85
+ </tr>
86
+ <tr>
87
+ <td>npm</td>
88
+ <td><span class="badge bg-primary">10.9.2</span></td>
89
+ </tr>
90
+ </tbody>
91
+ </table>
92
+ </div>
93
+
94
+ <h2 class="h4 mt-4 mb-3">⚡ 快速开始</h2>
95
+ <div class="accordion" id="quickStartAccordion">
96
+ <div class="accordion-item">
97
+ <h2 class="accordion-header" id="headingInstall">
98
+ <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseInstall">
99
+ 1. 安装 QTCli
100
+ </button>
101
+ </h2>
102
+ <div id="collapseInstall" class="accordion-collapse collapse show" data-bs-parent="#quickStartAccordion">
103
+ <div class="accordion-body">
104
+ <pre><code class="language-bash">npm install -g qtcli</code></pre>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ <div class="accordion-item">
109
+ <h2 class="accordion-header" id="headingInit">
110
+ <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseInit">
111
+ 2. 初始化项目
112
+ </button>
113
+ </h2>
114
+ <div id="collapseInit" class="accordion-collapse collapse" data-bs-parent="#quickStartAccordion">
115
+ <div class="accordion-body">
116
+ <pre><code class="language-bash">qtcli init [options]</code></pre>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div class="accordion-item">
121
+ <h2 class="accordion-header" id="headingDev">
122
+ <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDev">
123
+ 3. 开发模式
124
+ </button>
125
+ </h2>
126
+ <div id="collapseDev" class="accordion-collapse collapse" data-bs-parent="#quickStartAccordion">
127
+ <div class="accordion-body">
128
+ <pre><code class="language-bash">qtcli dev [options]</code></pre>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ <div class="accordion-item">
133
+ <h2 class="accordion-header" id="headingBuild">
134
+ <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseBuild">
135
+ 4. 构建项目
136
+ </button>
137
+ </h2>
138
+ <div id="collapseBuild" class="accordion-collapse collapse" data-bs-parent="#quickStartAccordion">
139
+ <div class="accordion-body">
140
+ <pre><code class="language-bash">qtcli build [options]</code></pre>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
+ <h2 class="h4 mt-4 mb-3">📁 项目结构</h2>
147
+ <div class="bg-light p-3 rounded">
148
+ <pre class="mb-0"><code>my-project/
149
+ ├── src/ # 源代码目录
150
+ ├── public/ # 静态资源目录
151
+ ├── dist/ # 构建输出目录
152
+ └── qt.conf.js # 项目配置文件</code></pre>
153
+ </div>
154
+
155
+ <h2 class="h4 mt-4 mb-3">⚙️ 全局选项</h2>
156
+ <div class="table-responsive">
157
+ <table class="table table-bordered">
158
+ <thead class="table-dark">
159
+ <tr>
160
+ <th>选项</th>
161
+ <th>说明</th>
162
+ </tr>
163
+ </thead>
164
+ <tbody>
165
+ <tr>
166
+ <td><code>-V, --version</code></td>
167
+ <td>显示版本号</td>
168
+ </tr>
169
+ <tr>
170
+ <td><code>-D, --debug</code></td>
171
+ <td>启用调试模式</td>
172
+ </tr>
173
+ <tr>
174
+ <td><code>-h, --help</code></td>
175
+ <td>显示帮助信息</td>
176
+ </tr>
177
+ </tbody>
178
+ </table>
179
+ </div>
180
+
181
+ <h2 class="h4 mt-4 mb-3">📞 联系我们</h2>
182
+ <div class="row">
183
+ <div class="col-md-6">
184
+ <div class="card border-primary">
185
+ <div class="card-body">
186
+ <h5 class="card-title">问题反馈</h5>
187
+ <p class="card-text">如果您遇到任何问题或有任何建议,请通过以下方式联系我们:</p>
188
+ <ul class="list-unstyled">
189
+ <li><i class="bi bi-envelope"></i> <a href="mailto:296963166@qq.com">邮件联系</a></li>
190
+ </ul>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ <div class="col-md-6">
195
+ <div class="card border-success">
196
+ <div class="card-body">
197
+ <h5 class="card-title">作者信息</h5>
198
+ <p class="card-text">yujie.guo - 初始作者</p>
199
+ <p class="card-text"><small class="text-muted">感谢您使用 QTCli!</small></p>
200
+ </div>
201
+ </div>
202
+ </div>
203
+ </div>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ </div>
209
+
210
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
211
+
212
+ <style>
213
+ #project-docs {
214
+ display: block;
215
+ }
216
+
217
+ #root {
218
+ display: none;
219
+ }
220
+
221
+ .card {
222
+ border: none;
223
+ border-radius: 10px;
224
+ }
225
+
226
+ .card-header {
227
+ border-radius: 10px 10px 0 0 !important;
228
+ }
229
+
230
+ pre {
231
+ background-color: #f8f9fa;
232
+ border: 1px solid #e9ecef;
233
+ border-radius: 5px;
234
+ padding: 15px;
235
+ }
236
+
237
+ code {
238
+ color: #e83e8c;
239
+ background-color: #f8f9fa;
240
+ padding: 2px 4px;
241
+ border-radius: 3px;
242
+ }
243
+
244
+ pre code {
245
+ color: #212529;
246
+ background-color: transparent;
247
+ padding: 0;
248
+ }
249
+
250
+ .list-group-item {
251
+ border: none;
252
+ padding: 0.75rem 0;
253
+ }
254
+
255
+ .badge {
256
+ font-size: 0.8em;
257
+ }
258
+
259
+ .accordion-button:not(.collapsed) {
260
+ background-color: #0d6efd;
261
+ color: white;
262
+ }
263
+
264
+ .accordion-button:focus {
265
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
266
+ }
267
+ </style>
268
+
269
+ <script>
270
+ // 页面加载完成后的初始化
271
+ document.addEventListener('DOMContentLoaded', function() {
272
+ // 在控制台显示提示信息
273
+ console.log('%cQTCli 项目文档', 'color: #0d6efd; font-size: 16px; font-weight: bold;');
274
+ console.log('%c欢迎使用 QTCli 前端工程化底座!', 'color: #6c757d; font-size: 12px;');
275
+ });
276
+ </script>
277
+ </body>
278
+
279
+ </html>