package-installer-cli 1.0.0

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.
Files changed (2895) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +28 -0
  3. data/LICENSE +21 -0
  4. data/README.md +154 -0
  5. data/dist/commands/add.js +736 -0
  6. data/dist/commands/analyze.js +596 -0
  7. data/dist/commands/cache.js +233 -0
  8. data/dist/commands/check.js +866 -0
  9. data/dist/commands/clean.js +217 -0
  10. data/dist/commands/clone.js +104 -0
  11. data/dist/commands/create.js +220 -0
  12. data/dist/commands/deploy.js +169 -0
  13. data/dist/commands/doctor.js +927 -0
  14. data/dist/commands/env.js +688 -0
  15. data/dist/commands/update.js +275 -0
  16. data/dist/commands/upgrade-cli.js +234 -0
  17. data/dist/deploy/auth0/auth0.js +1 -0
  18. data/dist/deploy/aws/aws.js +1 -0
  19. data/dist/deploy/capistrano/capistrano.js +1 -0
  20. data/dist/deploy/cloud-foundry/cloud-foundry.js +1 -0
  21. data/dist/deploy/cloudflare/cloudflare.js +1 -0
  22. data/dist/deploy/digitalocean/digitalocean.js +1 -0
  23. data/dist/deploy/docker-hub/docker-hub.js +1 -0
  24. data/dist/deploy/firebase/firebase.js +1 -0
  25. data/dist/deploy/fly.io/fly.js +1 -0
  26. data/dist/deploy/github-pages/gh-pages.js +1 -0
  27. data/dist/deploy/google-cloud/google-cloud.js +1 -0
  28. data/dist/deploy/goreleaser/goreleaser.js +1 -0
  29. data/dist/deploy/heroku/heroku.js +1 -0
  30. data/dist/deploy/netlify/netlify.js +1 -0
  31. data/dist/deploy/railway/railway.js +1 -0
  32. data/dist/deploy/serverless/serverless.js +1 -0
  33. data/dist/deploy/vercel/vercel.js +1 -0
  34. data/dist/index.js +367 -0
  35. data/dist/utils/banner.js +74 -0
  36. data/dist/utils/cacheManager.js +198 -0
  37. data/dist/utils/cacheUtils.js +718 -0
  38. data/dist/utils/cloneUtils.js +267 -0
  39. data/dist/utils/dashboard.js +870 -0
  40. data/dist/utils/dependencyInstaller.js +532 -0
  41. data/dist/utils/featureInstaller.js +512 -0
  42. data/dist/utils/historyManager.js +446 -0
  43. data/dist/utils/languageConfig.js +1328 -0
  44. data/dist/utils/prompts.js +361 -0
  45. data/dist/utils/templateCreator.js +439 -0
  46. data/dist/utils/templateResolver.js +155 -0
  47. data/dist/utils/types.js +5 -0
  48. data/dist/utils/ui.js +421 -0
  49. data/dist/utils/userCache.js +241 -0
  50. data/dist/utils/utils.js +527 -0
  51. data/exe/package-installer +5 -0
  52. data/exe/pi +5 -0
  53. data/features/ai/claude/expressjs/javascript/controllers/claudeController.js +11 -0
  54. data/features/ai/claude/expressjs/javascript/index.js +3 -0
  55. data/features/ai/claude/expressjs/javascript/package.json +5 -0
  56. data/features/ai/claude/expressjs/javascript/routes/claudeRoutes.js +7 -0
  57. data/features/ai/claude/expressjs/javascript/utils/claude.js +12 -0
  58. data/features/ai/claude/expressjs/typescript/controllers/claudeController.ts +12 -0
  59. data/features/ai/claude/expressjs/typescript/index.ts +3 -0
  60. data/features/ai/claude/expressjs/typescript/package.json +5 -0
  61. data/features/ai/claude/expressjs/typescript/routes/claudeRoutes.ts +7 -0
  62. data/features/ai/claude/expressjs/typescript/utils/claude.ts +12 -0
  63. data/features/ai/claude/nestjs/typescript/package.json +5 -0
  64. data/features/ai/claude/nestjs/typescript/src/claude/claude.controller.ts +12 -0
  65. data/features/ai/claude/nestjs/typescript/src/claude/claude.module.ts +9 -0
  66. data/features/ai/claude/nestjs/typescript/src/claude/claude.service.ts +16 -0
  67. data/features/ai/claude/nextjs/javascript/app/api/claude/route.js +11 -0
  68. data/features/ai/claude/nextjs/javascript/lib/claude.js +12 -0
  69. data/features/ai/claude/nextjs/javascript/package.json +5 -0
  70. data/features/ai/claude/nextjs/typescript/app/api/claude/route.ts +11 -0
  71. data/features/ai/claude/nextjs/typescript/lib/claude.ts +12 -0
  72. data/features/ai/claude/nextjs/typescript/package.json +5 -0
  73. data/features/ai/claude/remixjs/typescript/app/routes/api/claude.ts +12 -0
  74. data/features/ai/claude/remixjs/typescript/app/utils/claude.ts +12 -0
  75. data/features/ai/claude/remixjs/typescript/package.json +5 -0
  76. data/features/ai/gemini/expressjs/javascript/controllers/geminiController.js +11 -0
  77. data/features/ai/gemini/expressjs/javascript/index.js +3 -0
  78. data/features/ai/gemini/expressjs/javascript/package.json +6 -0
  79. data/features/ai/gemini/expressjs/javascript/routes/geminiRoutes.js +7 -0
  80. data/features/ai/gemini/expressjs/javascript/utils/gemini.js +6 -0
  81. data/features/ai/gemini/expressjs/typescript/controllers/geminiController.ts +12 -0
  82. data/features/ai/gemini/expressjs/typescript/index.ts +3 -0
  83. data/features/ai/gemini/expressjs/typescript/package.json +6 -0
  84. data/features/ai/gemini/expressjs/typescript/routes/geminiRoutes.ts +7 -0
  85. data/features/ai/gemini/expressjs/typescript/utils/gemini.ts +6 -0
  86. data/features/ai/gemini/nestjs/typescript/package.json +6 -0
  87. data/features/ai/gemini/nestjs/typescript/src/gemini/gemini.controller.ts +12 -0
  88. data/features/ai/gemini/nestjs/typescript/src/gemini/gemini.module.ts +9 -0
  89. data/features/ai/gemini/nestjs/typescript/src/gemini/gemini.service.ts +10 -0
  90. data/features/ai/gemini/nextjs/javascript/app/api/generate/route.js +11 -0
  91. data/features/ai/gemini/nextjs/javascript/lib/gemini.js +6 -0
  92. data/features/ai/gemini/nextjs/javascript/package.json +6 -0
  93. data/features/ai/gemini/nextjs/typescript/app/api/generate/route.ts +11 -0
  94. data/features/ai/gemini/nextjs/typescript/lib/gemini.ts +6 -0
  95. data/features/ai/gemini/nextjs/typescript/package.json +6 -0
  96. data/features/ai/gemini/remixjs/typescript/app/routes/api/gemini.ts +12 -0
  97. data/features/ai/gemini/remixjs/typescript/app/utils/gemini.ts +6 -0
  98. data/features/ai/gemini/remixjs/typescript/package.json +6 -0
  99. data/features/ai/grok/expressjs/javascript/controllers/grokController.js +11 -0
  100. data/features/ai/grok/expressjs/javascript/index.js +3 -0
  101. data/features/ai/grok/expressjs/javascript/package.json +6 -0
  102. data/features/ai/grok/expressjs/javascript/routes/grokRoutes.js +7 -0
  103. data/features/ai/grok/expressjs/javascript/utils/grok.js +6 -0
  104. data/features/ai/grok/expressjs/typescript/controllers/grokController.ts +12 -0
  105. data/features/ai/grok/expressjs/typescript/index.ts +3 -0
  106. data/features/ai/grok/expressjs/typescript/package.json +6 -0
  107. data/features/ai/grok/expressjs/typescript/routes/grokRoutes.ts +7 -0
  108. data/features/ai/grok/expressjs/typescript/utils/grok.ts +6 -0
  109. data/features/ai/grok/nestjs/typescript/package.json +6 -0
  110. data/features/ai/grok/nestjs/typescript/src/grok/grok.controller.ts +12 -0
  111. data/features/ai/grok/nestjs/typescript/src/grok/grok.module.ts +9 -0
  112. data/features/ai/grok/nestjs/typescript/src/grok/grok.service.ts +10 -0
  113. data/features/ai/grok/nextjs/javascript/app/api/grok/route.js +11 -0
  114. data/features/ai/grok/nextjs/javascript/lib/grok.js +6 -0
  115. data/features/ai/grok/nextjs/javascript/package.json +6 -0
  116. data/features/ai/grok/nextjs/typescript/app/api/grok/route.ts +11 -0
  117. data/features/ai/grok/nextjs/typescript/lib/grok.ts +6 -0
  118. data/features/ai/grok/nextjs/typescript/package.json +6 -0
  119. data/features/ai/grok/remixjs/typescript/app/routes/api/grok.ts +12 -0
  120. data/features/ai/grok/remixjs/typescript/app/utils/grok.ts +6 -0
  121. data/features/ai/grok/remixjs/typescript/package.json +6 -0
  122. data/features/ai/open-router/expressjs/javascript/controllers/openrouterController.js +11 -0
  123. data/features/ai/open-router/expressjs/javascript/index.js +3 -0
  124. data/features/ai/open-router/expressjs/javascript/package.json +6 -0
  125. data/features/ai/open-router/expressjs/javascript/routes/openRouterRoutes.js +7 -0
  126. data/features/ai/open-router/expressjs/javascript/utils/openrouter.js +12 -0
  127. data/features/ai/open-router/expressjs/typescript/controllers/openrouterController.ts +12 -0
  128. data/features/ai/open-router/expressjs/typescript/index.ts +3 -0
  129. data/features/ai/open-router/expressjs/typescript/package.json +6 -0
  130. data/features/ai/open-router/expressjs/typescript/routes/openRouterRoutes.ts +7 -0
  131. data/features/ai/open-router/expressjs/typescript/utils/openrouter.ts +12 -0
  132. data/features/ai/open-router/nestjs/typescript/package.json +6 -0
  133. data/features/ai/open-router/nestjs/typescript/src/openrouter/openrouter.controller.ts +13 -0
  134. data/features/ai/open-router/nestjs/typescript/src/openrouter/openrouter.module.ts +9 -0
  135. data/features/ai/open-router/nestjs/typescript/src/openrouter/openrouter.service.ts +16 -0
  136. data/features/ai/open-router/nextjs/javascript/app/api/openrouter/route.js +10 -0
  137. data/features/ai/open-router/nextjs/javascript/lib/openrouter.js +11 -0
  138. data/features/ai/open-router/nextjs/javascript/package.json +6 -0
  139. data/features/ai/open-router/nextjs/typescript/app/api/openrouter/route.ts +10 -0
  140. data/features/ai/open-router/nextjs/typescript/lib/openrouter.ts +11 -0
  141. data/features/ai/open-router/nextjs/typescript/package.json +6 -0
  142. data/features/ai/open-router/remixjs/typescript/app/routes/api/openrouter.ts +12 -0
  143. data/features/ai/open-router/remixjs/typescript/app/utils/openrouter.ts +12 -0
  144. data/features/ai/open-router/remixjs/typescript/package.json +6 -0
  145. data/features/ai/openai/expressjs/javascript/controllers/openaiController.js +11 -0
  146. data/features/ai/openai/expressjs/javascript/index.js +3 -0
  147. data/features/ai/openai/expressjs/javascript/package.json +5 -0
  148. data/features/ai/openai/expressjs/javascript/routes/openAiRoutes.js +7 -0
  149. data/features/ai/openai/expressjs/javascript/utils/openai.js +11 -0
  150. data/features/ai/openai/expressjs/typescript/controllers/openaiController.ts +12 -0
  151. data/features/ai/openai/expressjs/typescript/index.ts +3 -0
  152. data/features/ai/openai/expressjs/typescript/package.json +5 -0
  153. data/features/ai/openai/expressjs/typescript/routes/openAiRoutes.ts +7 -0
  154. data/features/ai/openai/expressjs/typescript/utils/openai.ts +11 -0
  155. data/features/ai/openai/nestjs/typescript/package.json +5 -0
  156. data/features/ai/openai/nestjs/typescript/src/openai/openai.controller.ts +12 -0
  157. data/features/ai/openai/nestjs/typescript/src/openai/openai.module.ts +9 -0
  158. data/features/ai/openai/nestjs/typescript/src/openai/openai.service.ts +15 -0
  159. data/features/ai/openai/nextjs/javascript/app/api/openai/route.js +11 -0
  160. data/features/ai/openai/nextjs/javascript/lib/openai.js +11 -0
  161. data/features/ai/openai/nextjs/javascript/package.json +5 -0
  162. data/features/ai/openai/nextjs/typescript/app/api/openai/route.ts +11 -0
  163. data/features/ai/openai/nextjs/typescript/lib/openai.ts +11 -0
  164. data/features/ai/openai/nextjs/typescript/package.json +5 -0
  165. data/features/ai/openai/remixjs/typescript/app/routes/api/openai.ts +12 -0
  166. data/features/ai/openai/remixjs/typescript/app/utils/openai.ts +11 -0
  167. data/features/ai/openai/remixjs/typescript/package.json +5 -0
  168. data/features/auth/auth0/angularjs/typescript/package.json +5 -0
  169. data/features/auth/auth0/angularjs/typescript/src/app/login-button.ts +15 -0
  170. data/features/auth/auth0/angularjs/typescript/src/app/logout-button.ts +27 -0
  171. data/features/auth/auth0/angularjs/typescript/src/app/user-profile.ts +15 -0
  172. data/features/auth/auth0/angularjs/typescript/src/main.ts +15 -0
  173. data/features/auth/auth0/expressjs/javascript/index.js +27 -0
  174. data/features/auth/auth0/expressjs/javascript/package.json +5 -0
  175. data/features/auth/auth0/expressjs/typescript/index.ts +27 -0
  176. data/features/auth/auth0/expressjs/typescript/package.json +5 -0
  177. data/features/auth/auth0/nextjs/javascript/app/page.jsx +33 -0
  178. data/features/auth/auth0/nextjs/javascript/lib/auth0.js +3 -0
  179. data/features/auth/auth0/nextjs/javascript/middleware.js +17 -0
  180. data/features/auth/auth0/nextjs/javascript/package.json +5 -0
  181. data/features/auth/auth0/nextjs/typescript/app/page.tsx +33 -0
  182. data/features/auth/auth0/nextjs/typescript/lib/auth0.ts +3 -0
  183. data/features/auth/auth0/nextjs/typescript/middleware.ts +18 -0
  184. data/features/auth/auth0/nextjs/typescript/package.json +5 -0
  185. data/features/auth/auth0/vuejs/javascript/package.json +5 -0
  186. data/features/auth/auth0/vuejs/javascript/src/components/LoginButton.vue +23 -0
  187. data/features/auth/auth0/vuejs/javascript/src/components/LogoutButton.vue +27 -0
  188. data/features/auth/auth0/vuejs/javascript/src/components/UserProfile.vue +67 -0
  189. data/features/auth/auth0/vuejs/javascript/src/components/login.vue +30 -0
  190. data/features/auth/auth0/vuejs/javascript/src/components/logout.vue +38 -0
  191. data/features/auth/auth0/vuejs/javascript/src/components/profile.vue +43 -0
  192. data/features/auth/auth0/vuejs/javascript/src/main.js +22 -0
  193. data/features/auth/auth0/vuejs/typescript/main.ts +0 -0
  194. data/features/auth/auth0/vuejs/typescript/package.json +10 -0
  195. data/features/auth/auth0/vuejs/typescript/src/components/LoginButton.vue +15 -0
  196. data/features/auth/auth0/vuejs/typescript/src/components/LogoutButton.vue +19 -0
  197. data/features/auth/auth0/vuejs/typescript/src/components/UserProfile.vue +53 -0
  198. data/features/auth/auth0/vuejs/typescript/src/components/login.vue +15 -0
  199. data/features/auth/auth0/vuejs/typescript/src/components/logout.vue +19 -0
  200. data/features/auth/auth0/vuejs/typescript/src/components/profile.vue +20 -0
  201. data/features/auth/auth0/vuejs/typescript/src/main.ts +22 -0
  202. data/features/auth/clerk/expressjs/javascript/index.js +13 -0
  203. data/features/auth/clerk/expressjs/javascript/package.json +8 -0
  204. data/features/auth/clerk/expressjs/typescript/index.ts +13 -0
  205. data/features/auth/clerk/expressjs/typescript/package.json +11 -0
  206. data/features/auth/clerk/expressjs/typescript/types/global.d.ts +1 -0
  207. data/features/auth/clerk/nextjs/javascript/app/layout.js +50 -0
  208. data/features/auth/clerk/nextjs/javascript/middleware.js +12 -0
  209. data/features/auth/clerk/nextjs/javascript/package.json +8 -0
  210. data/features/auth/clerk/nextjs/typescript/app/layout.tsx +55 -0
  211. data/features/auth/clerk/nextjs/typescript/middleware.ts +12 -0
  212. data/features/auth/clerk/nextjs/typescript/package.json +12 -0
  213. data/features/auth/clerk/reactjs/javascript/package.json +8 -0
  214. data/features/auth/clerk/reactjs/javascript/src/App.jsx +14 -0
  215. data/features/auth/clerk/reactjs/javascript/src/main.jsx +20 -0
  216. data/features/auth/clerk/reactjs/typescript/package.json +8 -0
  217. data/features/auth/clerk/reactjs/typescript/src/App.tsx +14 -0
  218. data/features/auth/clerk/reactjs/typescript/src/main.tsx +20 -0
  219. data/features/auth/clerk/remixjs/typescript/app/root.tsx +37 -0
  220. data/features/auth/clerk/remixjs/typescript/app/routes/_index.tsx +46 -0
  221. data/features/auth/clerk/remixjs/typescript/package.json +9 -0
  222. data/features/auth/clerk/vuejs/javascript/package.json +8 -0
  223. data/features/auth/clerk/vuejs/javascript/src/App.vue +19 -0
  224. data/features/auth/clerk/vuejs/javascript/src/main.js +20 -0
  225. data/features/auth/clerk/vuejs/typescript/package.json +8 -0
  226. data/features/auth/clerk/vuejs/typescript/src/App.vue +19 -0
  227. data/features/auth/clerk/vuejs/typescript/src/main.ts +18 -0
  228. data/features/auth/next-auth/nextjs/javascript/app/api/auth/[...nextauth]/route.js +6 -0
  229. data/features/auth/next-auth/nextjs/javascript/app/layout.jsx +34 -0
  230. data/features/auth/next-auth/nextjs/javascript/lib/auth-provider.jsx +6 -0
  231. data/features/auth/next-auth/nextjs/javascript/lib/auth.js +124 -0
  232. data/features/auth/next-auth/nextjs/javascript/middleware.js +0 -0
  233. data/features/auth/next-auth/nextjs/javascript/package.json +0 -0
  234. data/features/auth/next-auth/nextjs/typescript/app/api/auth/[...nextauth]/route.ts +6 -0
  235. data/features/auth/next-auth/nextjs/typescript/app/layout.tsx +39 -0
  236. data/features/auth/next-auth/nextjs/typescript/lib/auth-provider.tsx +7 -0
  237. data/features/auth/next-auth/nextjs/typescript/lib/auth.ts +126 -0
  238. data/features/auth/next-auth/nextjs/typescript/middleware.ts +0 -0
  239. data/features/auth/next-auth/nextjs/typescript/package.json +5 -0
  240. data/features/aws/api-gateway/expressjs/javascript/package.json +5 -0
  241. data/features/aws/api-gateway/expressjs/typescript/package.json +5 -0
  242. data/features/aws/api-gateway/nestjs/typescript/package.json +5 -0
  243. data/features/aws/api-gateway/nextjs/javascript/package.json +5 -0
  244. data/features/aws/api-gateway/nextjs/typescript/package.json +5 -0
  245. data/features/aws/api-gateway/remixjs/typescript/package.json +5 -0
  246. data/features/aws/app-sync/expressjs/javascript/package.json +5 -0
  247. data/features/aws/app-sync/expressjs/typescript/package.json +5 -0
  248. data/features/aws/app-sync/nestjs/typescript/package.json +5 -0
  249. data/features/aws/app-sync/nextjs/javascript/package.json +5 -0
  250. data/features/aws/app-sync/nextjs/typescript/package.json +5 -0
  251. data/features/aws/app-sync/remixjs/typescript/package.json +5 -0
  252. data/features/aws/athena/expressjs/javascript/package.json +5 -0
  253. data/features/aws/athena/expressjs/typescript/package.json +5 -0
  254. data/features/aws/athena/nestjs/typescript/package.json +5 -0
  255. data/features/aws/athena/nextjs/javascript/package.json +5 -0
  256. data/features/aws/athena/nextjs/typescript/package.json +5 -0
  257. data/features/aws/athena/remixjs/typescript/package.json +5 -0
  258. data/features/aws/aurora/expressjs/javascript/package.json +6 -0
  259. data/features/aws/aurora/expressjs/typescript/package.json +6 -0
  260. data/features/aws/aurora/nestjs/typescript/package.json +6 -0
  261. data/features/aws/aurora/nextjs/javascript/package.json +6 -0
  262. data/features/aws/aurora/nextjs/typescript/package.json +6 -0
  263. data/features/aws/aurora/remixjs/typescript/package.json +6 -0
  264. data/features/aws/backup/expressjs/javascript/package.json +5 -0
  265. data/features/aws/backup/expressjs/typescript/package.json +5 -0
  266. data/features/aws/backup/nestjs/typescript/package.json +5 -0
  267. data/features/aws/backup/nextjs/javascript/package.json +5 -0
  268. data/features/aws/backup/nextjs/typescript/package.json +5 -0
  269. data/features/aws/backup/remixjs/typescript/package.json +5 -0
  270. data/features/aws/backup-gateway/expressjs/javascript/package.json +5 -0
  271. data/features/aws/backup-gateway/expressjs/typescript/package.json +5 -0
  272. data/features/aws/backup-gateway/nestjs/typescript/package.json +5 -0
  273. data/features/aws/backup-gateway/nextjs/javascript/package.json +5 -0
  274. data/features/aws/backup-gateway/nextjs/typescript/package.json +5 -0
  275. data/features/aws/backup-gateway/remixjs/typescript/package.json +5 -0
  276. data/features/aws/braket/expressjs/javascript/package.json +5 -0
  277. data/features/aws/braket/expressjs/typescript/package.json +5 -0
  278. data/features/aws/braket/nestjs/typescript/package.json +5 -0
  279. data/features/aws/braket/nextjs/javascript/package.json +5 -0
  280. data/features/aws/braket/nextjs/typescript/package.json +5 -0
  281. data/features/aws/braket/remixjs/typescript/package.json +5 -0
  282. data/features/aws/cloudformation/expressjs/javascript/package.json +5 -0
  283. data/features/aws/cloudformation/expressjs/typescript/package.json +5 -0
  284. data/features/aws/cloudformation/nestjs/typescript/package.json +5 -0
  285. data/features/aws/cloudformation/nextjs/javascript/package.json +5 -0
  286. data/features/aws/cloudformation/nextjs/typescript/package.json +5 -0
  287. data/features/aws/cloudformation/remixjs/typescript/package.json +5 -0
  288. data/features/aws/cloudfront/expressjs/javascript/controllers/awsCloudFrontController.js +30 -0
  289. data/features/aws/cloudfront/expressjs/javascript/index.js +3 -0
  290. data/features/aws/cloudfront/expressjs/javascript/package.json +5 -0
  291. data/features/aws/cloudfront/expressjs/javascript/routes/awsCloudFrontRoutes.js +10 -0
  292. data/features/aws/cloudfront/expressjs/javascript/utils/awsCloudFront.js +51 -0
  293. data/features/aws/cloudfront/expressjs/typescript/controllers/awsCloudFrontController.ts +31 -0
  294. data/features/aws/cloudfront/expressjs/typescript/index.ts +3 -0
  295. data/features/aws/cloudfront/expressjs/typescript/package.json +5 -0
  296. data/features/aws/cloudfront/expressjs/typescript/routes/awsCloudFrontRoutes.ts +10 -0
  297. data/features/aws/cloudfront/expressjs/typescript/utils/awsCloudFront.ts +56 -0
  298. data/features/aws/cloudfront/nestjs/typescript/package.json +5 -0
  299. data/features/aws/cloudfront/nestjs/typescript/src/aws-cloudfront/aws-cloudfront.controller.ts +22 -0
  300. data/features/aws/cloudfront/nestjs/typescript/src/aws-cloudfront/aws-cloudfront.service.ts +52 -0
  301. data/features/aws/cloudfront/nextjs/javascript/app/api/aws/cloudfront/route.js +19 -0
  302. data/features/aws/cloudfront/nextjs/javascript/lib/awsCloudFront.js +51 -0
  303. data/features/aws/cloudfront/nextjs/javascript/package.json +5 -0
  304. data/features/aws/cloudfront/nextjs/typescript/app/api/aws/cloudfront/route.ts +19 -0
  305. data/features/aws/cloudfront/nextjs/typescript/lib/awsCloudFront.ts +56 -0
  306. data/features/aws/cloudfront/nextjs/typescript/package.json +5 -0
  307. data/features/aws/cloudfront/remixjs/typescript/app/routes/api/aws-cloudfront.ts +60 -0
  308. data/features/aws/cloudfront/remixjs/typescript/package.json +5 -0
  309. data/features/aws/cloudtrail/expressjs/javascript/controllers/cloudtrailController.js +10 -0
  310. data/features/aws/cloudtrail/expressjs/javascript/index.js +4 -0
  311. data/features/aws/cloudtrail/expressjs/javascript/package.json +5 -0
  312. data/features/aws/cloudtrail/expressjs/javascript/routes/awsCloudTrailRoutes.js +7 -0
  313. data/features/aws/cloudtrail/expressjs/javascript/utils/aws-cloudtrail.js +13 -0
  314. data/features/aws/cloudtrail/expressjs/typescript/controllers/awsCloudTrailController.ts +10 -0
  315. data/features/aws/cloudtrail/expressjs/typescript/index.ts +4 -0
  316. data/features/aws/cloudtrail/expressjs/typescript/package.json +5 -0
  317. data/features/aws/cloudtrail/expressjs/typescript/routes/awsCloudTrailRoutes.ts +8 -0
  318. data/features/aws/cloudtrail/expressjs/typescript/utils/aws-cloudtrail.ts +13 -0
  319. data/features/aws/cloudtrail/nestjs/typescript/package.json +5 -0
  320. data/features/aws/cloudtrail/nestjs/typescript/src/cloudtrail/cloudtrail.controller.ts +12 -0
  321. data/features/aws/cloudtrail/nestjs/typescript/src/cloudtrail/cloudtrail.module.ts +9 -0
  322. data/features/aws/cloudtrail/nestjs/typescript/src/cloudtrail/cloudtrail.service.ts +11 -0
  323. data/features/aws/cloudtrail/nextjs/javascript/app/api/aws/cloudtrail/route.js +11 -0
  324. data/features/aws/cloudtrail/nextjs/javascript/lib/aws-cloudtrail.js +13 -0
  325. data/features/aws/cloudtrail/nextjs/javascript/package.json +5 -0
  326. data/features/aws/cloudtrail/nextjs/typescript/app/api/aws/cloudtrail/route.ts +11 -0
  327. data/features/aws/cloudtrail/nextjs/typescript/lib/aws-cloudtrail.ts +13 -0
  328. data/features/aws/cloudtrail/nextjs/typescript/package.json +5 -0
  329. data/features/aws/cloudtrail/remixjs/typescript/app/routes/api/aws-cloudtrail.ts +11 -0
  330. data/features/aws/cloudtrail/remixjs/typescript/app/utils/aws-cloudtrail.ts +13 -0
  331. data/features/aws/cloudtrail/remixjs/typescript/package.json +5 -0
  332. data/features/aws/cloudwatch/expressjs/javascript/controllers/awsCloudWatchController.js +10 -0
  333. data/features/aws/cloudwatch/expressjs/javascript/index.js +4 -0
  334. data/features/aws/cloudwatch/expressjs/javascript/package.json +5 -0
  335. data/features/aws/cloudwatch/expressjs/javascript/routes/awsCloudWatchRoutes.js +7 -0
  336. data/features/aws/cloudwatch/expressjs/javascript/utils/aws-cloudwatch.js +13 -0
  337. data/features/aws/cloudwatch/expressjs/typescript/controllers/awsCloudWatchController.ts +10 -0
  338. data/features/aws/cloudwatch/expressjs/typescript/index.ts +4 -0
  339. data/features/aws/cloudwatch/expressjs/typescript/package.json +5 -0
  340. data/features/aws/cloudwatch/expressjs/typescript/routes/awsCloudWatchRoutes.ts +7 -0
  341. data/features/aws/cloudwatch/expressjs/typescript/utils/aws-cloudwatch.ts +13 -0
  342. data/features/aws/cloudwatch/nestjs/typescript/package.json +5 -0
  343. data/features/aws/cloudwatch/nestjs/typescript/src/cloudwatch/aws-cloudwatch.controller.ts +12 -0
  344. data/features/aws/cloudwatch/nestjs/typescript/src/cloudwatch/aws-cloudwatch.module.ts +9 -0
  345. data/features/aws/cloudwatch/nestjs/typescript/src/cloudwatch/aws-cloudwatch.service.ts +17 -0
  346. data/features/aws/cloudwatch/nextjs/javascript/app/api/aws/cloudwatch/route.js +11 -0
  347. data/features/aws/cloudwatch/nextjs/javascript/lib/aws-cloudwatch.js +13 -0
  348. data/features/aws/cloudwatch/nextjs/javascript/package.json +5 -0
  349. data/features/aws/cloudwatch/nextjs/typescript/app/api/aws/cloudwatch/route.ts +11 -0
  350. data/features/aws/cloudwatch/nextjs/typescript/lib/aws-cloudwatch.ts +13 -0
  351. data/features/aws/cloudwatch/nextjs/typescript/package.json +5 -0
  352. data/features/aws/cloudwatch/remixjs/typescript/app/routes/api/aws-cloudwatch.ts +11 -0
  353. data/features/aws/cloudwatch/remixjs/typescript/app/utils/aws-cloudwatch.ts +13 -0
  354. data/features/aws/cloudwatch/remixjs/typescript/package.json +5 -0
  355. data/features/aws/codebuild/expressjs/javascript/controllers/codeBuildController.js +11 -0
  356. data/features/aws/codebuild/expressjs/javascript/index.js +4 -0
  357. data/features/aws/codebuild/expressjs/javascript/package.json +5 -0
  358. data/features/aws/codebuild/expressjs/javascript/routes/codeBuildRoutes.js +6 -0
  359. data/features/aws/codebuild/expressjs/javascript/utils/codeBuild.js +6 -0
  360. data/features/aws/codebuild/expressjs/typescript/controllers/codeBuildController.ts +13 -0
  361. data/features/aws/codebuild/expressjs/typescript/index.ts +4 -0
  362. data/features/aws/codebuild/expressjs/typescript/package.json +5 -0
  363. data/features/aws/codebuild/expressjs/typescript/routes/codeBuildRoutes.ts +6 -0
  364. data/features/aws/codebuild/expressjs/typescript/utils/codeBuild.ts +6 -0
  365. data/features/aws/codebuild/nestjs/typescript/package.json +5 -0
  366. data/features/aws/codebuild/nestjs/typescript/src/codebuild/codebuild.controller.ts +17 -0
  367. data/features/aws/codebuild/nestjs/typescript/src/codebuild/codebuild.service.ts +10 -0
  368. data/features/aws/codebuild/nextjs/javascript/app/api/aws/codebuild/route.ts +11 -0
  369. data/features/aws/codebuild/nextjs/javascript/lib/codeBuild.js +6 -0
  370. data/features/aws/codebuild/nextjs/javascript/package.json +5 -0
  371. data/features/aws/codebuild/nextjs/typescript/app/api/aws/codebuild/route.ts +17 -0
  372. data/features/aws/codebuild/nextjs/typescript/lib/codeBuild.ts +7 -0
  373. data/features/aws/codebuild/nextjs/typescript/package.json +5 -0
  374. data/features/aws/codebuild/remixjs/typescript/app/routes/api/codebuild.ts +11 -0
  375. data/features/aws/codebuild/remixjs/typescript/app/utils/codeBuild.ts +6 -0
  376. data/features/aws/codebuild/remixjs/typescript/package.json +5 -0
  377. data/features/aws/codecommit/expressjs/javascript/controllers/codeCommitController.js +38 -0
  378. data/features/aws/codecommit/expressjs/javascript/index.js +4 -0
  379. data/features/aws/codecommit/expressjs/javascript/package.json +5 -0
  380. data/features/aws/codecommit/expressjs/javascript/routes/codeCommitRoutes.js +10 -0
  381. data/features/aws/codecommit/expressjs/javascript/utils/codeCommit.js +25 -0
  382. data/features/aws/codecommit/expressjs/typescript/controllers/codeCommitController.ts +15 -0
  383. data/features/aws/codecommit/expressjs/typescript/index.ts +4 -0
  384. data/features/aws/codecommit/expressjs/typescript/package.json +5 -0
  385. data/features/aws/codecommit/expressjs/typescript/routes/codeCommitRoutes.ts +10 -0
  386. data/features/aws/codecommit/expressjs/typescript/utils/codeCommit.ts +7 -0
  387. data/features/aws/codecommit/nestjs/typescript/package.json +5 -0
  388. data/features/aws/codecommit/nestjs/typescript/src/codecommit/codecommit.controller.ts +11 -0
  389. data/features/aws/codecommit/nestjs/typescript/src/codecommit/codecommit.service.ts +11 -0
  390. data/features/aws/codecommit/nextjs/javascript/app/api/aws/codecommit/route.js +19 -0
  391. data/features/aws/codecommit/nextjs/javascript/lib/codeCommit.js +7 -0
  392. data/features/aws/codecommit/nextjs/javascript/package.json +5 -0
  393. data/features/aws/codecommit/nextjs/typescript/app/api/aws/codecommit/route.ts +19 -0
  394. data/features/aws/codecommit/nextjs/typescript/lib/codeCommit.ts +19 -0
  395. data/features/aws/codecommit/nextjs/typescript/package.json +5 -0
  396. data/features/aws/codecommit/remixjs/typescript/app/routes/api/aws-codecommit.ts +19 -0
  397. data/features/aws/codecommit/remixjs/typescript/app/utils/awsCodeCommit.ts +7 -0
  398. data/features/aws/codecommit/remixjs/typescript/package.json +5 -0
  399. data/features/aws/codedeploy/expressjs/javascript/controllers/codeDeployController.js +37 -0
  400. data/features/aws/codedeploy/expressjs/javascript/index.js +4 -0
  401. data/features/aws/codedeploy/expressjs/javascript/package.json +5 -0
  402. data/features/aws/codedeploy/expressjs/javascript/routes/codeDeployRoutes.js +10 -0
  403. data/features/aws/codedeploy/expressjs/javascript/utils/codeDeploy.js +19 -0
  404. data/features/aws/codedeploy/expressjs/typescript/controllers/codeDeployController.ts +6 -0
  405. data/features/aws/codedeploy/expressjs/typescript/index.ts +4 -0
  406. data/features/aws/codedeploy/expressjs/typescript/package.json +5 -0
  407. data/features/aws/codedeploy/expressjs/typescript/routes/codeDeployRoutes.ts +7 -0
  408. data/features/aws/codedeploy/expressjs/typescript/utils/codeDeploy.ts +6 -0
  409. data/features/aws/codedeploy/nestjs/typescript/package.json +5 -0
  410. data/features/aws/codedeploy/nestjs/typescript/src/codedeploy/codedeploy.controller.ts +28 -0
  411. data/features/aws/codedeploy/nestjs/typescript/src/codedeploy/codedeploy.module.ts +10 -0
  412. data/features/aws/codedeploy/nestjs/typescript/src/codedeploy/codedeploy.service.ts +35 -0
  413. data/features/aws/codedeploy/nextjs/javascript/app/api/aws/codedeploy/route.js +14 -0
  414. data/features/aws/codedeploy/nextjs/javascript/lib/codeDeploy.js +6 -0
  415. data/features/aws/codedeploy/nextjs/javascript/package.json +5 -0
  416. data/features/aws/codedeploy/nextjs/typescript/app/api/aws/codedeploy/route.ts +16 -0
  417. data/features/aws/codedeploy/nextjs/typescript/lib/codeDeploy.ts +6 -0
  418. data/features/aws/codedeploy/nextjs/typescript/package.json +5 -0
  419. data/features/aws/codedeploy/remixjs/typescript/app/routes/api/codedeploy.ts +16 -0
  420. data/features/aws/codedeploy/remixjs/typescript/app/utils/codeDeploy.ts +6 -0
  421. data/features/aws/codedeploy/remixjs/typescript/package.json +5 -0
  422. data/features/aws/codepipeline/expressjs/javascript/controllers/codePipelineController.js +17 -0
  423. data/features/aws/codepipeline/expressjs/javascript/index.js +4 -0
  424. data/features/aws/codepipeline/expressjs/javascript/package.json +5 -0
  425. data/features/aws/codepipeline/expressjs/javascript/routes/codePipelineRoutes.js +10 -0
  426. data/features/aws/codepipeline/expressjs/javascript/utils/codePipeline.js +8 -0
  427. data/features/aws/codepipeline/expressjs/typescript/controllers/codePipelineController.ts +37 -0
  428. data/features/aws/codepipeline/expressjs/typescript/index.ts +4 -0
  429. data/features/aws/codepipeline/expressjs/typescript/package.json +5 -0
  430. data/features/aws/codepipeline/expressjs/typescript/routes/codePipelineRoutes.ts +10 -0
  431. data/features/aws/codepipeline/expressjs/typescript/utils/codePipeline.ts +16 -0
  432. data/features/aws/codepipeline/nestjs/typescript/package.json +5 -0
  433. data/features/aws/codepipeline/nestjs/typescript/src/codepipeline/codepipeline.controller.ts +27 -0
  434. data/features/aws/codepipeline/nestjs/typescript/src/codepipeline/codepipeline.module.ts +10 -0
  435. data/features/aws/codepipeline/nestjs/typescript/src/codepipeline/codepipeline.service.ts +23 -0
  436. data/features/aws/codepipeline/nextjs/javascript/app/api/aws/codepipeline/route.js +17 -0
  437. data/features/aws/codepipeline/nextjs/javascript/lib/codePipeline.js +7 -0
  438. data/features/aws/codepipeline/nextjs/javascript/package.json +5 -0
  439. data/features/aws/codepipeline/nextjs/typescript/app/api/aws/codepipeline/route.ts +17 -0
  440. data/features/aws/codepipeline/nextjs/typescript/lib/codePipeline.ts +6 -0
  441. data/features/aws/codepipeline/nextjs/typescript/package.json +5 -0
  442. data/features/aws/codepipeline/remixjs/typescript/app/routes/api/codepipeline.ts +19 -0
  443. data/features/aws/codepipeline/remixjs/typescript/app/utils/codePipeline.ts +15 -0
  444. data/features/aws/codepipeline/remixjs/typescript/package.json +5 -0
  445. data/features/aws/cognito/expressjs/javascript/controllers/awsCognitoController.js +26 -0
  446. data/features/aws/cognito/expressjs/javascript/index.js +4 -0
  447. data/features/aws/cognito/expressjs/javascript/package.json +5 -0
  448. data/features/aws/cognito/expressjs/javascript/routes/awsCognitoRoutes.js +7 -0
  449. data/features/aws/cognito/expressjs/javascript/utils/awsCognito.js +38 -0
  450. data/features/aws/cognito/expressjs/typescript/controllers/awsCognitoController.ts +27 -0
  451. data/features/aws/cognito/expressjs/typescript/index.ts +4 -0
  452. data/features/aws/cognito/expressjs/typescript/package.json +5 -0
  453. data/features/aws/cognito/expressjs/typescript/routes/awsCognitoRoutes.ts +7 -0
  454. data/features/aws/cognito/expressjs/typescript/utils/awsCognito.ts +38 -0
  455. data/features/aws/cognito/nestjs/typescript/package.json +5 -0
  456. data/features/aws/cognito/nestjs/typescript/src/aws-cognito/aws-cognito.controller.ts +24 -0
  457. data/features/aws/cognito/nestjs/typescript/src/aws-cognito/aws-cognito.service.ts +42 -0
  458. data/features/aws/cognito/nextjs/javascript/app/api/aws/cognito/route.ts +20 -0
  459. data/features/aws/cognito/nextjs/javascript/lib/awsCognito.js +38 -0
  460. data/features/aws/cognito/nextjs/javascript/package.json +5 -0
  461. data/features/aws/cognito/nextjs/typescript/app/api/aws/cognito/route.ts +25 -0
  462. data/features/aws/cognito/nextjs/typescript/lib/awsCognito.ts +57 -0
  463. data/features/aws/cognito/nextjs/typescript/package.json +5 -0
  464. data/features/aws/cognito/remixjs/typescript/app/routes/api/aws-cognito.ts +21 -0
  465. data/features/aws/cognito/remixjs/typescript/app/utils/awsCognito.ts +38 -0
  466. data/features/aws/cognito/remixjs/typescript/package.json +5 -0
  467. data/features/aws/config/expressjs/javascript/controllers/configController.js +19 -0
  468. data/features/aws/config/expressjs/javascript/index.js +4 -0
  469. data/features/aws/config/expressjs/javascript/package.json +5 -0
  470. data/features/aws/config/expressjs/javascript/routes/configRoutes.js +6 -0
  471. data/features/aws/config/expressjs/javascript/utils/aws-config.js +17 -0
  472. data/features/aws/config/expressjs/typescript/controllers/configController.ts +20 -0
  473. data/features/aws/config/expressjs/typescript/index.ts +4 -0
  474. data/features/aws/config/expressjs/typescript/package.json +5 -0
  475. data/features/aws/config/expressjs/typescript/routes/configRoutes.ts +6 -0
  476. data/features/aws/config/expressjs/typescript/utils/aws-config.ts +17 -0
  477. data/features/aws/config/nestjs/typescript/package.json +5 -0
  478. data/features/aws/config/nestjs/typescript/src/config/config.controller.ts +14 -0
  479. data/features/aws/config/nestjs/typescript/src/config/config.module.ts +9 -0
  480. data/features/aws/config/nestjs/typescript/src/config/config.service.ts +17 -0
  481. data/features/aws/config/nextjs/javascript/app/api/aws/config/route.js +26 -0
  482. data/features/aws/config/nextjs/javascript/lib/aws-config.js +24 -0
  483. data/features/aws/config/nextjs/javascript/package.json +5 -0
  484. data/features/aws/config/nextjs/typescript/app/api/aws/config/route.ts +26 -0
  485. data/features/aws/config/nextjs/typescript/lib/aws-config.ts +24 -0
  486. data/features/aws/config/nextjs/typescript/package.json +5 -0
  487. data/features/aws/config/remixjs/typescript/app/routes/api/config.ts +23 -0
  488. data/features/aws/config/remixjs/typescript/app/utils/aws-config.ts +17 -0
  489. data/features/aws/config/remixjs/typescript/package.json +5 -0
  490. data/features/aws/connect/expressjs/javascript/package.json +5 -0
  491. data/features/aws/connect/expressjs/typescript/package.json +5 -0
  492. data/features/aws/connect/nestjs/typescript/package.json +5 -0
  493. data/features/aws/connect/nextjs/javascript/package.json +5 -0
  494. data/features/aws/connect/nextjs/typescript/package.json +5 -0
  495. data/features/aws/connect/remixjs/typescript/package.json +5 -0
  496. data/features/aws/control-tower/expressjs/javascript/package.json +5 -0
  497. data/features/aws/control-tower/expressjs/typescript/package.json +5 -0
  498. data/features/aws/control-tower/nestjs/typescript/package.json +5 -0
  499. data/features/aws/control-tower/nextjs/javascript/package.json +5 -0
  500. data/features/aws/control-tower/nextjs/typescript/package.json +5 -0
  501. data/features/aws/control-tower/remixjs/typescript/package.json +5 -0
  502. data/features/aws/data-pipeline/expressjs/javascript/package.json +5 -0
  503. data/features/aws/data-pipeline/expressjs/typescript/package.json +5 -0
  504. data/features/aws/data-pipeline/nestjs/typescript/package.json +5 -0
  505. data/features/aws/data-pipeline/nextjs/javascript/package.json +5 -0
  506. data/features/aws/data-pipeline/nextjs/typescript/package.json +5 -0
  507. data/features/aws/data-pipeline/remixjs/typescript/package.json +5 -0
  508. data/features/aws/database-migration-service/expressjs/javascript/package.json +5 -0
  509. data/features/aws/database-migration-service/expressjs/typescript/package.json +5 -0
  510. data/features/aws/database-migration-service/nestjs/typescript/package.json +5 -0
  511. data/features/aws/database-migration-service/nextjs/javascript/package.json +5 -0
  512. data/features/aws/database-migration-service/nextjs/typescript/package.json +5 -0
  513. data/features/aws/database-migration-service/remixjs/typescript/package.json +5 -0
  514. data/features/aws/datasync/expressjs/javascript/package.json +5 -0
  515. data/features/aws/datasync/expressjs/typescript/package.json +5 -0
  516. data/features/aws/datasync/nestjs/typescript/package.json +5 -0
  517. data/features/aws/datasync/nextjs/javascript/package.json +5 -0
  518. data/features/aws/datasync/nextjs/typescript/package.json +5 -0
  519. data/features/aws/datasync/remixjs/typescript/package.json +5 -0
  520. data/features/aws/documentdb/expressjs/javascript/package.json +5 -0
  521. data/features/aws/documentdb/expressjs/typescript/package.json +5 -0
  522. data/features/aws/documentdb/nestjs/typescript/package.json +5 -0
  523. data/features/aws/documentdb/nextjs/javascript/package.json +5 -0
  524. data/features/aws/documentdb/nextjs/typescript/package.json +5 -0
  525. data/features/aws/documentdb/remixjs/typescript/package.json +5 -0
  526. data/features/aws/dynamodb/expressjs/javascript/package.json +5 -0
  527. data/features/aws/dynamodb/expressjs/typescript/package.json +5 -0
  528. data/features/aws/dynamodb/nestjs/typescript/package.json +5 -0
  529. data/features/aws/dynamodb/nextjs/javascript/package.json +5 -0
  530. data/features/aws/dynamodb/nextjs/typescript/package.json +5 -0
  531. data/features/aws/dynamodb/remixjs/typescript/package.json +5 -0
  532. data/features/aws/ebs/expressjs/javascript/controllers/awsEbsController.js +41 -0
  533. data/features/aws/ebs/expressjs/javascript/index.js +4 -0
  534. data/features/aws/ebs/expressjs/javascript/package.json +5 -0
  535. data/features/aws/ebs/expressjs/javascript/routes/awsEbsRoutes.js +11 -0
  536. data/features/aws/ebs/expressjs/javascript/utils/awsEbs.js +20 -0
  537. data/features/aws/ebs/expressjs/typescript/controllers/awsEbsController.ts +42 -0
  538. data/features/aws/ebs/expressjs/typescript/index.ts +4 -0
  539. data/features/aws/ebs/expressjs/typescript/package.json +5 -0
  540. data/features/aws/ebs/expressjs/typescript/routes/awsEbsRoutes.ts +11 -0
  541. data/features/aws/ebs/expressjs/typescript/utils/awsEbs.ts +29 -0
  542. data/features/aws/ebs/nestjs/typescript/package.json +5 -0
  543. data/features/aws/ebs/nestjs/typescript/src/aws-ebs/aws-ebs.controller.ts +27 -0
  544. data/features/aws/ebs/nestjs/typescript/src/aws-ebs/aws-ebs.service.ts +33 -0
  545. data/features/aws/ebs/nextjs/javascript/app/api/aws/ebs/route.js +24 -0
  546. data/features/aws/ebs/nextjs/javascript/lib/awsEbs.js +20 -0
  547. data/features/aws/ebs/nextjs/javascript/package.json +5 -0
  548. data/features/aws/ebs/nextjs/typescript/app/api/aws/ebs/route.ts +28 -0
  549. data/features/aws/ebs/nextjs/typescript/lib/awsEbs.ts +45 -0
  550. data/features/aws/ebs/nextjs/typescript/package.json +5 -0
  551. data/features/aws/ebs/remixjs/typescript/app/routes/api/aws-ebs.ts +21 -0
  552. data/features/aws/ebs/remixjs/typescript/app/utils/awsEbs.ts +20 -0
  553. data/features/aws/ebs/remixjs/typescript/package.json +5 -0
  554. data/features/aws/ec2/expressjs/javascript/controllers/awsEc2Controller.js +35 -0
  555. data/features/aws/ec2/expressjs/javascript/index.js +3 -0
  556. data/features/aws/ec2/expressjs/javascript/package.json +5 -0
  557. data/features/aws/ec2/expressjs/javascript/routes/awsEc2Routes.js +9 -0
  558. data/features/aws/ec2/expressjs/javascript/utils/awsEc2.js +29 -0
  559. data/features/aws/ec2/expressjs/typescript/controllers/awsEc2Controller.ts +36 -0
  560. data/features/aws/ec2/expressjs/typescript/index.ts +4 -0
  561. data/features/aws/ec2/expressjs/typescript/package.json +5 -0
  562. data/features/aws/ec2/expressjs/typescript/routes/awsEc2Routes.ts +9 -0
  563. data/features/aws/ec2/expressjs/typescript/utils/awsEc2.ts +29 -0
  564. data/features/aws/ec2/nestjs/typescript/package.json +5 -0
  565. data/features/aws/ec2/nestjs/typescript/src/aws-ec2/aws-ec2.controller.ts +27 -0
  566. data/features/aws/ec2/nestjs/typescript/src/aws-ec2/aws-ec2.service.ts +29 -0
  567. data/features/aws/ec2/nextjs/javascript/app/api/aws/ec2/route.js +22 -0
  568. data/features/aws/ec2/nextjs/javascript/lib/awsEc2.js +29 -0
  569. data/features/aws/ec2/nextjs/javascript/package.json +5 -0
  570. data/features/aws/ec2/nextjs/typescript/app/api/aws/ec2/route.ts +22 -0
  571. data/features/aws/ec2/nextjs/typescript/lib/awsEc2.ts +29 -0
  572. data/features/aws/ec2/nextjs/typescript/package.json +5 -0
  573. data/features/aws/ec2/remixjs/typescript/app/routes/api/aws-ec2.ts +38 -0
  574. data/features/aws/ec2/remixjs/typescript/package.json +5 -0
  575. data/features/aws/ec2-auto-scaling/expressjs/javascript/package.json +5 -0
  576. data/features/aws/ec2-auto-scaling/expressjs/typescript/package.json +5 -0
  577. data/features/aws/ec2-auto-scaling/nestjs/typescript/package.json +5 -0
  578. data/features/aws/ec2-auto-scaling/nextjs/javascript/package.json +5 -0
  579. data/features/aws/ec2-auto-scaling/nextjs/typescript/package.json +5 -0
  580. data/features/aws/ec2-auto-scaling/remixjs/typescript/package.json +5 -0
  581. data/features/aws/ecs/expressjs/javascript/controllers/awsEcsController.js +31 -0
  582. data/features/aws/ecs/expressjs/javascript/index.js +4 -0
  583. data/features/aws/ecs/expressjs/javascript/package.json +5 -0
  584. data/features/aws/ecs/expressjs/javascript/routes/awsEcsRoutes.js +8 -0
  585. data/features/aws/ecs/expressjs/javascript/utils/awsEcs.js +26 -0
  586. data/features/aws/ecs/expressjs/typescript/controllers/awsEcsController.ts +32 -0
  587. data/features/aws/ecs/expressjs/typescript/index.ts +4 -0
  588. data/features/aws/ecs/expressjs/typescript/package.json +5 -0
  589. data/features/aws/ecs/expressjs/typescript/routes/awsEcsRoutes.ts +8 -0
  590. data/features/aws/ecs/expressjs/typescript/utils/awsEcs.ts +30 -0
  591. data/features/aws/ecs/nestjs/typescript/package.json +5 -0
  592. data/features/aws/ecs/nestjs/typescript/src/aws-ecs/aws-ecs.controller.ts +22 -0
  593. data/features/aws/ecs/nestjs/typescript/src/aws-ecs/aws-ecs.service.ts +34 -0
  594. data/features/aws/ecs/nextjs/javascript/app/api/aws/ecs/route.js +21 -0
  595. data/features/aws/ecs/nextjs/javascript/lib/awsEcs.js +30 -0
  596. data/features/aws/ecs/nextjs/javascript/package.json +5 -0
  597. data/features/aws/ecs/nextjs/typescript/app/api/aws/ecs/route.ts +21 -0
  598. data/features/aws/ecs/nextjs/typescript/lib/awsEcs.ts +38 -0
  599. data/features/aws/ecs/nextjs/typescript/package.json +5 -0
  600. data/features/aws/ecs/remixjs/typescript/app/routes/api/aws-ecs.ts +22 -0
  601. data/features/aws/ecs/remixjs/typescript/app/utils/awsEcs.ts +26 -0
  602. data/features/aws/ecs/remixjs/typescript/package.json +5 -0
  603. data/features/aws/efs/expressjs/javascript/controllers/awsEfsController.js +37 -0
  604. data/features/aws/efs/expressjs/javascript/index.js +4 -0
  605. data/features/aws/efs/expressjs/javascript/package.json +5 -0
  606. data/features/aws/efs/expressjs/javascript/routes/awsEfsRoutes.js +11 -0
  607. data/features/aws/efs/expressjs/javascript/utils/awsEfs.js +20 -0
  608. data/features/aws/efs/expressjs/typescript/controllers/awsEfsController.ts +42 -0
  609. data/features/aws/efs/expressjs/typescript/index.ts +4 -0
  610. data/features/aws/efs/expressjs/typescript/package.json +5 -0
  611. data/features/aws/efs/expressjs/typescript/routes/awsEfsRoutes.ts +11 -0
  612. data/features/aws/efs/expressjs/typescript/utils/awsEfs.ts +30 -0
  613. data/features/aws/efs/nestjs/typescript/package.json +5 -0
  614. data/features/aws/efs/nestjs/typescript/src/aws-efs/aws-efs.controller.ts +31 -0
  615. data/features/aws/efs/nestjs/typescript/src/aws-efs/aws-efs.service.ts +34 -0
  616. data/features/aws/efs/nextjs/javascript/app/api/aws/efs/route.js +25 -0
  617. data/features/aws/efs/nextjs/javascript/lib/awsEfs.js +20 -0
  618. data/features/aws/efs/nextjs/javascript/package.json +5 -0
  619. data/features/aws/efs/nextjs/typescript/app/api/aws/efs/route.ts +28 -0
  620. data/features/aws/efs/nextjs/typescript/lib/awsEfs.ts +46 -0
  621. data/features/aws/efs/nextjs/typescript/package.json +5 -0
  622. data/features/aws/efs/remixjs/typescript/app/routes/api/aws-efs.ts +21 -0
  623. data/features/aws/efs/remixjs/typescript/app/utils/awsEfs.ts +20 -0
  624. data/features/aws/efs/remixjs/typescript/package.json +5 -0
  625. data/features/aws/eks/expressjs/javascript/package.json +5 -0
  626. data/features/aws/eks/expressjs/typescript/package.json +5 -0
  627. data/features/aws/eks/nestjs/typescript/package.json +5 -0
  628. data/features/aws/eks/nextjs/javascript/package.json +5 -0
  629. data/features/aws/eks/nextjs/typescript/package.json +5 -0
  630. data/features/aws/eks/remixjs/typescript/package.json +5 -0
  631. data/features/aws/elasticache/expressjs/javascript/package.json +5 -0
  632. data/features/aws/elasticache/expressjs/typescript/package.json +5 -0
  633. data/features/aws/elasticache/nestjs/typescript/package.json +5 -0
  634. data/features/aws/elasticache/nextjs/javascript/package.json +5 -0
  635. data/features/aws/elasticache/nextjs/typescript/package.json +5 -0
  636. data/features/aws/elasticache/remixjs/typescript/package.json +5 -0
  637. data/features/aws/elb/expressjs/javascript/controllers/awsElbController.js +30 -0
  638. data/features/aws/elb/expressjs/javascript/index.js +4 -0
  639. data/features/aws/elb/expressjs/javascript/package.json +5 -0
  640. data/features/aws/elb/expressjs/javascript/routes/awsElbRoutes.js +10 -0
  641. data/features/aws/elb/expressjs/javascript/utils/awsElb.js +24 -0
  642. data/features/aws/elb/expressjs/typescript/controllers/awsElbController.ts +31 -0
  643. data/features/aws/elb/expressjs/typescript/index.ts +4 -0
  644. data/features/aws/elb/expressjs/typescript/package.json +5 -0
  645. data/features/aws/elb/expressjs/typescript/routes/awsElbRoutes.ts +10 -0
  646. data/features/aws/elb/expressjs/typescript/utils/awsElb.ts +24 -0
  647. data/features/aws/elb/nestjs/typescript/package.json +5 -0
  648. data/features/aws/elb/nestjs/typescript/src/aws-elb/aws-elb.controller.ts +22 -0
  649. data/features/aws/elb/nestjs/typescript/src/aws-elb/aws-elb.service.ts +25 -0
  650. data/features/aws/elb/nextjs/javascript/app/api/aws/elb/route.js +19 -0
  651. data/features/aws/elb/nextjs/javascript/lib/awsElb.js +24 -0
  652. data/features/aws/elb/nextjs/javascript/package.json +5 -0
  653. data/features/aws/elb/nextjs/typescript/app/api/aws/elb/route.ts +19 -0
  654. data/features/aws/elb/nextjs/typescript/lib/awsElb.ts +24 -0
  655. data/features/aws/elb/nextjs/typescript/package.json +5 -0
  656. data/features/aws/elb/remixjs/typescript/app/routes/api/aws-elb.ts +35 -0
  657. data/features/aws/elb/remixjs/typescript/package.json +5 -0
  658. data/features/aws/event-bridge/expressjs/javascript/package.json +5 -0
  659. data/features/aws/event-bridge/expressjs/typescript/package.json +5 -0
  660. data/features/aws/event-bridge/nestjs/typescript/package.json +5 -0
  661. data/features/aws/event-bridge/nextjs/javascript/package.json +5 -0
  662. data/features/aws/event-bridge/nextjs/typescript/package.json +5 -0
  663. data/features/aws/event-bridge/remixjs/typescript/package.json +5 -0
  664. data/features/aws/fargate/expressjs/javascript/package.json +5 -0
  665. data/features/aws/fargate/expressjs/typescript/package.json +5 -0
  666. data/features/aws/fargate/nestjs/typescript/package.json +5 -0
  667. data/features/aws/fargate/nextjs/javascript/package.json +5 -0
  668. data/features/aws/fargate/nextjs/typescript/package.json +5 -0
  669. data/features/aws/fargate/remixjs/typescript/package.json +5 -0
  670. data/features/aws/firehose/expressjs/javascript/package.json +5 -0
  671. data/features/aws/firehose/expressjs/typescript/package.json +5 -0
  672. data/features/aws/firehose/nestjs/typescript/package.json +5 -0
  673. data/features/aws/firehose/nextjs/javascript/package.json +5 -0
  674. data/features/aws/firehose/nextjs/typescript/package.json +5 -0
  675. data/features/aws/firehose/remixjs/typescript/package.json +5 -0
  676. data/features/aws/forecast/expressjs/javascript/package.json +5 -0
  677. data/features/aws/forecast/expressjs/typescript/package.json +5 -0
  678. data/features/aws/forecast/nestjs/typescript/package.json +5 -0
  679. data/features/aws/forecast/nextjs/javascript/package.json +5 -0
  680. data/features/aws/forecast/nextjs/typescript/package.json +5 -0
  681. data/features/aws/forecast/remixjs/typescript/package.json +5 -0
  682. data/features/aws/glue/expressjs/javascript/package.json +5 -0
  683. data/features/aws/glue/expressjs/typescript/package.json +5 -0
  684. data/features/aws/glue/nestjs/typescript/package.json +5 -0
  685. data/features/aws/glue/nextjs/javascript/package.json +5 -0
  686. data/features/aws/glue/nextjs/typescript/package.json +5 -0
  687. data/features/aws/glue/remixjs/typescript/package.json +5 -0
  688. data/features/aws/iam/expressjs/javascript/controllers/iamControllers.js +30 -0
  689. data/features/aws/iam/expressjs/javascript/index.js +4 -0
  690. data/features/aws/iam/expressjs/javascript/package.json +5 -0
  691. data/features/aws/iam/expressjs/javascript/routes/iamRoutes.js +10 -0
  692. data/features/aws/iam/expressjs/javascript/utils/awsIam.js +24 -0
  693. data/features/aws/iam/expressjs/typescript/controllers/iamControllers.ts +31 -0
  694. data/features/aws/iam/expressjs/typescript/index.ts +4 -0
  695. data/features/aws/iam/expressjs/typescript/package.json +5 -0
  696. data/features/aws/iam/expressjs/typescript/routes/iamRoutes.ts +10 -0
  697. data/features/aws/iam/expressjs/typescript/utils/awsIam.ts +24 -0
  698. data/features/aws/iam/nestjs/typescript/package.json +5 -0
  699. data/features/aws/iam/nestjs/typescript/src/aws-iam/aws-iam.controller.ts +22 -0
  700. data/features/aws/iam/nestjs/typescript/src/aws-iam/aws-iam.module.ts +9 -0
  701. data/features/aws/iam/nestjs/typescript/src/aws-iam/aws-iam.service.ts +25 -0
  702. data/features/aws/iam/nextjs/javascript/app/api/aws/iam/route.js +19 -0
  703. data/features/aws/iam/nextjs/javascript/lib/awsIam.js +24 -0
  704. data/features/aws/iam/nextjs/javascript/package.json +5 -0
  705. data/features/aws/iam/nextjs/typescript/app/api/aws/iam/route.ts +19 -0
  706. data/features/aws/iam/nextjs/typescript/lib/awsIam.ts +24 -0
  707. data/features/aws/iam/nextjs/typescript/package.json +5 -0
  708. data/features/aws/iam/remixjs/typescript/app/routes/api/aws-iam.ts +35 -0
  709. data/features/aws/iam/remixjs/typescript/package.json +5 -0
  710. data/features/aws/kinesis/expressjs/javascript/package.json +12 -0
  711. data/features/aws/kinesis/expressjs/typescript/package.json +12 -0
  712. data/features/aws/kinesis/nestjs/typescript/package.json +12 -0
  713. data/features/aws/kinesis/nextjs/javascript/package.json +12 -0
  714. data/features/aws/kinesis/nextjs/typescript/package.json +12 -0
  715. data/features/aws/kinesis/remixjs/typescript/package.json +12 -0
  716. data/features/aws/kms/expressjs/javascript/controllers/awsKmsController.js +30 -0
  717. data/features/aws/kms/expressjs/javascript/index.js +3 -0
  718. data/features/aws/kms/expressjs/javascript/package.json +5 -0
  719. data/features/aws/kms/expressjs/javascript/routes/awsKmsRoutes.js +10 -0
  720. data/features/aws/kms/expressjs/javascript/utils/awsKms.js +26 -0
  721. data/features/aws/kms/expressjs/typescript/controllers/awsKmsController.ts +31 -0
  722. data/features/aws/kms/expressjs/typescript/index.ts +3 -0
  723. data/features/aws/kms/expressjs/typescript/package.json +5 -0
  724. data/features/aws/kms/expressjs/typescript/routes/awsKmsRoutes.ts +10 -0
  725. data/features/aws/kms/expressjs/typescript/utils/awsKms.ts +26 -0
  726. data/features/aws/kms/nestjs/typescript/package.json +5 -0
  727. data/features/aws/kms/nestjs/typescript/src/aws-kms/aws-kms.controller.ts +22 -0
  728. data/features/aws/kms/nestjs/typescript/src/aws-kms/aws-kms.service.ts +25 -0
  729. data/features/aws/kms/nextjs/javascript/app/api/aws/kms/route.js +19 -0
  730. data/features/aws/kms/nextjs/javascript/lib/awsKms.js +26 -0
  731. data/features/aws/kms/nextjs/javascript/package.json +5 -0
  732. data/features/aws/kms/nextjs/typescript/app/api/aws/kms/route.ts +19 -0
  733. data/features/aws/kms/nextjs/typescript/lib/awsKms.ts +26 -0
  734. data/features/aws/kms/nextjs/typescript/package.json +5 -0
  735. data/features/aws/kms/remixjs/typescript/app/routes/api/aws-kms.ts +31 -0
  736. data/features/aws/kms/remixjs/typescript/package.json +5 -0
  737. data/features/aws/lambda/expressjs/javascript/controllers/awsLambdaController.js +20 -0
  738. data/features/aws/lambda/expressjs/javascript/index.js +4 -0
  739. data/features/aws/lambda/expressjs/javascript/package.json +5 -0
  740. data/features/aws/lambda/expressjs/javascript/routes/awsLambdaRoutes.js +7 -0
  741. data/features/aws/lambda/expressjs/javascript/utils/awsLambda.js +26 -0
  742. data/features/aws/lambda/expressjs/typescript/controllers/awsLambdaController.ts +21 -0
  743. data/features/aws/lambda/expressjs/typescript/index.ts +4 -0
  744. data/features/aws/lambda/expressjs/typescript/package.json +5 -0
  745. data/features/aws/lambda/expressjs/typescript/routes/awsLambdaRoutes.ts +7 -0
  746. data/features/aws/lambda/expressjs/typescript/utils/awsLambda.ts +27 -0
  747. data/features/aws/lambda/nestjs/typescript/package.json +5 -0
  748. data/features/aws/lambda/nestjs/typescript/src/aws-lambda/aws-lambda.controller.ts +17 -0
  749. data/features/aws/lambda/nestjs/typescript/src/aws-lambda/aws-lambda.service.ts +31 -0
  750. data/features/aws/lambda/nextjs/javascript/app/api/aws/lambda/route.js +13 -0
  751. data/features/aws/lambda/nextjs/javascript/lib/awsLambda.js +27 -0
  752. data/features/aws/lambda/nextjs/javascript/package.json +5 -0
  753. data/features/aws/lambda/nextjs/typescript/app/api/aws/lambda/route.ts +13 -0
  754. data/features/aws/lambda/nextjs/typescript/lib/awsLambda.ts +28 -0
  755. data/features/aws/lambda/nextjs/typescript/package.json +5 -0
  756. data/features/aws/lambda/remixjs/typescript/app/routes/api/aws-lambda.ts +14 -0
  757. data/features/aws/lambda/remixjs/typescript/app/utils/awsLambda.ts +27 -0
  758. data/features/aws/lambda/remixjs/typescript/package.json +5 -0
  759. data/features/aws/lex/expressjs/javascript/package.json +8 -0
  760. data/features/aws/lex/expressjs/typescript/package.json +8 -0
  761. data/features/aws/lex/nestjs/typescript/package.json +8 -0
  762. data/features/aws/lex/nextjs/javascript/package.json +8 -0
  763. data/features/aws/lex/nextjs/typescript/package.json +8 -0
  764. data/features/aws/lex/remixjs/typescript/package.json +8 -0
  765. data/features/aws/mediaconvert/expressjs/javascript/package.json +5 -0
  766. data/features/aws/mediaconvert/expressjs/typescript/package.json +5 -0
  767. data/features/aws/mediaconvert/nestjs/typescript/package.json +5 -0
  768. data/features/aws/mediaconvert/nextjs/javascript/package.json +5 -0
  769. data/features/aws/mediaconvert/nextjs/typescript/package.json +5 -0
  770. data/features/aws/mediaconvert/remixjs/typescript/package.json +5 -0
  771. data/features/aws/medialive/expressjs/javascript/package.json +5 -0
  772. data/features/aws/medialive/expressjs/typescript/package.json +5 -0
  773. data/features/aws/medialive/nestjs/typescript/package.json +5 -0
  774. data/features/aws/medialive/nextjs/javascript/package.json +5 -0
  775. data/features/aws/medialive/nextjs/typescript/package.json +5 -0
  776. data/features/aws/medialive/remixjs/typescript/package.json +5 -0
  777. data/features/aws/mediastore/expressjs/javascript/package.json +6 -0
  778. data/features/aws/mediastore/expressjs/typescript/package.json +6 -0
  779. data/features/aws/mediastore/nestjs/typescript/package.json +6 -0
  780. data/features/aws/mediastore/nextjs/javascript/package.json +6 -0
  781. data/features/aws/mediastore/nextjs/typescript/package.json +6 -0
  782. data/features/aws/mediastore/remixjs/typescript/package.json +6 -0
  783. data/features/aws/neptune/expressjs/javascript/package.json +6 -0
  784. data/features/aws/neptune/expressjs/typescript/package.json +6 -0
  785. data/features/aws/neptune/nestjs/typescript/package.json +6 -0
  786. data/features/aws/neptune/nextjs/javascript/package.json +6 -0
  787. data/features/aws/neptune/nextjs/typescript/package.json +6 -0
  788. data/features/aws/neptune/remixjs/typescript/package.json +6 -0
  789. data/features/aws/organizations/expressjs/javascript/controllers/organizationsController.js +20 -0
  790. data/features/aws/organizations/expressjs/javascript/index.js +4 -0
  791. data/features/aws/organizations/expressjs/javascript/package.json +5 -0
  792. data/features/aws/organizations/expressjs/javascript/routes/organizationsRoutes.js +8 -0
  793. data/features/aws/organizations/expressjs/javascript/utils/aws-organizations.js +25 -0
  794. data/features/aws/organizations/expressjs/typescript/controllers/organizationController.ts +21 -0
  795. data/features/aws/organizations/expressjs/typescript/index.ts +4 -0
  796. data/features/aws/organizations/expressjs/typescript/package.json +5 -0
  797. data/features/aws/organizations/expressjs/typescript/routes/organizationsRoutes.ts +10 -0
  798. data/features/aws/organizations/expressjs/typescript/utils/aws-organizations.ts +25 -0
  799. data/features/aws/organizations/nestjs/typescript/package.json +5 -0
  800. data/features/aws/organizations/nestjs/typescript/src/organizations/organizations.controller.ts +17 -0
  801. data/features/aws/organizations/nestjs/typescript/src/organizations/organizations.module.ts +10 -0
  802. data/features/aws/organizations/nestjs/typescript/src/organizations/organizations.service.ts +25 -0
  803. data/features/aws/organizations/nextjs/javascript/app/api/aws/organizations/route.ts +20 -0
  804. data/features/aws/organizations/nextjs/javascript/lib/aws-organizations.js +25 -0
  805. data/features/aws/organizations/nextjs/javascript/package.json +5 -0
  806. data/features/aws/organizations/nextjs/typescript/app/api/aws/organizations/route.ts +20 -0
  807. data/features/aws/organizations/nextjs/typescript/lib/aws-organizations.ts +25 -0
  808. data/features/aws/organizations/nextjs/typescript/package.json +5 -0
  809. data/features/aws/organizations/remixjs/typescript/app/routes/api/organizations.ts +22 -0
  810. data/features/aws/organizations/remixjs/typescript/app/utils/aws-organizations.ts +26 -0
  811. data/features/aws/organizations/remixjs/typescript/package.json +5 -0
  812. data/features/aws/personalize/expressjs/javascript/package.json +7 -0
  813. data/features/aws/personalize/expressjs/typescript/package.json +7 -0
  814. data/features/aws/personalize/nestjs/typescript/package.json +7 -0
  815. data/features/aws/personalize/nextjs/javascript/package.json +7 -0
  816. data/features/aws/personalize/nextjs/typescript/package.json +7 -0
  817. data/features/aws/personalize/remixjs/typescript/package.json +7 -0
  818. data/features/aws/pinpoint/expressjs/javascript/package.json +7 -0
  819. data/features/aws/pinpoint/expressjs/typescript/package.json +7 -0
  820. data/features/aws/pinpoint/nestjs/typescript/package.json +7 -0
  821. data/features/aws/pinpoint/nextjs/javascript/package.json +7 -0
  822. data/features/aws/pinpoint/nextjs/typescript/package.json +7 -0
  823. data/features/aws/pinpoint/remixjs/typescript/package.json +7 -0
  824. data/features/aws/quicksight/expressjs/javascript/package.json +5 -0
  825. data/features/aws/quicksight/expressjs/typescript/package.json +5 -0
  826. data/features/aws/quicksight/nestjs/typescript/package.json +5 -0
  827. data/features/aws/quicksight/nextjs/javascript/package.json +5 -0
  828. data/features/aws/quicksight/nextjs/typescript/package.json +5 -0
  829. data/features/aws/quicksight/remixjs/typescript/package.json +5 -0
  830. data/features/aws/rds/expressjs/javascript/package.json +8 -0
  831. data/features/aws/rds/expressjs/typescript/package.json +8 -0
  832. data/features/aws/rds/nestjs/typescript/package.json +8 -0
  833. data/features/aws/rds/nextjs/javascript/package.json +8 -0
  834. data/features/aws/rds/nextjs/typescript/package.json +8 -0
  835. data/features/aws/rds/remixjs/typescript/package.json +8 -0
  836. data/features/aws/redshift/expressjs/javascript/package.json +7 -0
  837. data/features/aws/redshift/expressjs/typescript/package.json +7 -0
  838. data/features/aws/redshift/nestjs/typescript/package.json +7 -0
  839. data/features/aws/redshift/nextjs/javascript/package.json +7 -0
  840. data/features/aws/redshift/nextjs/typescript/package.json +7 -0
  841. data/features/aws/redshift/remixjs/typescript/package.json +7 -0
  842. data/features/aws/route-53/expressjs/javascript/package.json +10 -0
  843. data/features/aws/route-53/expressjs/typescript/package.json +10 -0
  844. data/features/aws/route-53/nestjs/typescript/package.json +10 -0
  845. data/features/aws/route-53/nextjs/javascript/package.json +10 -0
  846. data/features/aws/route-53/nextjs/typescript/package.json +10 -0
  847. data/features/aws/route-53/remixjs/typescript/package.json +10 -0
  848. data/features/aws/s3/expressjs/javascript/controllers/s3Controllers.js +21 -0
  849. data/features/aws/s3/expressjs/javascript/index.js +3 -0
  850. data/features/aws/s3/expressjs/javascript/package.json +7 -0
  851. data/features/aws/s3/expressjs/javascript/routes/s3Routes.js +9 -0
  852. data/features/aws/s3/expressjs/javascript/utils/s3.js +22 -0
  853. data/features/aws/s3/expressjs/typescript/controllers/s3Controllers.ts +21 -0
  854. data/features/aws/s3/expressjs/typescript/index.ts +3 -0
  855. data/features/aws/s3/expressjs/typescript/package.json +7 -0
  856. data/features/aws/s3/expressjs/typescript/routes/s3Routes.ts +9 -0
  857. data/features/aws/s3/expressjs/typescript/utils/s3.ts +22 -0
  858. data/features/aws/s3/nestjs/typescript/package.json +7 -0
  859. data/features/aws/s3/nestjs/typescript/src/s3/s3.controller.ts +17 -0
  860. data/features/aws/s3/nestjs/typescript/src/s3/s3.module.ts +9 -0
  861. data/features/aws/s3/nestjs/typescript/src/s3/s3.service.ts +26 -0
  862. data/features/aws/s3/nextjs/javascript/app/api/aws/s3/list/route.js +13 -0
  863. data/features/aws/s3/nextjs/javascript/app/api/aws/s3/upload/route.js +12 -0
  864. data/features/aws/s3/nextjs/javascript/package.json +7 -0
  865. data/features/aws/s3/nextjs/javascript/utils/s3.js +22 -0
  866. data/features/aws/s3/nextjs/typescript/app/api/aws/s3/list/route.ts +15 -0
  867. data/features/aws/s3/nextjs/typescript/app/api/aws/s3/upload/route.ts +16 -0
  868. data/features/aws/s3/nextjs/typescript/package.json +7 -0
  869. data/features/aws/s3/nextjs/typescript/utils/s3.ts +22 -0
  870. data/features/aws/s3/remixjs/typescript/app/routes/api/s3.ts +16 -0
  871. data/features/aws/s3/remixjs/typescript/app/utils/s3.ts +22 -0
  872. data/features/aws/s3/remixjs/typescript/package.json +7 -0
  873. data/features/aws/s3-glacier/expressjs/javascript/package.json +10 -0
  874. data/features/aws/s3-glacier/expressjs/typescript/package.json +10 -0
  875. data/features/aws/s3-glacier/nestjs/typescript/package.json +10 -0
  876. data/features/aws/s3-glacier/nextjs/javascript/package.json +10 -0
  877. data/features/aws/s3-glacier/nextjs/typescript/package.json +10 -0
  878. data/features/aws/s3-glacier/remixjs/typescript/package.json +10 -0
  879. data/features/aws/s3-glacier-deep-archive/expressjs/javascript/package.json +10 -0
  880. data/features/aws/s3-glacier-deep-archive/expressjs/typescript/package.json +10 -0
  881. data/features/aws/s3-glacier-deep-archive/nestjs/typescript/package.json +10 -0
  882. data/features/aws/s3-glacier-deep-archive/nextjs/javascript/package.json +10 -0
  883. data/features/aws/s3-glacier-deep-archive/nextjs/typescript/package.json +10 -0
  884. data/features/aws/s3-glacier-deep-archive/remixjs/typescript/package.json +10 -0
  885. data/features/aws/secrets-manager/expressjs/javascript/package.json +5 -0
  886. data/features/aws/secrets-manager/expressjs/typescript/package.json +5 -0
  887. data/features/aws/secrets-manager/nestjs/typescript/package.json +5 -0
  888. data/features/aws/secrets-manager/nextjs/javascript/package.json +5 -0
  889. data/features/aws/secrets-manager/nextjs/typescript/package.json +5 -0
  890. data/features/aws/secrets-manager/remixjs/typescript/package.json +5 -0
  891. data/features/aws/service-catalog/expressjs/javascript/package.json +6 -0
  892. data/features/aws/service-catalog/expressjs/typescript/package.json +6 -0
  893. data/features/aws/service-catalog/nestjs/typescript/package.json +6 -0
  894. data/features/aws/service-catalog/nextjs/javascript/package.json +6 -0
  895. data/features/aws/service-catalog/nextjs/typescript/package.json +6 -0
  896. data/features/aws/service-catalog/remixjs/typescript/package.json +6 -0
  897. data/features/aws/shield/expressjs/javascript/package.json +5 -0
  898. data/features/aws/shield/expressjs/typescript/package.json +5 -0
  899. data/features/aws/shield/nestjs/typescript/package.json +5 -0
  900. data/features/aws/shield/nextjs/javascript/package.json +5 -0
  901. data/features/aws/shield/nextjs/typescript/package.json +5 -0
  902. data/features/aws/shield/remixjs/typescript/package.json +5 -0
  903. data/features/aws/simple-email-service/expressjs/javascript/package.json +6 -0
  904. data/features/aws/simple-email-service/expressjs/typescript/package.json +6 -0
  905. data/features/aws/simple-email-service/nestjs/typescript/package.json +6 -0
  906. data/features/aws/simple-email-service/nextjs/javascript/package.json +6 -0
  907. data/features/aws/simple-email-service/nextjs/typescript/package.json +6 -0
  908. data/features/aws/simple-email-service/remixjs/typescript/package.json +6 -0
  909. data/features/aws/snowball/expressjs/javascript/package.json +6 -0
  910. data/features/aws/snowball/expressjs/typescript/package.json +6 -0
  911. data/features/aws/snowball/nestjs/typescript/package.json +6 -0
  912. data/features/aws/snowball/nextjs/javascript/package.json +6 -0
  913. data/features/aws/snowball/nextjs/typescript/package.json +6 -0
  914. data/features/aws/snowball/remixjs/typescript/package.json +6 -0
  915. data/features/aws/snowmobile/expressjs/javascript/package.json +5 -0
  916. data/features/aws/snowmobile/expressjs/typescript/package.json +5 -0
  917. data/features/aws/snowmobile/nestjs/typescript/package.json +5 -0
  918. data/features/aws/snowmobile/nextjs/javascript/package.json +5 -0
  919. data/features/aws/snowmobile/nextjs/typescript/package.json +5 -0
  920. data/features/aws/snowmobile/remixjs/typescript/package.json +5 -0
  921. data/features/aws/sso/expressjs/javascript/package.json +9 -0
  922. data/features/aws/sso/expressjs/typescript/package.json +9 -0
  923. data/features/aws/sso/nestjs/typescript/package.json +9 -0
  924. data/features/aws/sso/nextjs/javascript/package.json +9 -0
  925. data/features/aws/sso/nextjs/typescript/package.json +9 -0
  926. data/features/aws/sso/remixjs/typescript/package.json +9 -0
  927. data/features/aws/storage-gateway/expressjs/javascript/package.json +5 -0
  928. data/features/aws/storage-gateway/expressjs/typescript/package.json +5 -0
  929. data/features/aws/storage-gateway/nestjs/typescript/package.json +5 -0
  930. data/features/aws/storage-gateway/nextjs/javascript/package.json +5 -0
  931. data/features/aws/storage-gateway/nextjs/typescript/package.json +5 -0
  932. data/features/aws/storage-gateway/remixjs/typescript/package.json +5 -0
  933. data/features/aws/sts/expressjs/javascript/package.json +7 -0
  934. data/features/aws/sts/expressjs/typescript/package.json +7 -0
  935. data/features/aws/sts/nestjs/typescript/package.json +7 -0
  936. data/features/aws/sts/nextjs/javascript/package.json +7 -0
  937. data/features/aws/sts/nextjs/typescript/package.json +7 -0
  938. data/features/aws/sts/remixjs/typescript/package.json +7 -0
  939. data/features/aws/systems-manager/expressjs/javascript/package.json +5 -0
  940. data/features/aws/systems-manager/expressjs/typescript/package.json +5 -0
  941. data/features/aws/systems-manager/nestjs/typescript/package.json +5 -0
  942. data/features/aws/systems-manager/nextjs/javascript/package.json +5 -0
  943. data/features/aws/systems-manager/nextjs/typescript/package.json +5 -0
  944. data/features/aws/systems-manager/remixjs/typescript/package.json +5 -0
  945. data/features/aws/textract/expressjs/javascript/package.json +5 -0
  946. data/features/aws/textract/expressjs/typescript/package.json +5 -0
  947. data/features/aws/textract/nestjs/typescript/package.json +5 -0
  948. data/features/aws/textract/nextjs/javascript/package.json +5 -0
  949. data/features/aws/textract/nextjs/typescript/package.json +5 -0
  950. data/features/aws/textract/remixjs/typescript/package.json +5 -0
  951. data/features/aws/translate/expressjs/javascript/package.json +5 -0
  952. data/features/aws/translate/expressjs/typescript/package.json +5 -0
  953. data/features/aws/translate/nestjs/typescript/package.json +5 -0
  954. data/features/aws/translate/nextjs/javascript/package.json +5 -0
  955. data/features/aws/translate/nextjs/typescript/package.json +5 -0
  956. data/features/aws/translate/remixjs/typescript/package.json +5 -0
  957. data/features/aws/trustedAdvisor/expressjs/javascript/controllers/awsTrustedAdvisorController.js +10 -0
  958. data/features/aws/trustedAdvisor/expressjs/javascript/index.js +4 -0
  959. data/features/aws/trustedAdvisor/expressjs/javascript/package.json +5 -0
  960. data/features/aws/trustedAdvisor/expressjs/javascript/routes/awsTrustedAdvisorRoutes.js +7 -0
  961. data/features/aws/trustedAdvisor/expressjs/javascript/utils/aws-trustedadvisor.js +13 -0
  962. data/features/aws/trustedAdvisor/expressjs/typescript/controllers/awsTrustedAdvisorController.ts +10 -0
  963. data/features/aws/trustedAdvisor/expressjs/typescript/index.ts +4 -0
  964. data/features/aws/trustedAdvisor/expressjs/typescript/package.json +5 -0
  965. data/features/aws/trustedAdvisor/expressjs/typescript/routes/awsTrustedAdvisorRoutes.ts +7 -0
  966. data/features/aws/trustedAdvisor/expressjs/typescript/utils/aws-trustedadvisor.ts +13 -0
  967. data/features/aws/trustedAdvisor/nestjs/typescript/package.json +5 -0
  968. data/features/aws/trustedAdvisor/nestjs/typescript/src/trustedadvisor/aws-trustedadvisor.controller.ts +12 -0
  969. data/features/aws/trustedAdvisor/nestjs/typescript/src/trustedadvisor/aws-trustedadvisor.module.ts +9 -0
  970. data/features/aws/trustedAdvisor/nestjs/typescript/src/trustedadvisor/aws-trustedadvisor.service.ts +17 -0
  971. data/features/aws/trustedAdvisor/nextjs/javascript/app/api/aws/trustedadvisor/route.js +11 -0
  972. data/features/aws/trustedAdvisor/nextjs/javascript/lib/aws-trustedadvisor.js +13 -0
  973. data/features/aws/trustedAdvisor/nextjs/javascript/package.json +5 -0
  974. data/features/aws/trustedAdvisor/nextjs/typescript/app/api/aws/trustedadvisor/route.ts +11 -0
  975. data/features/aws/trustedAdvisor/nextjs/typescript/lib/aws-trustedadvisor.ts +13 -0
  976. data/features/aws/trustedAdvisor/nextjs/typescript/package.json +5 -0
  977. data/features/aws/trustedAdvisor/remixjs/typescript/app/routes/api/aws-trustedadvisor.ts +11 -0
  978. data/features/aws/trustedAdvisor/remixjs/typescript/app/utils/aws-trustedadvisor.ts +13 -0
  979. data/features/aws/trustedAdvisor/remixjs/typescript/package.json +5 -0
  980. data/features/aws/vpc/expressjs/javascript/package.json +6 -0
  981. data/features/aws/vpc/expressjs/typescript/package.json +6 -0
  982. data/features/aws/vpc/nestjs/typescript/package.json +6 -0
  983. data/features/aws/vpc/nextjs/javascript/package.json +6 -0
  984. data/features/aws/vpc/nextjs/typescript/package.json +6 -0
  985. data/features/aws/vpc/remixjs/typescript/package.json +6 -0
  986. data/features/aws/waf/expressjs/javascript/package.json +7 -0
  987. data/features/aws/waf/expressjs/typescript/package.json +7 -0
  988. data/features/aws/waf/nestjs/typescript/package.json +7 -0
  989. data/features/aws/waf/nextjs/javascript/package.json +7 -0
  990. data/features/aws/waf/nextjs/typescript/package.json +7 -0
  991. data/features/aws/waf/remixjs/typescript/package.json +7 -0
  992. data/features/aws/x-ray/expressjs/javascript/controllers/xrayController.js +31 -0
  993. data/features/aws/x-ray/expressjs/javascript/index.js +4 -0
  994. data/features/aws/x-ray/expressjs/javascript/package.json +5 -0
  995. data/features/aws/x-ray/expressjs/javascript/routes/xrayRoutes.js +10 -0
  996. data/features/aws/x-ray/expressjs/javascript/utils/xray.js +15 -0
  997. data/features/aws/x-ray/expressjs/typescript/controllers/xrayController.ts +51 -0
  998. data/features/aws/x-ray/expressjs/typescript/index.ts +4 -0
  999. data/features/aws/x-ray/expressjs/typescript/package.json +5 -0
  1000. data/features/aws/x-ray/expressjs/typescript/routes/xrayRoutes.ts +12 -0
  1001. data/features/aws/x-ray/expressjs/typescript/utils/xray.ts +23 -0
  1002. data/features/aws/x-ray/nestjs/typescript/package.json +5 -0
  1003. data/features/aws/x-ray/nestjs/typescript/src/xray/xray.controller.ts +22 -0
  1004. data/features/aws/x-ray/nestjs/typescript/src/xray/xray.module.ts +10 -0
  1005. data/features/aws/x-ray/nestjs/typescript/src/xray/xray.service.ts +20 -0
  1006. data/features/aws/x-ray/nextjs/javascript/app/api/aws/xray/route.js +17 -0
  1007. data/features/aws/x-ray/nextjs/javascript/lib/xray.js +15 -0
  1008. data/features/aws/x-ray/nextjs/javascript/package.json +5 -0
  1009. data/features/aws/x-ray/nextjs/typescript/app/api/aws/xray/route.ts +16 -0
  1010. data/features/aws/x-ray/nextjs/typescript/lib/xray.ts +6 -0
  1011. data/features/aws/x-ray/nextjs/typescript/package.json +5 -0
  1012. data/features/aws/x-ray/remixjs/typescript/app/routes/api/xray.ts +18 -0
  1013. data/features/aws/x-ray/remixjs/typescript/app/utils/xray.ts +15 -0
  1014. data/features/aws/x-ray/remixjs/typescript/package.json +5 -0
  1015. data/features/database/mongodb/mongoose/javascript/expressjs/controllers/userController.js +15 -0
  1016. data/features/database/mongodb/mongoose/javascript/expressjs/index.js +4 -0
  1017. data/features/database/mongodb/mongoose/javascript/expressjs/models/User.js +9 -0
  1018. data/features/database/mongodb/mongoose/javascript/expressjs/package.json +5 -0
  1019. data/features/database/mongodb/mongoose/javascript/expressjs/routes/userRoutes.js +9 -0
  1020. data/features/database/mongodb/mongoose/javascript/expressjs/utils/mongodb.js +8 -0
  1021. data/features/database/mongodb/mongoose/javascript/nextjs/app/api/users/route.js +10 -0
  1022. data/features/database/mongodb/mongoose/javascript/nextjs/lib/mongodb.js +24 -0
  1023. data/features/database/mongodb/mongoose/javascript/nextjs/models/User.js +9 -0
  1024. data/features/database/mongodb/mongoose/javascript/nextjs/package.json +5 -0
  1025. data/features/database/mongodb/mongoose/typescript/expressjs/controllers/userController.ts +18 -0
  1026. data/features/database/mongodb/mongoose/typescript/expressjs/index.ts +4 -0
  1027. data/features/database/mongodb/mongoose/typescript/expressjs/models/User.ts +16 -0
  1028. data/features/database/mongodb/mongoose/typescript/expressjs/package.json +5 -0
  1029. data/features/database/mongodb/mongoose/typescript/expressjs/routes/userRoutes.ts +9 -0
  1030. data/features/database/mongodb/mongoose/typescript/expressjs/utils/mongodb.ts +8 -0
  1031. data/features/database/mongodb/mongoose/typescript/nestjs/package.json +5 -0
  1032. data/features/database/mongodb/mongoose/typescript/nestjs/src/user/user.controller.ts +13 -0
  1033. data/features/database/mongodb/mongoose/typescript/nestjs/src/user/user.module.ts +12 -0
  1034. data/features/database/mongodb/mongoose/typescript/nestjs/src/user/user.schema.ts +11 -0
  1035. data/features/database/mongodb/mongoose/typescript/nestjs/src/user/user.service.ts +13 -0
  1036. data/features/database/mongodb/mongoose/typescript/nextjs/app/api/users/route.ts +10 -0
  1037. data/features/database/mongodb/mongoose/typescript/nextjs/lib/mongodb.ts +24 -0
  1038. data/features/database/mongodb/mongoose/typescript/nextjs/models/User.ts +16 -0
  1039. data/features/database/mongodb/mongoose/typescript/nextjs/package.json +5 -0
  1040. data/features/database/mongodb/mongoose/typescript/remixjs/app/models/User.ts +14 -0
  1041. data/features/database/mongodb/mongoose/typescript/remixjs/app/routes/api.users.ts +10 -0
  1042. data/features/database/mongodb/mongoose/typescript/remixjs/app/utils/mongodb.ts +8 -0
  1043. data/features/database/mongodb/mongoose/typescript/remixjs/package.json +5 -0
  1044. data/features/database/mongodb/typegoose/typescript/expressjs/controllers/userController.ts +9 -0
  1045. data/features/database/mongodb/typegoose/typescript/expressjs/index.ts +4 -0
  1046. data/features/database/mongodb/typegoose/typescript/expressjs/models/User.ts +11 -0
  1047. data/features/database/mongodb/typegoose/typescript/expressjs/package.json +6 -0
  1048. data/features/database/mongodb/typegoose/typescript/expressjs/routes/userRoutes.ts +8 -0
  1049. data/features/database/mongodb/typegoose/typescript/expressjs/utils/mongodb.ts +8 -0
  1050. data/features/database/mongodb/typegoose/typescript/nestjs/package.json +6 -0
  1051. data/features/database/mongodb/typegoose/typescript/nestjs/src/user/user.controller.ts +13 -0
  1052. data/features/database/mongodb/typegoose/typescript/nestjs/src/user/user.model.ts +9 -0
  1053. data/features/database/mongodb/typegoose/typescript/nestjs/src/user/user.module.ts +20 -0
  1054. data/features/database/mongodb/typegoose/typescript/nestjs/src/user/user.service.ts +13 -0
  1055. data/features/database/mongodb/typegoose/typescript/nextjs/app/api/users/route.ts +9 -0
  1056. data/features/database/mongodb/typegoose/typescript/nextjs/lib/mongodb.ts +24 -0
  1057. data/features/database/mongodb/typegoose/typescript/nextjs/models/User.ts +11 -0
  1058. data/features/database/mongodb/typegoose/typescript/nextjs/package.json +6 -0
  1059. data/features/database/mongodb/typegoose/typescript/remixjs/app/models/User.ts +11 -0
  1060. data/features/database/mongodb/typegoose/typescript/remixjs/app/routes/api.users.ts +10 -0
  1061. data/features/database/mongodb/typegoose/typescript/remixjs/app/utils/mongodb.ts +8 -0
  1062. data/features/database/mongodb/typegoose/typescript/remixjs/package.json +6 -0
  1063. data/features/database/mysql/drizzle/typescript/expressjs/controllers/drizzleController.ts +11 -0
  1064. data/features/database/mysql/drizzle/typescript/expressjs/index.ts +3 -0
  1065. data/features/database/mysql/drizzle/typescript/expressjs/package.json +5 -0
  1066. data/features/database/mysql/drizzle/typescript/expressjs/routes/drizzle.ts +8 -0
  1067. data/features/database/mysql/drizzle/typescript/expressjs/utils/drizzle.ts +13 -0
  1068. data/features/database/mysql/drizzle/typescript/nestjs/package.json +5 -0
  1069. data/features/database/mysql/drizzle/typescript/nestjs/src/drizzle/drizzle.controller.ts +12 -0
  1070. data/features/database/mysql/drizzle/typescript/nestjs/src/drizzle/drizzle.module.ts +9 -0
  1071. data/features/database/mysql/drizzle/typescript/nestjs/src/drizzle/drizzle.service.ts +10 -0
  1072. data/features/database/mysql/drizzle/typescript/nestjs/src/drizzle.ts +13 -0
  1073. data/features/database/mysql/drizzle/typescript/nextjs/app/api/users/route.ts +11 -0
  1074. data/features/database/mysql/drizzle/typescript/nextjs/lib/drizzle.ts +11 -0
  1075. data/features/database/mysql/drizzle/typescript/nextjs/package.json +5 -0
  1076. data/features/database/mysql/drizzle/typescript/remixjs/app/routes/api.drizzle.ts +12 -0
  1077. data/features/database/mysql/drizzle/typescript/remixjs/app/utils/drizzle.ts +13 -0
  1078. data/features/database/mysql/drizzle/typescript/remixjs/package.json +5 -0
  1079. data/features/database/mysql/prisma/typescript/expressjs/controllers/prismaController.ts +7 -0
  1080. data/features/database/mysql/prisma/typescript/expressjs/index.ts +3 -0
  1081. data/features/database/mysql/prisma/typescript/expressjs/package.json +6 -0
  1082. data/features/database/mysql/prisma/typescript/expressjs/prisma/schema.prisma +8 -0
  1083. data/features/database/mysql/prisma/typescript/expressjs/routes/prismaRoutes.ts +8 -0
  1084. data/features/database/mysql/prisma/typescript/expressjs/utils/prisma.ts +4 -0
  1085. data/features/database/mysql/prisma/typescript/nestjs/package.json +6 -0
  1086. data/features/database/mysql/prisma/typescript/nestjs/prisma/schema.prisma +8 -0
  1087. data/features/database/mysql/prisma/typescript/nestjs/src/prisma.service.ts +16 -0
  1088. data/features/database/mysql/prisma/typescript/nestjs/src/user/user.controller.ts +12 -0
  1089. data/features/database/mysql/prisma/typescript/nestjs/src/user/user.module.ts +10 -0
  1090. data/features/database/mysql/prisma/typescript/nestjs/src/user/user.service.ts +11 -0
  1091. data/features/database/mysql/prisma/typescript/nextjs/app/api/users/route.ts +7 -0
  1092. data/features/database/mysql/prisma/typescript/nextjs/lib/prisma.ts +8 -0
  1093. data/features/database/mysql/prisma/typescript/nextjs/package.json +6 -0
  1094. data/features/database/mysql/prisma/typescript/nextjs/prisma/schema.prisma +8 -0
  1095. data/features/database/mysql/prisma/typescript/remixjs/app/prisma/schema.prisma +8 -0
  1096. data/features/database/mysql/prisma/typescript/remixjs/app/routes/api.users.ts +8 -0
  1097. data/features/database/mysql/prisma/typescript/remixjs/app/utils/prisma.ts +18 -0
  1098. data/features/database/mysql/prisma/typescript/remixjs/package.json +6 -0
  1099. data/features/database/mysql/typeorm/javascript/expressjs/controllers/typeormController.js +13 -0
  1100. data/features/database/mysql/typeorm/javascript/expressjs/index.js +3 -0
  1101. data/features/database/mysql/typeorm/javascript/expressjs/package.json +5 -0
  1102. data/features/database/mysql/typeorm/javascript/expressjs/routes/typeormRoutes.js +8 -0
  1103. data/features/database/mysql/typeorm/javascript/expressjs/utils/typeorm.js +9 -0
  1104. data/features/database/mysql/typeorm/javascript/nextjs/app/api/typeorm/route.js +13 -0
  1105. data/features/database/mysql/typeorm/javascript/nextjs/lib/typeorm.js +9 -0
  1106. data/features/database/mysql/typeorm/javascript/nextjs/package.json +5 -0
  1107. data/features/database/mysql/typeorm/typescript/expressjs/controllers/typeormController.ts +14 -0
  1108. data/features/database/mysql/typeorm/typescript/expressjs/index.ts +3 -0
  1109. data/features/database/mysql/typeorm/typescript/expressjs/package.json +5 -0
  1110. data/features/database/mysql/typeorm/typescript/expressjs/routes/typeorm.ts +8 -0
  1111. data/features/database/mysql/typeorm/typescript/expressjs/utils/typeorm.ts +9 -0
  1112. data/features/database/mysql/typeorm/typescript/nestjs/package.json +5 -0
  1113. data/features/database/mysql/typeorm/typescript/nestjs/src/typeorm/typeorm.controller.ts +12 -0
  1114. data/features/database/mysql/typeorm/typescript/nestjs/src/typeorm/typeorm.module.ts +9 -0
  1115. data/features/database/mysql/typeorm/typescript/nestjs/src/typeorm/typeorm.service.ts +16 -0
  1116. data/features/database/mysql/typeorm/typescript/nestjs/src/typeorm.ts +9 -0
  1117. data/features/database/mysql/typeorm/typescript/nextjs/app/api/typeorm/route.ts +13 -0
  1118. data/features/database/mysql/typeorm/typescript/nextjs/lib/typeorm.ts +9 -0
  1119. data/features/database/mysql/typeorm/typescript/nextjs/package.json +5 -0
  1120. data/features/database/mysql/typeorm/typescript/remixjs/app/routes/api.typeorm.ts +14 -0
  1121. data/features/database/mysql/typeorm/typescript/remixjs/app/utils/typeorm.ts +9 -0
  1122. data/features/database/mysql/typeorm/typescript/remixjs/package.json +5 -0
  1123. data/features/database/postgres/drizzle/typescript/expressjs/controllers/drizzleController.ts +11 -0
  1124. data/features/database/postgres/drizzle/typescript/expressjs/index.ts +3 -0
  1125. data/features/database/postgres/drizzle/typescript/expressjs/package.json +5 -0
  1126. data/features/database/postgres/drizzle/typescript/expressjs/routes/drizzle.ts +8 -0
  1127. data/features/database/postgres/drizzle/typescript/expressjs/utils/drizzle.ts +8 -0
  1128. data/features/database/postgres/drizzle/typescript/nestjs/package.json +5 -0
  1129. data/features/database/postgres/drizzle/typescript/nestjs/src/drizzle/drizzle.controller.ts +12 -0
  1130. data/features/database/postgres/drizzle/typescript/nestjs/src/drizzle/drizzle.module.ts +9 -0
  1131. data/features/database/postgres/drizzle/typescript/nestjs/src/drizzle/drizzle.service.ts +10 -0
  1132. data/features/database/postgres/drizzle/typescript/nestjs/src/drizzle.ts +8 -0
  1133. data/features/database/postgres/drizzle/typescript/nextjs/app/api/users/route.ts +11 -0
  1134. data/features/database/postgres/drizzle/typescript/nextjs/lib/drizzle.ts +8 -0
  1135. data/features/database/postgres/drizzle/typescript/nextjs/package.json +5 -0
  1136. data/features/database/postgres/drizzle/typescript/remixjs/app/routes/api.drizzle.ts +12 -0
  1137. data/features/database/postgres/drizzle/typescript/remixjs/app/utils/drizzle.ts +8 -0
  1138. data/features/database/postgres/drizzle/typescript/remixjs/package.json +5 -0
  1139. data/features/database/postgres/prisma/typescript/expressjs/controllers/prismaController.ts +7 -0
  1140. data/features/database/postgres/prisma/typescript/expressjs/index.ts +3 -0
  1141. data/features/database/postgres/prisma/typescript/expressjs/package.json +6 -0
  1142. data/features/database/postgres/prisma/typescript/expressjs/prisma/schema.prisma +8 -0
  1143. data/features/database/postgres/prisma/typescript/expressjs/routes/prismaRoutes.ts +8 -0
  1144. data/features/database/postgres/prisma/typescript/expressjs/utils/prisma.ts +4 -0
  1145. data/features/database/postgres/prisma/typescript/nestjs/package.json +6 -0
  1146. data/features/database/postgres/prisma/typescript/nestjs/prisma/schema.prisma +8 -0
  1147. data/features/database/postgres/prisma/typescript/nestjs/src/prisma.service.ts +16 -0
  1148. data/features/database/postgres/prisma/typescript/nestjs/src/user/user.controller.ts +12 -0
  1149. data/features/database/postgres/prisma/typescript/nestjs/src/user/user.module.ts +10 -0
  1150. data/features/database/postgres/prisma/typescript/nestjs/src/user/user.service.ts +11 -0
  1151. data/features/database/postgres/prisma/typescript/nextjs/app/api/users/route.ts +7 -0
  1152. data/features/database/postgres/prisma/typescript/nextjs/lib/prisma.ts +8 -0
  1153. data/features/database/postgres/prisma/typescript/nextjs/package.json +6 -0
  1154. data/features/database/postgres/prisma/typescript/nextjs/prisma/schema.prisma +8 -0
  1155. data/features/database/postgres/prisma/typescript/remixjs/app/prisma/schema.prisma +8 -0
  1156. data/features/database/postgres/prisma/typescript/remixjs/app/routes/api.users.ts +8 -0
  1157. data/features/database/postgres/prisma/typescript/remixjs/app/utils/prisma.ts +18 -0
  1158. data/features/database/postgres/prisma/typescript/remixjs/package.json +6 -0
  1159. data/features/database/postgres/typeorm/javascript/expressjs/controllers/typeormController.js +13 -0
  1160. data/features/database/postgres/typeorm/javascript/expressjs/index.js +3 -0
  1161. data/features/database/postgres/typeorm/javascript/expressjs/package.json +5 -0
  1162. data/features/database/postgres/typeorm/javascript/expressjs/routes/typeormRoutes.js +8 -0
  1163. data/features/database/postgres/typeorm/javascript/expressjs/utils/typeorm.js +9 -0
  1164. data/features/database/postgres/typeorm/javascript/nextjs/app/api/typeorm/route.js +13 -0
  1165. data/features/database/postgres/typeorm/javascript/nextjs/lib/typeorm.js +9 -0
  1166. data/features/database/postgres/typeorm/javascript/nextjs/package.json +5 -0
  1167. data/features/database/postgres/typeorm/typescript/expressjs/controllers/typeormController.ts +14 -0
  1168. data/features/database/postgres/typeorm/typescript/expressjs/index.ts +3 -0
  1169. data/features/database/postgres/typeorm/typescript/expressjs/package.json +5 -0
  1170. data/features/database/postgres/typeorm/typescript/expressjs/routes/typeorm.ts +8 -0
  1171. data/features/database/postgres/typeorm/typescript/expressjs/utils/typeorm.ts +9 -0
  1172. data/features/database/postgres/typeorm/typescript/nestjs/package.json +5 -0
  1173. data/features/database/postgres/typeorm/typescript/nestjs/src/typeorm/typeorm.controller.ts +12 -0
  1174. data/features/database/postgres/typeorm/typescript/nestjs/src/typeorm/typeorm.module.ts +9 -0
  1175. data/features/database/postgres/typeorm/typescript/nestjs/src/typeorm/typeorm.service.ts +16 -0
  1176. data/features/database/postgres/typeorm/typescript/nestjs/src/typeorm.ts +9 -0
  1177. data/features/database/postgres/typeorm/typescript/nextjs/app/api/typeorm/route.ts +12 -0
  1178. data/features/database/postgres/typeorm/typescript/nextjs/lib/typeorm.ts +9 -0
  1179. data/features/database/postgres/typeorm/typescript/nextjs/package.json +5 -0
  1180. data/features/database/postgres/typeorm/typescript/remixjs/app/routes/api.typeorm.ts +15 -0
  1181. data/features/database/postgres/typeorm/typescript/remixjs/app/utils/typeorm.ts +9 -0
  1182. data/features/database/postgres/typeorm/typescript/remixjs/package.json +5 -0
  1183. data/features/docker/angularjs/Dockerfile +105 -0
  1184. data/features/docker/angularjs/docker-compose.yml +222 -0
  1185. data/features/docker/expressjs/Dockerfile +55 -0
  1186. data/features/docker/expressjs/docker-compose.yml +114 -0
  1187. data/features/docker/nestjs/Dockerfile +78 -0
  1188. data/features/docker/nestjs/docker-compose.yml +121 -0
  1189. data/features/docker/nextjs/Dockerfile +59 -0
  1190. data/features/docker/nextjs/docker-compose.yml +76 -0
  1191. data/features/docker/reactjs/Dockerfile +60 -0
  1192. data/features/docker/reactjs/docker-compose.yml +78 -0
  1193. data/features/docker/reactjs+expressjs+shadcn/Dockerfile +85 -0
  1194. data/features/docker/reactjs+expressjs+shadcn/docker-compose.yml +75 -0
  1195. data/features/docker/reactjs+nestjs+shadcn/Dockerfile +87 -0
  1196. data/features/docker/reactjs+nestjs+shadcn/docker-compose.yml +76 -0
  1197. data/features/docker/rust/Dockerfile +65 -0
  1198. data/features/docker/rust/docker-compose.yml +120 -0
  1199. data/features/docker/vuejs/Dockerfile +68 -0
  1200. data/features/docker/vuejs/docker-compose.yml +96 -0
  1201. data/features/features.json +7526 -0
  1202. data/features/payment/paypal/expressjs/javascript/controllers/paypalControllers.js +19 -0
  1203. data/features/payment/paypal/expressjs/javascript/index.js +3 -0
  1204. data/features/payment/paypal/expressjs/javascript/routes/paypalRoutes.js +10 -0
  1205. data/features/payment/paypal/expressjs/javascript/utils/paypal.js +42 -0
  1206. data/features/payment/paypal/expressjs/typescript/controllers/paypalControllers.ts +19 -0
  1207. data/features/payment/paypal/expressjs/typescript/index.ts +3 -0
  1208. data/features/payment/paypal/expressjs/typescript/routes/paypalRoutes.ts +10 -0
  1209. data/features/payment/paypal/expressjs/typescript/utils/paypal.ts +42 -0
  1210. data/features/payment/paypal/nestjs/typescript/src/paypal.controller.ts +22 -0
  1211. data/features/payment/paypal/nestjs/typescript/src/paypal.service.ts +48 -0
  1212. data/features/payment/paypal/nextjs/javascript/app/api/paypal/capture-payment/route.js +38 -0
  1213. data/features/payment/paypal/nextjs/javascript/app/api/paypal/create-payment/route.js +43 -0
  1214. data/features/payment/paypal/nextjs/javascript/app/api/paypal/refund/route.ts +38 -0
  1215. data/features/payment/paypal/nextjs/javascript/app/payment-checkout/page.tsx +29 -0
  1216. data/features/payment/paypal/nextjs/typescript/app/api/paypal/capture-payment/route.ts +38 -0
  1217. data/features/payment/paypal/nextjs/typescript/app/api/paypal/create-payment/route.ts +43 -0
  1218. data/features/payment/paypal/nextjs/typescript/app/api/paypal/refund/route.ts +38 -0
  1219. data/features/payment/paypal/nextjs/typescript/app/payment-checkout/page.tsx +29 -0
  1220. data/features/payment/paypal/remixjs/typescript/app/routes/api/paypal.ts +49 -0
  1221. data/features/payment/paypal/remixjs/typescript/app/routes/checkout.tsx +16 -0
  1222. data/features/payment/razorpay/expressjs/javascript/controllers/payment.js +20 -0
  1223. data/features/payment/razorpay/expressjs/javascript/index.js +3 -0
  1224. data/features/payment/razorpay/expressjs/javascript/package.json +5 -0
  1225. data/features/payment/razorpay/expressjs/javascript/routes/payment.js +13 -0
  1226. data/features/payment/razorpay/expressjs/typescript/controllers/payment.ts +20 -0
  1227. data/features/payment/razorpay/expressjs/typescript/index.ts +3 -0
  1228. data/features/payment/razorpay/expressjs/typescript/package.json +5 -0
  1229. data/features/payment/razorpay/expressjs/typescript/routes/payment.ts +17 -0
  1230. data/features/payment/razorpay/nestjs/typescript/package.json +5 -0
  1231. data/features/payment/razorpay/nestjs/typescript/src/payment.controller.ts +24 -0
  1232. data/features/payment/razorpay/nextjs/javascript/app/api/payment/route.js +24 -0
  1233. data/features/payment/razorpay/nextjs/javascript/app/api/refund/route.js +20 -0
  1234. data/features/payment/razorpay/nextjs/javascript/app/payment-checkout/page.jsx +65 -0
  1235. data/features/payment/razorpay/nextjs/javascript/package.json +5 -0
  1236. data/features/payment/razorpay/nextjs/typescript/app/api/payment/route.ts +18 -0
  1237. data/features/payment/razorpay/nextjs/typescript/app/api/refund/route.ts +17 -0
  1238. data/features/payment/razorpay/nextjs/typescript/app/payment-checkout/page.tsx +33 -0
  1239. data/features/payment/razorpay/nextjs/typescript/package.json +5 -0
  1240. data/features/payment/razorpay/remixjs/typescript/app/routes/api.orders.ts +16 -0
  1241. data/features/payment/razorpay/remixjs/typescript/app/routes/api.refunds.ts +13 -0
  1242. data/features/payment/razorpay/remixjs/typescript/app/routes/checkout.tsx +29 -0
  1243. data/features/payment/razorpay/remixjs/typescript/package.json +5 -0
  1244. data/features/payment/stripe/expressjs/javascript/controllers/stripeController.js +32 -0
  1245. data/features/payment/stripe/expressjs/javascript/index.js +3 -0
  1246. data/features/payment/stripe/expressjs/javascript/package.json +6 -0
  1247. data/features/payment/stripe/expressjs/javascript/routes/stripeRoutes.js +9 -0
  1248. data/features/payment/stripe/expressjs/typescript/controllers/stripeControllers.ts +32 -0
  1249. data/features/payment/stripe/expressjs/typescript/index.ts +3 -0
  1250. data/features/payment/stripe/expressjs/typescript/package.json +7 -0
  1251. data/features/payment/stripe/expressjs/typescript/routes/stripeRoutes.ts +9 -0
  1252. data/features/payment/stripe/expressjs/typescript/utils/stripe.ts +5 -0
  1253. data/features/payment/stripe/nestjs/typescript/package.json +7 -0
  1254. data/features/payment/stripe/nestjs/typescript/src/app.module.ts +6 -0
  1255. data/features/payment/stripe/nestjs/typescript/src/stripe/stripe.controller.ts +0 -0
  1256. data/features/payment/stripe/nestjs/typescript/src/stripe/stripe.module.ts +9 -0
  1257. data/features/payment/stripe/nestjs/typescript/src/stripe/stripe.service.ts +27 -0
  1258. data/features/payment/stripe/nextjs/javascript/app/api/stripe/create-payment-intent/route.js +19 -0
  1259. data/features/payment/stripe/nextjs/javascript/app/api/stripe/refund/route.js +17 -0
  1260. data/features/payment/stripe/nextjs/javascript/app/payment-checkout/page.jsx +48 -0
  1261. data/features/payment/stripe/nextjs/javascript/package.json +6 -0
  1262. data/features/payment/stripe/nextjs/typescript/app/api/stripe/create-payment-intent/route.ts +18 -0
  1263. data/features/payment/stripe/nextjs/typescript/app/api/stripe/refund/route.ts +16 -0
  1264. data/features/payment/stripe/nextjs/typescript/app/payment-checkout/page.tsx +45 -0
  1265. data/features/payment/stripe/nextjs/typescript/lib/stripe.ts +5 -0
  1266. data/features/payment/stripe/nextjs/typescript/package.json +7 -0
  1267. data/features/payment/stripe/remixjs/typescript/app/routes/checkout.tsx +19 -0
  1268. data/features/payment/stripe/remixjs/typescript/app/routes/refund.tsx +17 -0
  1269. data/features/payment/stripe/remixjs/typescript/app/utils/stripe.server.ts +5 -0
  1270. data/features/payment/stripe/remixjs/typescript/package.json +7 -0
  1271. data/features/payment/stripe/vuejs/javascript/package.json +5 -0
  1272. data/features/payment/stripe/vuejs/javascript/src/components/VueStripe.vue +12 -0
  1273. data/features/payment/stripe/vuejs/typescript/package.json +5 -0
  1274. data/features/payment/stripe/vuejs/typescript/src/components/VueStripe.vue +12 -0
  1275. data/features/storage/cloudinary/expressjs/javascript/controllers/cloudinaryControllers.js +31 -0
  1276. data/features/storage/cloudinary/expressjs/javascript/index.js +3 -0
  1277. data/features/storage/cloudinary/expressjs/javascript/package.json +5 -0
  1278. data/features/storage/cloudinary/expressjs/javascript/routes/cloudinaryRoutes.js +10 -0
  1279. data/features/storage/cloudinary/expressjs/javascript/utils/cloudinary.js +20 -0
  1280. data/features/storage/cloudinary/expressjs/typescript/controllers/cloudinaryControllers.ts +32 -0
  1281. data/features/storage/cloudinary/expressjs/typescript/index.ts +4 -0
  1282. data/features/storage/cloudinary/expressjs/typescript/package.json +5 -0
  1283. data/features/storage/cloudinary/expressjs/typescript/routes/cloudinaryRoutes.ts +10 -0
  1284. data/features/storage/cloudinary/expressjs/typescript/utils/cloudinary.ts +20 -0
  1285. data/features/storage/cloudinary/nestjs/typescript/package.json +5 -0
  1286. data/features/storage/cloudinary/nestjs/typescript/src/cloudinary/cloudinary.controller.ts +22 -0
  1287. data/features/storage/cloudinary/nestjs/typescript/src/cloudinary/cloudinary.module.ts +9 -0
  1288. data/features/storage/cloudinary/nestjs/typescript/src/cloudinary/cloudinary.service.ts +26 -0
  1289. data/features/storage/cloudinary/nextjs/javascript/app/api/cloudinary/delete/route.js +12 -0
  1290. data/features/storage/cloudinary/nextjs/javascript/app/api/cloudinary/list/route.js +13 -0
  1291. data/features/storage/cloudinary/nextjs/javascript/app/api/cloudinary/upload/route.js +12 -0
  1292. data/features/storage/cloudinary/nextjs/javascript/lib/cloudinary.js +20 -0
  1293. data/features/storage/cloudinary/nextjs/javascript/package.json +5 -0
  1294. data/features/storage/cloudinary/nextjs/typescript/app/api/cloudinary/delete/route.ts +12 -0
  1295. data/features/storage/cloudinary/nextjs/typescript/app/api/cloudinary/list/route.ts +13 -0
  1296. data/features/storage/cloudinary/nextjs/typescript/app/api/cloudinary/upload/route.ts +12 -0
  1297. data/features/storage/cloudinary/nextjs/typescript/lib/cloudinary.ts +23 -0
  1298. data/features/storage/cloudinary/nextjs/typescript/package.json +5 -0
  1299. data/features/storage/cloudinary/remixjs/typescript/app/routes/api/cloudinary.ts +22 -0
  1300. data/features/storage/cloudinary/remixjs/typescript/app/utils/cloudinary.ts +20 -0
  1301. data/features/storage/cloudinary/remixjs/typescript/package.json +5 -0
  1302. data/features/storage/google-cloud/expressjs/javascript/controllers/gcsControllers.js +31 -0
  1303. data/features/storage/google-cloud/expressjs/javascript/index.js +0 -0
  1304. data/features/storage/google-cloud/expressjs/javascript/package.json +5 -0
  1305. data/features/storage/google-cloud/expressjs/javascript/routes/gcsRoutes.js +18 -0
  1306. data/features/storage/google-cloud/expressjs/javascript/utils/gcs.js +30 -0
  1307. data/features/storage/google-cloud/expressjs/typescript/controllers/gcsControllers.ts +32 -0
  1308. data/features/storage/google-cloud/expressjs/typescript/index.ts +3 -0
  1309. data/features/storage/google-cloud/expressjs/typescript/package.json +5 -0
  1310. data/features/storage/google-cloud/expressjs/typescript/routes/gcsRoutes.ts +10 -0
  1311. data/features/storage/google-cloud/expressjs/typescript/utils/gcs.ts +30 -0
  1312. data/features/storage/google-cloud/nestjs/typescript/package.json +5 -0
  1313. data/features/storage/google-cloud/nestjs/typescript/src/gcs/gcs.controller.ts +22 -0
  1314. data/features/storage/google-cloud/nestjs/typescript/src/gcs/gcs.module.ts +9 -0
  1315. data/features/storage/google-cloud/nestjs/typescript/src/gcs/gcs.service.ts +34 -0
  1316. data/features/storage/google-cloud/nextjs/javascript/app/api/gcs/delete/route.js +26 -0
  1317. data/features/storage/google-cloud/nextjs/javascript/app/api/gcs/list/route.js +22 -0
  1318. data/features/storage/google-cloud/nextjs/javascript/app/api/gcs/upload/route.js +30 -0
  1319. data/features/storage/google-cloud/nextjs/javascript/lib/gcs.js +26 -0
  1320. data/features/storage/google-cloud/nextjs/javascript/package.json +5 -0
  1321. data/features/storage/google-cloud/nextjs/typescript/app/api/gcs/delete/route.ts +12 -0
  1322. data/features/storage/google-cloud/nextjs/typescript/app/api/gcs/list/route.ts +13 -0
  1323. data/features/storage/google-cloud/nextjs/typescript/app/api/gcs/upload/route.ts +12 -0
  1324. data/features/storage/google-cloud/nextjs/typescript/lib/gcs.ts +32 -0
  1325. data/features/storage/google-cloud/nextjs/typescript/package.json +5 -0
  1326. data/features/storage/google-cloud/remixjs/typescript/package.json +5 -0
  1327. data/features/storage/google-cloud/remixjs/typescript/routes/api/gcs.ts +23 -0
  1328. data/features/storage/google-cloud/remixjs/typescript/utils/gcs.ts +30 -0
  1329. data/features/storage/imagekit.io/expressjs/javascript/controllers/imagekitControllers.js +30 -0
  1330. data/features/storage/imagekit.io/expressjs/javascript/index.js +3 -0
  1331. data/features/storage/imagekit.io/expressjs/javascript/package.json +5 -0
  1332. data/features/storage/imagekit.io/expressjs/javascript/routes/imagekitRoutes.js +10 -0
  1333. data/features/storage/imagekit.io/expressjs/javascript/utils/imagekit.js +19 -0
  1334. data/features/storage/imagekit.io/expressjs/typescript/controllers/imagekitControllers.ts +31 -0
  1335. data/features/storage/imagekit.io/expressjs/typescript/index.ts +3 -0
  1336. data/features/storage/imagekit.io/expressjs/typescript/package.json +5 -0
  1337. data/features/storage/imagekit.io/expressjs/typescript/routes/imagekitRoutes.ts +10 -0
  1338. data/features/storage/imagekit.io/expressjs/typescript/utils/imagekit.ts +19 -0
  1339. data/features/storage/imagekit.io/nestjs/typescript/package.json +5 -0
  1340. data/features/storage/imagekit.io/nestjs/typescript/src/imagekit/imagekit.controller.ts +22 -0
  1341. data/features/storage/imagekit.io/nestjs/typescript/src/imagekit/imagekit.module.ts +9 -0
  1342. data/features/storage/imagekit.io/nestjs/typescript/src/imagekit/imagekit.service.ts +23 -0
  1343. data/features/storage/imagekit.io/nextjs/javascript/app/api/imagekit/delete/route.js +12 -0
  1344. data/features/storage/imagekit.io/nextjs/javascript/app/api/imagekit/list/route.js +13 -0
  1345. data/features/storage/imagekit.io/nextjs/javascript/app/api/imagekit/upload/route.js +12 -0
  1346. data/features/storage/imagekit.io/nextjs/javascript/lib/imagekit.js +19 -0
  1347. data/features/storage/imagekit.io/nextjs/javascript/package.json +5 -0
  1348. data/features/storage/imagekit.io/nextjs/typescript/app/api/imagekit/delete/route.ts +12 -0
  1349. data/features/storage/imagekit.io/nextjs/typescript/app/api/imagekit/list/route.ts +13 -0
  1350. data/features/storage/imagekit.io/nextjs/typescript/app/api/imagekit/upload/route.ts +12 -0
  1351. data/features/storage/imagekit.io/nextjs/typescript/lib/imagekit.ts +23 -0
  1352. data/features/storage/imagekit.io/nextjs/typescript/package.json +5 -0
  1353. data/features/storage/imagekit.io/remixjs/typescript/app/routes/api/imagekit.ts +23 -0
  1354. data/features/storage/imagekit.io/remixjs/typescript/app/utils/imagekit.ts +19 -0
  1355. data/features/storage/imagekit.io/remixjs/typescript/package.json +5 -0
  1356. data/features/testing/jest/angularjs/tests/angularjs.test.js +12 -0
  1357. data/features/testing/jest/expressjs/tests/javascript/expressjs.test.js +12 -0
  1358. data/features/testing/jest/expressjs/tests/typescript/expressjs.test.ts +12 -0
  1359. data/features/testing/jest/go/tests/go.test.js +12 -0
  1360. data/features/testing/jest/nextjs/tests/javascript/nextjs.test.js +12 -0
  1361. data/features/testing/jest/nextjs/tests/typescript/nextjs.test.ts +12 -0
  1362. data/features/ui/daisy/angularjs/typescript/package.json +8 -0
  1363. data/features/ui/daisy/angularjs/typescript/src/styles.css +2 -0
  1364. data/features/ui/daisy/nextjs/javascript/app/globals.css +2 -0
  1365. data/features/ui/daisy/nextjs/javascript/package.json +7 -0
  1366. data/features/ui/daisy/nextjs/javascript/postcss.config.mjs +7 -0
  1367. data/features/ui/daisy/nextjs/typescript/app/globals.css +2 -0
  1368. data/features/ui/daisy/nextjs/typescript/package.json +7 -0
  1369. data/features/ui/daisy/nextjs/typescript/postcss.config.mjs +7 -0
  1370. data/features/ui/daisy/reactjs/javascript/package.json +7 -0
  1371. data/features/ui/daisy/reactjs/javascript/src/index.css +2 -0
  1372. data/features/ui/daisy/reactjs/javascript/vite.config.js +13 -0
  1373. data/features/ui/daisy/reactjs/typescript/package.json +7 -0
  1374. data/features/ui/daisy/reactjs/typescript/src/index.css +2 -0
  1375. data/features/ui/daisy/reactjs/typescript/vite.config.ts +7 -0
  1376. data/features/ui/daisy/vuejs/javascript/package.json +7 -0
  1377. data/features/ui/daisy/vuejs/javascript/src/assets/main.css +2 -0
  1378. data/features/ui/daisy/vuejs/javascript/vite.config.ts +22 -0
  1379. data/features/ui/daisy/vuejs/typescript/package.json +7 -0
  1380. data/features/ui/daisy/vuejs/typescript/src/assets/main.css +2 -0
  1381. data/features/ui/daisy/vuejs/typescript/vite.config.ts +22 -0
  1382. data/lib/package_installer_cli.rb +82 -0
  1383. data/package.json +94 -0
  1384. data/template.json +158 -0
  1385. data/templates/angularjs/typescript/material-ui-no-tailwind-template/README.md +59 -0
  1386. data/templates/angularjs/typescript/material-ui-no-tailwind-template/angular.json +90 -0
  1387. data/templates/angularjs/typescript/material-ui-no-tailwind-template/package-lock.json +9632 -0
  1388. data/templates/angularjs/typescript/material-ui-no-tailwind-template/package.json +51 -0
  1389. data/templates/angularjs/typescript/material-ui-no-tailwind-template/public/favicon.ico +0 -0
  1390. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.component.html +23 -0
  1391. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.config.server.ts +12 -0
  1392. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.config.ts +13 -0
  1393. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.css +0 -0
  1394. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.html +342 -0
  1395. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.module.ts +22 -0
  1396. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.routes.server.ts +8 -0
  1397. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.routes.ts +3 -0
  1398. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.spec.ts +25 -0
  1399. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/app/app.ts +12 -0
  1400. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/index.html +13 -0
  1401. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/main.server.ts +7 -0
  1402. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/main.ts +6 -0
  1403. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/server.ts +68 -0
  1404. data/templates/angularjs/typescript/material-ui-no-tailwind-template/src/styles.css +1 -0
  1405. data/templates/angularjs/typescript/material-ui-no-tailwind-template/tsconfig.app.json +17 -0
  1406. data/templates/angularjs/typescript/material-ui-no-tailwind-template/tsconfig.json +34 -0
  1407. data/templates/angularjs/typescript/material-ui-no-tailwind-template/tsconfig.spec.json +14 -0
  1408. data/templates/angularjs/typescript/material-ui-tailwind-template/README.md +59 -0
  1409. data/templates/angularjs/typescript/material-ui-tailwind-template/angular.json +94 -0
  1410. data/templates/angularjs/typescript/material-ui-tailwind-template/package-lock.json +9769 -0
  1411. data/templates/angularjs/typescript/material-ui-tailwind-template/package.json +56 -0
  1412. data/templates/angularjs/typescript/material-ui-tailwind-template/public/favicon.ico +0 -0
  1413. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.component.html +23 -0
  1414. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.config.server.ts +12 -0
  1415. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.config.ts +13 -0
  1416. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.css +0 -0
  1417. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.html +342 -0
  1418. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.module.ts +22 -0
  1419. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.routes.server.ts +8 -0
  1420. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.routes.ts +3 -0
  1421. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.spec.ts +25 -0
  1422. data/templates/angularjs/typescript/material-ui-tailwind-template/src/app/app.ts +12 -0
  1423. data/templates/angularjs/typescript/material-ui-tailwind-template/src/custom-theme.scss +30 -0
  1424. data/templates/angularjs/typescript/material-ui-tailwind-template/src/index.html +15 -0
  1425. data/templates/angularjs/typescript/material-ui-tailwind-template/src/main.server.ts +7 -0
  1426. data/templates/angularjs/typescript/material-ui-tailwind-template/src/main.ts +6 -0
  1427. data/templates/angularjs/typescript/material-ui-tailwind-template/src/server.ts +68 -0
  1428. data/templates/angularjs/typescript/material-ui-tailwind-template/src/styles.css +7 -0
  1429. data/templates/angularjs/typescript/material-ui-tailwind-template/tailwind-config.js +11 -0
  1430. data/templates/angularjs/typescript/material-ui-tailwind-template/tsconfig.app.json +17 -0
  1431. data/templates/angularjs/typescript/material-ui-tailwind-template/tsconfig.json +34 -0
  1432. data/templates/angularjs/typescript/material-ui-tailwind-template/tsconfig.spec.json +14 -0
  1433. data/templates/angularjs/typescript/no-material-no-tailwind-template/README.md +59 -0
  1434. data/templates/angularjs/typescript/no-material-no-tailwind-template/angular.json +90 -0
  1435. data/templates/angularjs/typescript/no-material-no-tailwind-template/package.json +51 -0
  1436. data/templates/angularjs/typescript/no-material-no-tailwind-template/public/favicon.ico +0 -0
  1437. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.config.server.ts +12 -0
  1438. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.config.ts +13 -0
  1439. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.css +0 -0
  1440. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.html +342 -0
  1441. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.routes.server.ts +8 -0
  1442. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.routes.ts +3 -0
  1443. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.spec.ts +25 -0
  1444. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/app/app.ts +12 -0
  1445. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/index.html +13 -0
  1446. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/main.server.ts +7 -0
  1447. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/main.ts +6 -0
  1448. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/server.ts +68 -0
  1449. data/templates/angularjs/typescript/no-material-no-tailwind-template/src/styles.css +1 -0
  1450. data/templates/angularjs/typescript/no-material-no-tailwind-template/tsconfig.app.json +17 -0
  1451. data/templates/angularjs/typescript/no-material-no-tailwind-template/tsconfig.json +34 -0
  1452. data/templates/angularjs/typescript/no-material-no-tailwind-template/tsconfig.spec.json +14 -0
  1453. data/templates/django/django-bower-and-gulp-config-template/django-project-template/README.md +55 -0
  1454. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/__init__.py +0 -0
  1455. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/__init__.py +0 -0
  1456. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/admin.py +2 -0
  1457. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/migrations/__init__.py +0 -0
  1458. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/models.py +2 -0
  1459. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/tests.py +3 -0
  1460. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/apps/default/views.py +4 -0
  1461. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/bower.json +20 -0
  1462. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/gulp.config.js +136 -0
  1463. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/gulpfile.js +187 -0
  1464. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/manage.py +10 -0
  1465. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/package.json +31 -0
  1466. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/project_name/__init__.py +0 -0
  1467. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/project_name/settings.py +120 -0
  1468. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/project_name/urls.py +28 -0
  1469. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/project_name/wsgi.py +16 -0
  1470. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/static/img/favicon.ico +0 -0
  1471. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/static/js/app.js +1 -0
  1472. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/static/less/colors.less +1 -0
  1473. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/static/less/fonts.less +1 -0
  1474. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/static/less/site.less +6 -0
  1475. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/templates/base.html +38 -0
  1476. data/templates/django/django-bower-and-gulp-config-template/django-project-template/project_name/templates/index.html +6 -0
  1477. data/templates/django/django-bower-and-gulp-config-template/django-project-template/requirements.txt +0 -0
  1478. data/templates/django/django-full-stack-template/django-project-template/Dockerfile +78 -0
  1479. data/templates/django/django-full-stack-template/django-project-template/Dockerfile.min +37 -0
  1480. data/templates/django/django-full-stack-template/django-project-template/README.rst +205 -0
  1481. data/templates/django/django-full-stack-template/django-project-template/codecov.yml +3 -0
  1482. data/templates/django/django-full-stack-template/django-project-template/deployment/docker/build.sh +4 -0
  1483. data/templates/django/django-full-stack-template/django-project-template/deployment/docker/manage.py +10 -0
  1484. data/templates/django/django-full-stack-template/django-project-template/deployment/docker/uwsgi-local.ini +10 -0
  1485. data/templates/django/django-full-stack-template/django-project-template/deployment/docker/uwsgi.ini +72 -0
  1486. data/templates/django/django-full-stack-template/django-project-template/src/Makefile +48 -0
  1487. data/templates/django/django-full-stack-template/django-project-template/src/compile-locale.sh +5 -0
  1488. data/templates/django/django-full-stack-template/django-project-template/src/compile-sass.sh +8 -0
  1489. data/templates/django/django-full-stack-template/django-project-template/src/example_data.json +28 -0
  1490. data/templates/django/django-full-stack-template/django-project-template/src/frontend/__init__.py +0 -0
  1491. data/templates/django/django-full-stack-template/django-project-template/src/frontend/context_processors.py +15 -0
  1492. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/config.js +135 -0
  1493. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/tasks/clean.js +16 -0
  1494. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/tasks/imagemin.js +20 -0
  1495. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/tasks/sass.js +54 -0
  1496. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/tasks/vendor.js +62 -0
  1497. data/templates/django/django-full-stack-template/django-project-template/src/frontend/gulp/tasks/watch.js +18 -0
  1498. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/msie.scss +1 -0
  1499. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/core/_layout.scss +17 -0
  1500. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/core/_mixins.scss +40 -0
  1501. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/core/_reset.scss +13 -0
  1502. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/core/_typography.scss +13 -0
  1503. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/core/_variables.scss +26 -0
  1504. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/modules/_forms.scss +0 -0
  1505. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/partials/modules/_header.scss +5 -0
  1506. data/templates/django/django-full-stack-template/django-project-template/src/frontend/sass/screen.scss +52 -0
  1507. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/css/msie.css +3 -0
  1508. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/css/screen.css +6295 -0
  1509. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/images/social-logo.png +0 -0
  1510. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/vendor/bootstrap.min.js +2 -0
  1511. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/vendor/jquery.min.js +2 -0
  1512. data/templates/django/django-full-stack-template/django-project-template/src/frontend/static/frontend/vendor/popper.min.js +5 -0
  1513. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templates/403.html +15 -0
  1514. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templates/404.html +15 -0
  1515. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templates/500.html +58 -0
  1516. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templates/base.html +81 -0
  1517. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templates/robots.txt +1 -0
  1518. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templatetags/__init__.py +0 -0
  1519. data/templates/django/django-full-stack-template/django-project-template/src/frontend/templatetags/frontend_tags.py +3 -0
  1520. data/templates/django/django-full-stack-template/django-project-template/src/frontend/views.py +39 -0
  1521. data/templates/django/django-full-stack-template/django-project-template/src/gulpfile.js +22 -0
  1522. data/templates/django/django-full-stack-template/django-project-template/src/locale/nl/LC_MESSAGES/django.po +53 -0
  1523. data/templates/django/django-full-stack-template/django-project-template/src/manage.py +10 -0
  1524. data/templates/django/django-full-stack-template/django-project-template/src/package.json +43 -0
  1525. data/templates/django/django-full-stack-template/django-project-template/src/project_name/__init__.py +0 -0
  1526. data/templates/django/django-full-stack-template/django-project-template/src/project_name/apps/__init__.py +0 -0
  1527. data/templates/django/django-full-stack-template/django-project-template/src/project_name/lib/__init__.py +1 -0
  1528. data/templates/django/django-full-stack-template/django-project-template/src/project_name/lib/healthchecks.py +5 -0
  1529. data/templates/django/django-full-stack-template/django-project-template/src/project_name/lib/http.py +23 -0
  1530. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/__init__.py +13 -0
  1531. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/defaults.py +315 -0
  1532. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/docker.py +35 -0
  1533. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/local.py.example +72 -0
  1534. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/locale/__init__.py +0 -0
  1535. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/locale/nl/__init__.py +0 -0
  1536. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/locale/nl/formats.py +13 -0
  1537. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/production.py +21 -0
  1538. data/templates/django/django-full-stack-template/django-project-template/src/project_name/settings/unittest.py +33 -0
  1539. data/templates/django/django-full-stack-template/django-project-template/src/project_name/urls.py +61 -0
  1540. data/templates/django/django-full-stack-template/django-project-template/src/project_name/wsgi/__init__.py +0 -0
  1541. data/templates/django/django-full-stack-template/django-project-template/src/project_name/wsgi/development.py +18 -0
  1542. data/templates/django/django-full-stack-template/django-project-template/src/project_name/wsgi/docker.py +8 -0
  1543. data/templates/django/django-full-stack-template/django-project-template/src/pytest.ini +5 -0
  1544. data/templates/django/django-full-stack-template/django-project-template/src/requirements/base.in +36 -0
  1545. data/templates/django/django-full-stack-template/django-project-template/src/requirements/base.txt +43 -0
  1546. data/templates/django/django-full-stack-template/django-project-template/src/requirements/dev.txt +27 -0
  1547. data/templates/django/django-full-stack-template/django-project-template/src/requirements/docker.txt +1 -0
  1548. data/templates/django/django-full-stack-template/django-project-template/src/requirements/unittest.txt +11 -0
  1549. data/templates/django/django-full-stack-template/django-project-template/src/tests/test_frontend.py +33 -0
  1550. data/templates/django/django-full-stack-template/django-project-template/src/tests/test_jpeg.py +23 -0
  1551. data/templates/django/django-full-stack-template/django-project-template/src/tests/test_wsgi.py +3 -0
  1552. data/templates/django/django-full-stack-template/django-project-template/web/503.html +46 -0
  1553. data/templates/django/django-full-stack-template/django-project-template/web/504.html +46 -0
  1554. data/templates/django/django-full-stack-template/django-project-template/web/browserconfig.xml +5 -0
  1555. data/templates/django/django-full-stack-template/django-project-template/web/manifest.json +7 -0
  1556. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/README.it.md +86 -0
  1557. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/README.md +86 -0
  1558. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/__init__.py +0 -0
  1559. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/admin.py +3 -0
  1560. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/apps.py +6 -0
  1561. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/migrations/__init__.py +0 -0
  1562. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/models.py +3 -0
  1563. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/tests.py +3 -0
  1564. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/urls.py +9 -0
  1565. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/another_app/views.py +11 -0
  1566. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/__init__.py +0 -0
  1567. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/asgi.py +8 -0
  1568. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/middleware.py +18 -0
  1569. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/settings.py +185 -0
  1570. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/urls.py +13 -0
  1571. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/django_inertia_svelte/wsgi.py +8 -0
  1572. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/manage.py +23 -0
  1573. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/package-lock.json +1551 -0
  1574. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/package.json +20 -0
  1575. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/requirements.txt +7 -0
  1576. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/__init__.py +0 -0
  1577. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/admin.py +3 -0
  1578. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/apps.py +6 -0
  1579. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/migrations/__init__.py +0 -0
  1580. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/models.py +3 -0
  1581. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/tests.py +3 -0
  1582. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/urls.py +10 -0
  1583. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/sample_app/views.py +31 -0
  1584. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/assets/css/admin.css +75 -0
  1585. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/assets/img/potato.png +0 -0
  1586. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/src/js/main.js +18 -0
  1587. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/src/pages/another_app/contacts.svelte +12 -0
  1588. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/src/pages/layout.svelte +32 -0
  1589. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/src/pages/sample_app/about.svelte +12 -0
  1590. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/static/src/pages/sample_app/index.svelte +12 -0
  1591. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/templates/base.html +19 -0
  1592. data/templates/django/django-inertia-svelte-template/django-inertia-svelte-template-starter/vite.config.js +39 -0
  1593. data/templates/django/djangoTemplate/djangoTemplate/__init__.py +0 -0
  1594. data/templates/django/djangoTemplate/djangoTemplate/asgi.py +16 -0
  1595. data/templates/django/djangoTemplate/djangoTemplate/settings.py +122 -0
  1596. data/templates/django/djangoTemplate/djangoTemplate/urls.py +22 -0
  1597. data/templates/django/djangoTemplate/djangoTemplate/wsgi.py +16 -0
  1598. data/templates/django/djangoTemplate/manage.py +22 -0
  1599. data/templates/expressjs/javascript/advance-expressjs-template/README.md +308 -0
  1600. data/templates/expressjs/javascript/advance-expressjs-template/__tests__/setup.js +29 -0
  1601. data/templates/expressjs/javascript/advance-expressjs-template/__tests__/user.test.js +242 -0
  1602. data/templates/expressjs/javascript/advance-expressjs-template/controllers/user.controller.js +167 -0
  1603. data/templates/expressjs/javascript/advance-expressjs-template/db/database.js +37 -0
  1604. data/templates/expressjs/javascript/advance-expressjs-template/index.js +59 -0
  1605. data/templates/expressjs/javascript/advance-expressjs-template/jest.config.js +19 -0
  1606. data/templates/expressjs/javascript/advance-expressjs-template/middleware/errorHandler.js +81 -0
  1607. data/templates/expressjs/javascript/advance-expressjs-template/middleware/security.js +96 -0
  1608. data/templates/expressjs/javascript/advance-expressjs-template/middleware/validation.js +54 -0
  1609. data/templates/expressjs/javascript/advance-expressjs-template/models/user.model.js +64 -0
  1610. data/templates/expressjs/javascript/advance-expressjs-template/package.json +36 -0
  1611. data/templates/expressjs/javascript/advance-expressjs-template/routes/index.js +31 -0
  1612. data/templates/expressjs/javascript/advance-expressjs-template/routes/user.routes.js +44 -0
  1613. data/templates/expressjs/javascript/advance-expressjs-template/utils/logger.js +68 -0
  1614. data/templates/expressjs/javascript/basic-expressjs-template/controllers/user.controller.js +13 -0
  1615. data/templates/expressjs/javascript/basic-expressjs-template/index.js +28 -0
  1616. data/templates/expressjs/javascript/basic-expressjs-template/models/user.model.js +9 -0
  1617. data/templates/expressjs/javascript/basic-expressjs-template/package.json +14 -0
  1618. data/templates/expressjs/javascript/basic-expressjs-template/routes/user.routes.js +9 -0
  1619. data/templates/expressjs/typescript/advance-expressjs-template/README.md +294 -0
  1620. data/templates/expressjs/typescript/advance-expressjs-template/__tests__/setup.ts +29 -0
  1621. data/templates/expressjs/typescript/advance-expressjs-template/__tests__/user.test.ts +242 -0
  1622. data/templates/expressjs/typescript/advance-expressjs-template/db/database.ts +38 -0
  1623. data/templates/expressjs/typescript/advance-expressjs-template/index.ts +59 -0
  1624. data/templates/expressjs/typescript/advance-expressjs-template/jest.config.js +25 -0
  1625. data/templates/expressjs/typescript/advance-expressjs-template/middleware/errorHandler.ts +92 -0
  1626. data/templates/expressjs/typescript/advance-expressjs-template/middleware/security.ts +96 -0
  1627. data/templates/expressjs/typescript/advance-expressjs-template/middleware/validation.ts +55 -0
  1628. data/templates/expressjs/typescript/advance-expressjs-template/models/user.model.ts +65 -0
  1629. data/templates/expressjs/typescript/advance-expressjs-template/package.json +49 -0
  1630. data/templates/expressjs/typescript/advance-expressjs-template/routes/index.ts +31 -0
  1631. data/templates/expressjs/typescript/advance-expressjs-template/routes/user.routes.ts +44 -0
  1632. data/templates/expressjs/typescript/advance-expressjs-template/types/index.ts +53 -0
  1633. data/templates/expressjs/typescript/advance-expressjs-template/utils/logger.ts +79 -0
  1634. data/templates/expressjs/typescript/basic-expressjs-template/controllers/user.controller.ts +14 -0
  1635. data/templates/expressjs/typescript/basic-expressjs-template/index.ts +28 -0
  1636. data/templates/expressjs/typescript/basic-expressjs-template/models/user.model.ts +14 -0
  1637. data/templates/expressjs/typescript/basic-expressjs-template/package.json +18 -0
  1638. data/templates/expressjs/typescript/basic-expressjs-template/routes/user.routes.ts +9 -0
  1639. data/templates/flask/flask-cookiecutter-advance-template/Dockerfile +7 -0
  1640. data/templates/flask/flask-cookiecutter-advance-template/LICENSE +19 -0
  1641. data/templates/flask/flask-cookiecutter-advance-template/README.md +235 -0
  1642. data/templates/flask/flask-cookiecutter-advance-template/SECURITY.md +1 -0
  1643. data/templates/flask/flask-cookiecutter-advance-template/cookiecutter-docker.sh +55 -0
  1644. data/templates/flask/flask-cookiecutter-advance-template/cookiecutter.json +12 -0
  1645. data/templates/flask/flask-cookiecutter-advance-template/cookiecutter_spec.py +100 -0
  1646. data/templates/flask/flask-cookiecutter-advance-template/hooks/__init__.py +0 -0
  1647. data/templates/flask/flask-cookiecutter-advance-template/hooks/post_gen_project.py +40 -0
  1648. data/templates/flask/flask-cookiecutter-advance-template/hooks/pre_gen_project.py +59 -0
  1649. data/templates/flask/flask-cookiecutter-advance-template/requirements.txt +4 -0
  1650. data/templates/flask/flask-cookiecutter-advance-template/tasks.py +102 -0
  1651. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/Dockerfile +75 -0
  1652. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/LICENSE +19 -0
  1653. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/Pipfile +66 -0
  1654. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/Procfile +2 -0
  1655. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/README.md +235 -0
  1656. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/app.json +29 -0
  1657. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/assets/css/style.css +86 -0
  1658. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/assets/img/favicon.ico +0 -0
  1659. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/assets/js/main.js +20 -0
  1660. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/assets/js/plugins.js +1 -0
  1661. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/assets/js/script.js +1 -0
  1662. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/autoapp.py +5 -0
  1663. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/docker-compose.yml +56 -0
  1664. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/eslint.config.js +6 -0
  1665. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/package.json +57 -0
  1666. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/pyproject.toml +3 -0
  1667. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/requirements/dev.txt +18 -0
  1668. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/requirements/prod.txt +40 -0
  1669. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/requirements.txt +3 -0
  1670. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/setup.cfg +5 -0
  1671. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/shell_scripts/auto_pipenv.sh +7 -0
  1672. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/shell_scripts/supervisord_entrypoint.sh +13 -0
  1673. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/supervisord.conf +21 -0
  1674. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/supervisord_programs/gunicorn.conf +16 -0
  1675. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/__init__.py +1 -0
  1676. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/conftest.py +53 -0
  1677. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/factories.py +30 -0
  1678. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/settings.py +13 -0
  1679. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/test_database.py +69 -0
  1680. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/test_forms.py +74 -0
  1681. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/test_functional.py +120 -0
  1682. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/tests/test_models.py +76 -0
  1683. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/webpack.config.js +83 -0
  1684. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/__init__.py +1 -0
  1685. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/app.py +91 -0
  1686. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/commands.py +83 -0
  1687. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/compat.py +18 -0
  1688. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/database.py +89 -0
  1689. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/extensions.py +19 -0
  1690. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/public/__init__.py +3 -0
  1691. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/public/forms.py +39 -0
  1692. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/public/views.py +77 -0
  1693. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/settings.py +25 -0
  1694. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/401.html +16 -0
  1695. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/404.html +15 -0
  1696. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/500.html +14 -0
  1697. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/footer.html +14 -0
  1698. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/layout.html +71 -0
  1699. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/nav.html +52 -0
  1700. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/about.html +12 -0
  1701. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/home.html +35 -0
  1702. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/public/register.html +31 -0
  1703. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/templates/users/members.html +9 -0
  1704. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/user/__init__.py +3 -0
  1705. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/user/forms.py +45 -0
  1706. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/user/models.py +65 -0
  1707. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/user/views.py +13 -0
  1708. data/templates/flask/flask-cookiecutter-advance-template/{{cookiecutter.app_name}}/{{cookiecutter.app_name}}/utils.py +10 -0
  1709. data/templates/flask/flask-project-template/ABOUT_THIS_TEMPLATE.md +198 -0
  1710. data/templates/flask/flask-project-template/CONTRIBUTING.md +113 -0
  1711. data/templates/flask/flask-project-template/Containerfile +9 -0
  1712. data/templates/flask/flask-project-template/HISTORY.md +0 -0
  1713. data/templates/flask/flask-project-template/LICENSE +24 -0
  1714. data/templates/flask/flask-project-template/MANIFEST.in +5 -0
  1715. data/templates/flask/flask-project-template/Makefile +119 -0
  1716. data/templates/flask/flask-project-template/README.md +114 -0
  1717. data/templates/flask/flask-project-template/apply.sh +77 -0
  1718. data/templates/flask/flask-project-template/docs/index.md +17 -0
  1719. data/templates/flask/flask-project-template/mkdocs.yml +2 -0
  1720. data/templates/flask/flask-project-template/project_name/VERSION +1 -0
  1721. data/templates/flask/flask-project-template/project_name/__init__.py +3 -0
  1722. data/templates/flask/flask-project-template/project_name/__main__.py +13 -0
  1723. data/templates/flask/flask-project-template/project_name/base.py +21 -0
  1724. data/templates/flask/flask-project-template/project_name/ext/__init__.py +0 -0
  1725. data/templates/flask/flask-project-template/project_name/ext/admin.py +33 -0
  1726. data/templates/flask/flask-project-template/project_name/ext/auth.py +33 -0
  1727. data/templates/flask/flask-project-template/project_name/ext/commands.py +43 -0
  1728. data/templates/flask/flask-project-template/project_name/ext/database.py +7 -0
  1729. data/templates/flask/flask-project-template/project_name/ext/restapi/__init__.py +13 -0
  1730. data/templates/flask/flask-project-template/project_name/ext/restapi/resources.py +35 -0
  1731. data/templates/flask/flask-project-template/project_name/ext/webui/__init__.py +16 -0
  1732. data/templates/flask/flask-project-template/project_name/ext/webui/templates/index.html +29 -0
  1733. data/templates/flask/flask-project-template/project_name/ext/webui/templates/product.html +13 -0
  1734. data/templates/flask/flask-project-template/project_name/ext/webui/views.py +26 -0
  1735. data/templates/flask/flask-project-template/project_name/models.py +16 -0
  1736. data/templates/flask/flask-project-template/requirements-base.txt +10 -0
  1737. data/templates/flask/flask-project-template/requirements-test.txt +5 -0
  1738. data/templates/flask/flask-project-template/requirements.txt +9 -0
  1739. data/templates/flask/flask-project-template/settings.toml +47 -0
  1740. data/templates/flask/flask-project-template/setup.py +49 -0
  1741. data/templates/flask/flask-project-template/tests/__init__.py +0 -0
  1742. data/templates/flask/flask-project-template/tests/conftest.py +33 -0
  1743. data/templates/flask/flask-project-template/tests/test_api.py +28 -0
  1744. data/templates/flask/flask-project-template/wsgi.py +3 -0
  1745. data/templates/flask/flask-template-bootstrap/LICENSE +21 -0
  1746. data/templates/flask/flask-template-bootstrap/README.md +20 -0
  1747. data/templates/flask/flask-template-bootstrap/app.py +46 -0
  1748. data/templates/flask/flask-template-bootstrap/flask_screenshot.png +0 -0
  1749. data/templates/flask/flask-template-bootstrap/requirements.txt +3 -0
  1750. data/templates/flask/flask-template-bootstrap/templates/about.html +10 -0
  1751. data/templates/flask/flask-template-bootstrap/templates/contact.html +7 -0
  1752. data/templates/flask/flask-template-bootstrap/templates/includes/_navbar.html +28 -0
  1753. data/templates/flask/flask-template-bootstrap/templates/index.html +13 -0
  1754. data/templates/flask/flask-template-bootstrap/templates/layout.html +40 -0
  1755. data/templates/flask/flask-template-bootstrap/templates/service.html +9 -0
  1756. data/templates/flask/flask-template-with-useful-plugins/LICENSE.MD +675 -0
  1757. data/templates/flask/flask-template-with-useful-plugins/Pipfile +25 -0
  1758. data/templates/flask/flask-template-with-useful-plugins/Pipfile.lock +412 -0
  1759. data/templates/flask/flask-template-with-useful-plugins/README.md +44 -0
  1760. data/templates/flask/flask-template-with-useful-plugins/app/__init__.py +27 -0
  1761. data/templates/flask/flask-template-with-useful-plugins/app/configuration.py +26 -0
  1762. data/templates/flask/flask-template-with-useful-plugins/app/forms.py +13 -0
  1763. data/templates/flask/flask-template-with-useful-plugins/app/models.py +31 -0
  1764. data/templates/flask/flask-template-with-useful-plugins/app/templates/base.html +83 -0
  1765. data/templates/flask/flask-template-with-useful-plugins/app/templates/index.html +20 -0
  1766. data/templates/flask/flask-template-with-useful-plugins/app/templates/list.html +61 -0
  1767. data/templates/flask/flask-template-with-useful-plugins/app/templates/login.html +27 -0
  1768. data/templates/flask/flask-template-with-useful-plugins/app/templates/new.html +29 -0
  1769. data/templates/flask/flask-template-with-useful-plugins/app/views.py +68 -0
  1770. data/templates/flask/flask-template-with-useful-plugins/run.py +11 -0
  1771. data/templates/go/golang-boilerplate/Dockerfile +25 -0
  1772. data/templates/go/golang-boilerplate/api/auth.go +176 -0
  1773. data/templates/go/golang-boilerplate/api/auth_test.go +71 -0
  1774. data/templates/go/golang-boilerplate/api/context.go +120 -0
  1775. data/templates/go/golang-boilerplate/api/cronjob.go +24 -0
  1776. data/templates/go/golang-boilerplate/api/db_helper.go +86 -0
  1777. data/templates/go/golang-boilerplate/api/handler.go +514 -0
  1778. data/templates/go/golang-boilerplate/api/handler_test.go +188 -0
  1779. data/templates/go/golang-boilerplate/api/user.go +80 -0
  1780. data/templates/go/golang-boilerplate/api/user_test.go +43 -0
  1781. data/templates/go/golang-boilerplate/api/webhook.go +33 -0
  1782. data/templates/go/golang-boilerplate/config/config.go +137 -0
  1783. data/templates/go/golang-boilerplate/config/config_test.go +1 -0
  1784. data/templates/go/golang-boilerplate/core/db.go +161 -0
  1785. data/templates/go/golang-boilerplate/core/error.go +144 -0
  1786. data/templates/go/golang-boilerplate/core/json.go +278 -0
  1787. data/templates/go/golang-boilerplate/core/test.go +237 -0
  1788. data/templates/go/golang-boilerplate/core/timestamp.go +111 -0
  1789. data/templates/go/golang-boilerplate/core/type.go +7 -0
  1790. data/templates/go/golang-boilerplate/db/dbconf.yml +17 -0
  1791. data/templates/go/golang-boilerplate/db/migrations/20190611174624_base.sql +42 -0
  1792. data/templates/go/golang-boilerplate/db/seed.sql +1 -0
  1793. data/templates/go/golang-boilerplate/go.mod +34 -0
  1794. data/templates/go/golang-boilerplate/go.sum +328 -0
  1795. data/templates/go/golang-boilerplate/log/hook.go +137 -0
  1796. data/templates/go/golang-boilerplate/log/log.go +66 -0
  1797. data/templates/go/golang-boilerplate/log/logger.go +40 -0
  1798. data/templates/go/golang-boilerplate/log/logstash.go +64 -0
  1799. data/templates/go/golang-boilerplate/main.go +31 -0
  1800. data/templates/go/golang-boilerplate/makefile +17 -0
  1801. data/templates/go/golang-boilerplate/middleware/configuration.go +19 -0
  1802. data/templates/go/golang-boilerplate/middleware/db.go +21 -0
  1803. data/templates/go/golang-boilerplate/middleware/elastic.go +21 -0
  1804. data/templates/go/golang-boilerplate/middleware/header.go +30 -0
  1805. data/templates/go/golang-boilerplate/middleware/initialize.go +28 -0
  1806. data/templates/go/golang-boilerplate/middleware/session.go +64 -0
  1807. data/templates/go/golang-boilerplate/middleware/type.go +50 -0
  1808. data/templates/go/golang-boilerplate/model/configuration.go +59 -0
  1809. data/templates/go/golang-boilerplate/model/context.go +16 -0
  1810. data/templates/go/golang-boilerplate/model/creator.go +16 -0
  1811. data/templates/go/golang-boilerplate/model/creator_test.go +13 -0
  1812. data/templates/go/golang-boilerplate/model/db_test.go +38 -0
  1813. data/templates/go/golang-boilerplate/model/deleter.go +32 -0
  1814. data/templates/go/golang-boilerplate/model/deleter_test.go +13 -0
  1815. data/templates/go/golang-boilerplate/model/getter.go +16 -0
  1816. data/templates/go/golang-boilerplate/model/getter_test.go +13 -0
  1817. data/templates/go/golang-boilerplate/model/jwt.go +86 -0
  1818. data/templates/go/golang-boilerplate/model/jwt_test.go +28 -0
  1819. data/templates/go/golang-boilerplate/model/model.go +141 -0
  1820. data/templates/go/golang-boilerplate/model/restrictor.go +19 -0
  1821. data/templates/go/golang-boilerplate/model/restrictor_test.go +13 -0
  1822. data/templates/go/golang-boilerplate/model/sorter.go +16 -0
  1823. data/templates/go/golang-boilerplate/model/sorter_test.go +46 -0
  1824. data/templates/go/golang-boilerplate/model/test_helper.go +107 -0
  1825. data/templates/go/golang-boilerplate/model/updater.go +16 -0
  1826. data/templates/go/golang-boilerplate/model/updater_test.go +14 -0
  1827. data/templates/go/golang-boilerplate/model/user.go +295 -0
  1828. data/templates/go/golang-boilerplate/model/user_test.go +215 -0
  1829. data/templates/go/golang-boilerplate/model/validator.go +80 -0
  1830. data/templates/go/golang-boilerplate/model/validator_test.go +135 -0
  1831. data/templates/go/golang-boilerplate/server/router.go +141 -0
  1832. data/templates/go/golang-boilerplate/server/server.go +26 -0
  1833. data/templates/go/golang-boilerplate/util/helper.go +300 -0
  1834. data/templates/go/golang-boilerplate/util/helper_test.go +230 -0
  1835. data/templates/nestjs/typescript/template/README.md +98 -0
  1836. data/templates/nestjs/typescript/template/eslint.config.mjs +34 -0
  1837. data/templates/nestjs/typescript/template/nest-cli.json +8 -0
  1838. data/templates/nestjs/typescript/template/package.json +73 -0
  1839. data/templates/nestjs/typescript/template/src/app.controller.spec.ts +22 -0
  1840. data/templates/nestjs/typescript/template/src/app.controller.ts +12 -0
  1841. data/templates/nestjs/typescript/template/src/app.module.ts +10 -0
  1842. data/templates/nestjs/typescript/template/src/app.service.ts +8 -0
  1843. data/templates/nestjs/typescript/template/src/main.ts +8 -0
  1844. data/templates/nestjs/typescript/template/test/app.e2e-spec.ts +25 -0
  1845. data/templates/nestjs/typescript/template/test/jest-e2e.json +9 -0
  1846. data/templates/nestjs/typescript/template/tsconfig.build.json +4 -0
  1847. data/templates/nestjs/typescript/template/tsconfig.json +21 -0
  1848. data/templates/nextjs/javascript/no-src-no-tailwind-template/README.md +36 -0
  1849. data/templates/nextjs/javascript/no-src-no-tailwind-template/app/favicon.ico +0 -0
  1850. data/templates/nextjs/javascript/no-src-no-tailwind-template/app/globals.css +42 -0
  1851. data/templates/nextjs/javascript/no-src-no-tailwind-template/app/layout.js +27 -0
  1852. data/templates/nextjs/javascript/no-src-no-tailwind-template/app/page.js +8 -0
  1853. data/templates/nextjs/javascript/no-src-no-tailwind-template/app/page.module.css +167 -0
  1854. data/templates/nextjs/javascript/no-src-no-tailwind-template/eslint.config.mjs +14 -0
  1855. data/templates/nextjs/javascript/no-src-no-tailwind-template/jsconfig.json +7 -0
  1856. data/templates/nextjs/javascript/no-src-no-tailwind-template/next.config.mjs +4 -0
  1857. data/templates/nextjs/javascript/no-src-no-tailwind-template/package.json +21 -0
  1858. data/templates/nextjs/javascript/no-src-no-tailwind-template/public/file.svg +1 -0
  1859. data/templates/nextjs/javascript/no-src-no-tailwind-template/public/globe.svg +1 -0
  1860. data/templates/nextjs/javascript/no-src-no-tailwind-template/public/next.svg +1 -0
  1861. data/templates/nextjs/javascript/no-src-no-tailwind-template/public/vercel.svg +1 -0
  1862. data/templates/nextjs/javascript/no-src-no-tailwind-template/public/window.svg +1 -0
  1863. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/README.md +36 -0
  1864. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/app/favicon.ico +0 -0
  1865. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/app/globals.css +122 -0
  1866. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/app/layout.js +29 -0
  1867. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/app/page.js +103 -0
  1868. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/components.json +21 -0
  1869. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/eslint.config.mjs +14 -0
  1870. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/jsconfig.json +7 -0
  1871. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/lib/utils.js +6 -0
  1872. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/next.config.mjs +4 -0
  1873. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/package.json +28 -0
  1874. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/postcss.config.mjs +5 -0
  1875. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/public/file.svg +1 -0
  1876. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/public/globe.svg +1 -0
  1877. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/public/next.svg +1 -0
  1878. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/public/vercel.svg +1 -0
  1879. data/templates/nextjs/javascript/no-src-shadcn-tailwind-template/public/window.svg +1 -0
  1880. data/templates/nextjs/javascript/no-src-tailwind-template/README.md +36 -0
  1881. data/templates/nextjs/javascript/no-src-tailwind-template/app/favicon.ico +0 -0
  1882. data/templates/nextjs/javascript/no-src-tailwind-template/app/globals.css +26 -0
  1883. data/templates/nextjs/javascript/no-src-tailwind-template/app/layout.js +29 -0
  1884. data/templates/nextjs/javascript/no-src-tailwind-template/app/page.js +10 -0
  1885. data/templates/nextjs/javascript/no-src-tailwind-template/eslint.config.mjs +14 -0
  1886. data/templates/nextjs/javascript/no-src-tailwind-template/jsconfig.json +7 -0
  1887. data/templates/nextjs/javascript/no-src-tailwind-template/next.config.mjs +4 -0
  1888. data/templates/nextjs/javascript/no-src-tailwind-template/package.json +23 -0
  1889. data/templates/nextjs/javascript/no-src-tailwind-template/postcss.config.mjs +5 -0
  1890. data/templates/nextjs/javascript/no-src-tailwind-template/public/file.svg +1 -0
  1891. data/templates/nextjs/javascript/no-src-tailwind-template/public/globe.svg +1 -0
  1892. data/templates/nextjs/javascript/no-src-tailwind-template/public/next.svg +1 -0
  1893. data/templates/nextjs/javascript/no-src-tailwind-template/public/vercel.svg +1 -0
  1894. data/templates/nextjs/javascript/no-src-tailwind-template/public/window.svg +1 -0
  1895. data/templates/nextjs/javascript/src-no-tailwind-template/README.md +36 -0
  1896. data/templates/nextjs/javascript/src-no-tailwind-template/eslint.config.mjs +14 -0
  1897. data/templates/nextjs/javascript/src-no-tailwind-template/jsconfig.json +7 -0
  1898. data/templates/nextjs/javascript/src-no-tailwind-template/next.config.mjs +4 -0
  1899. data/templates/nextjs/javascript/src-no-tailwind-template/package.json +21 -0
  1900. data/templates/nextjs/javascript/src-no-tailwind-template/public/file.svg +1 -0
  1901. data/templates/nextjs/javascript/src-no-tailwind-template/public/globe.svg +1 -0
  1902. data/templates/nextjs/javascript/src-no-tailwind-template/public/next.svg +1 -0
  1903. data/templates/nextjs/javascript/src-no-tailwind-template/public/vercel.svg +1 -0
  1904. data/templates/nextjs/javascript/src-no-tailwind-template/public/window.svg +1 -0
  1905. data/templates/nextjs/javascript/src-no-tailwind-template/src/app/favicon.ico +0 -0
  1906. data/templates/nextjs/javascript/src-no-tailwind-template/src/app/globals.css +42 -0
  1907. data/templates/nextjs/javascript/src-no-tailwind-template/src/app/layout.js +27 -0
  1908. data/templates/nextjs/javascript/src-no-tailwind-template/src/app/page.js +8 -0
  1909. data/templates/nextjs/javascript/src-no-tailwind-template/src/app/page.module.css +167 -0
  1910. data/templates/nextjs/javascript/src-shadcn-tailwind-template/README.md +36 -0
  1911. data/templates/nextjs/javascript/src-shadcn-tailwind-template/components.json +21 -0
  1912. data/templates/nextjs/javascript/src-shadcn-tailwind-template/eslint.config.mjs +14 -0
  1913. data/templates/nextjs/javascript/src-shadcn-tailwind-template/jsconfig.json +7 -0
  1914. data/templates/nextjs/javascript/src-shadcn-tailwind-template/next.config.mjs +4 -0
  1915. data/templates/nextjs/javascript/src-shadcn-tailwind-template/package.json +29 -0
  1916. data/templates/nextjs/javascript/src-shadcn-tailwind-template/postcss.config.mjs +5 -0
  1917. data/templates/nextjs/javascript/src-shadcn-tailwind-template/public/file.svg +1 -0
  1918. data/templates/nextjs/javascript/src-shadcn-tailwind-template/public/globe.svg +1 -0
  1919. data/templates/nextjs/javascript/src-shadcn-tailwind-template/public/next.svg +1 -0
  1920. data/templates/nextjs/javascript/src-shadcn-tailwind-template/public/vercel.svg +1 -0
  1921. data/templates/nextjs/javascript/src-shadcn-tailwind-template/public/window.svg +1 -0
  1922. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/app/favicon.ico +0 -0
  1923. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/app/globals.css +122 -0
  1924. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/app/layout.js +29 -0
  1925. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/app/page.js +10 -0
  1926. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/components/ui/button.jsx +55 -0
  1927. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/components/ui/card.jsx +101 -0
  1928. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/components/ui/input.jsx +24 -0
  1929. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/components/ui/textarea.jsx +20 -0
  1930. data/templates/nextjs/javascript/src-shadcn-tailwind-template/src/lib/utils.js +6 -0
  1931. data/templates/nextjs/javascript/src-tailwind-template/README.md +36 -0
  1932. data/templates/nextjs/javascript/src-tailwind-template/eslint.config.mjs +14 -0
  1933. data/templates/nextjs/javascript/src-tailwind-template/jsconfig.json +7 -0
  1934. data/templates/nextjs/javascript/src-tailwind-template/next.config.mjs +4 -0
  1935. data/templates/nextjs/javascript/src-tailwind-template/package.json +23 -0
  1936. data/templates/nextjs/javascript/src-tailwind-template/postcss.config.mjs +5 -0
  1937. data/templates/nextjs/javascript/src-tailwind-template/public/file.svg +1 -0
  1938. data/templates/nextjs/javascript/src-tailwind-template/public/globe.svg +1 -0
  1939. data/templates/nextjs/javascript/src-tailwind-template/public/next.svg +1 -0
  1940. data/templates/nextjs/javascript/src-tailwind-template/public/vercel.svg +1 -0
  1941. data/templates/nextjs/javascript/src-tailwind-template/public/window.svg +1 -0
  1942. data/templates/nextjs/javascript/src-tailwind-template/src/app/favicon.ico +0 -0
  1943. data/templates/nextjs/javascript/src-tailwind-template/src/app/globals.css +26 -0
  1944. data/templates/nextjs/javascript/src-tailwind-template/src/app/layout.js +29 -0
  1945. data/templates/nextjs/javascript/src-tailwind-template/src/app/page.js +10 -0
  1946. data/templates/nextjs/typescript/no-src-no-tailwind-template/README.md +36 -0
  1947. data/templates/nextjs/typescript/no-src-no-tailwind-template/app/favicon.ico +0 -0
  1948. data/templates/nextjs/typescript/no-src-no-tailwind-template/app/globals.css +42 -0
  1949. data/templates/nextjs/typescript/no-src-no-tailwind-template/app/layout.tsx +32 -0
  1950. data/templates/nextjs/typescript/no-src-no-tailwind-template/app/page.module.css +167 -0
  1951. data/templates/nextjs/typescript/no-src-no-tailwind-template/app/page.tsx +8 -0
  1952. data/templates/nextjs/typescript/no-src-no-tailwind-template/eslint.config.mjs +16 -0
  1953. data/templates/nextjs/typescript/no-src-no-tailwind-template/next-env.d.ts +5 -0
  1954. data/templates/nextjs/typescript/no-src-no-tailwind-template/next.config.ts +7 -0
  1955. data/templates/nextjs/typescript/no-src-no-tailwind-template/package.json +25 -0
  1956. data/templates/nextjs/typescript/no-src-no-tailwind-template/public/file.svg +1 -0
  1957. data/templates/nextjs/typescript/no-src-no-tailwind-template/public/globe.svg +1 -0
  1958. data/templates/nextjs/typescript/no-src-no-tailwind-template/public/next.svg +1 -0
  1959. data/templates/nextjs/typescript/no-src-no-tailwind-template/public/vercel.svg +1 -0
  1960. data/templates/nextjs/typescript/no-src-no-tailwind-template/public/window.svg +1 -0
  1961. data/templates/nextjs/typescript/no-src-no-tailwind-template/tsconfig.json +27 -0
  1962. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/README.md +36 -0
  1963. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/app/favicon.ico +0 -0
  1964. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/app/globals.css +122 -0
  1965. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/app/layout.tsx +34 -0
  1966. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/app/page.tsx +8 -0
  1967. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/components/ui/button.tsx +59 -0
  1968. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/components/ui/card.tsx +92 -0
  1969. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/components/ui/input.tsx +21 -0
  1970. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/components/ui/textarea.tsx +18 -0
  1971. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/components.json +21 -0
  1972. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/eslint.config.mjs +16 -0
  1973. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/lib/utils.ts +6 -0
  1974. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/next-env.d.ts +5 -0
  1975. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/next.config.ts +7 -0
  1976. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/package.json +33 -0
  1977. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/postcss.config.mjs +5 -0
  1978. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/public/file.svg +1 -0
  1979. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/public/globe.svg +1 -0
  1980. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/public/next.svg +1 -0
  1981. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/public/vercel.svg +1 -0
  1982. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/public/window.svg +1 -0
  1983. data/templates/nextjs/typescript/no-src-shadcn-tailwind-template/tsconfig.json +27 -0
  1984. data/templates/nextjs/typescript/no-src-tailwind-template/README.md +36 -0
  1985. data/templates/nextjs/typescript/no-src-tailwind-template/app/favicon.ico +0 -0
  1986. data/templates/nextjs/typescript/no-src-tailwind-template/app/globals.css +26 -0
  1987. data/templates/nextjs/typescript/no-src-tailwind-template/app/layout.tsx +34 -0
  1988. data/templates/nextjs/typescript/no-src-tailwind-template/app/page.tsx +8 -0
  1989. data/templates/nextjs/typescript/no-src-tailwind-template/eslint.config.mjs +16 -0
  1990. data/templates/nextjs/typescript/no-src-tailwind-template/next-env.d.ts +5 -0
  1991. data/templates/nextjs/typescript/no-src-tailwind-template/next.config.ts +7 -0
  1992. data/templates/nextjs/typescript/no-src-tailwind-template/package.json +27 -0
  1993. data/templates/nextjs/typescript/no-src-tailwind-template/postcss.config.mjs +5 -0
  1994. data/templates/nextjs/typescript/no-src-tailwind-template/public/file.svg +1 -0
  1995. data/templates/nextjs/typescript/no-src-tailwind-template/public/globe.svg +1 -0
  1996. data/templates/nextjs/typescript/no-src-tailwind-template/public/next.svg +1 -0
  1997. data/templates/nextjs/typescript/no-src-tailwind-template/public/vercel.svg +1 -0
  1998. data/templates/nextjs/typescript/no-src-tailwind-template/public/window.svg +1 -0
  1999. data/templates/nextjs/typescript/no-src-tailwind-template/tsconfig.json +27 -0
  2000. data/templates/nextjs/typescript/src-no-tailwind-template/README.md +36 -0
  2001. data/templates/nextjs/typescript/src-no-tailwind-template/eslint.config.mjs +16 -0
  2002. data/templates/nextjs/typescript/src-no-tailwind-template/next-env.d.ts +5 -0
  2003. data/templates/nextjs/typescript/src-no-tailwind-template/next.config.ts +7 -0
  2004. data/templates/nextjs/typescript/src-no-tailwind-template/package.json +25 -0
  2005. data/templates/nextjs/typescript/src-no-tailwind-template/public/file.svg +1 -0
  2006. data/templates/nextjs/typescript/src-no-tailwind-template/public/globe.svg +1 -0
  2007. data/templates/nextjs/typescript/src-no-tailwind-template/public/next.svg +1 -0
  2008. data/templates/nextjs/typescript/src-no-tailwind-template/public/vercel.svg +1 -0
  2009. data/templates/nextjs/typescript/src-no-tailwind-template/public/window.svg +1 -0
  2010. data/templates/nextjs/typescript/src-no-tailwind-template/src/app/favicon.ico +0 -0
  2011. data/templates/nextjs/typescript/src-no-tailwind-template/src/app/globals.css +42 -0
  2012. data/templates/nextjs/typescript/src-no-tailwind-template/src/app/layout.tsx +32 -0
  2013. data/templates/nextjs/typescript/src-no-tailwind-template/src/app/page.module.css +167 -0
  2014. data/templates/nextjs/typescript/src-no-tailwind-template/src/app/page.tsx +8 -0
  2015. data/templates/nextjs/typescript/src-no-tailwind-template/tsconfig.json +27 -0
  2016. data/templates/nextjs/typescript/src-shadcn-tailwind-template/README.md +36 -0
  2017. data/templates/nextjs/typescript/src-shadcn-tailwind-template/components.json +21 -0
  2018. data/templates/nextjs/typescript/src-shadcn-tailwind-template/eslint.config.mjs +16 -0
  2019. data/templates/nextjs/typescript/src-shadcn-tailwind-template/next-env.d.ts +5 -0
  2020. data/templates/nextjs/typescript/src-shadcn-tailwind-template/next.config.ts +7 -0
  2021. data/templates/nextjs/typescript/src-shadcn-tailwind-template/package.json +33 -0
  2022. data/templates/nextjs/typescript/src-shadcn-tailwind-template/postcss.config.mjs +5 -0
  2023. data/templates/nextjs/typescript/src-shadcn-tailwind-template/public/file.svg +1 -0
  2024. data/templates/nextjs/typescript/src-shadcn-tailwind-template/public/globe.svg +1 -0
  2025. data/templates/nextjs/typescript/src-shadcn-tailwind-template/public/next.svg +1 -0
  2026. data/templates/nextjs/typescript/src-shadcn-tailwind-template/public/vercel.svg +1 -0
  2027. data/templates/nextjs/typescript/src-shadcn-tailwind-template/public/window.svg +1 -0
  2028. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/app/favicon.ico +0 -0
  2029. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/app/globals.css +122 -0
  2030. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/app/layout.tsx +34 -0
  2031. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/app/page.tsx +10 -0
  2032. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/components/ui/button.tsx +59 -0
  2033. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/components/ui/card.tsx +92 -0
  2034. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/components/ui/input.tsx +21 -0
  2035. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/components/ui/textarea.tsx +18 -0
  2036. data/templates/nextjs/typescript/src-shadcn-tailwind-template/src/lib/utils.ts +6 -0
  2037. data/templates/nextjs/typescript/src-shadcn-tailwind-template/tsconfig.json +27 -0
  2038. data/templates/nextjs/typescript/src-tailwind-template/README.md +36 -0
  2039. data/templates/nextjs/typescript/src-tailwind-template/eslint.config.mjs +16 -0
  2040. data/templates/nextjs/typescript/src-tailwind-template/next-env.d.ts +5 -0
  2041. data/templates/nextjs/typescript/src-tailwind-template/next.config.ts +7 -0
  2042. data/templates/nextjs/typescript/src-tailwind-template/package.json +27 -0
  2043. data/templates/nextjs/typescript/src-tailwind-template/postcss.config.mjs +5 -0
  2044. data/templates/nextjs/typescript/src-tailwind-template/public/file.svg +1 -0
  2045. data/templates/nextjs/typescript/src-tailwind-template/public/globe.svg +1 -0
  2046. data/templates/nextjs/typescript/src-tailwind-template/public/next.svg +1 -0
  2047. data/templates/nextjs/typescript/src-tailwind-template/public/vercel.svg +1 -0
  2048. data/templates/nextjs/typescript/src-tailwind-template/public/window.svg +1 -0
  2049. data/templates/nextjs/typescript/src-tailwind-template/src/app/favicon.ico +0 -0
  2050. data/templates/nextjs/typescript/src-tailwind-template/src/app/globals.css +26 -0
  2051. data/templates/nextjs/typescript/src-tailwind-template/src/app/layout.tsx +34 -0
  2052. data/templates/nextjs/typescript/src-tailwind-template/src/app/page.tsx +10 -0
  2053. data/templates/nextjs/typescript/src-tailwind-template/tsconfig.json +27 -0
  2054. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/README.md +75 -0
  2055. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/app/app.vue +6 -0
  2056. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/nuxt.config.ts +14 -0
  2057. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/package.json +26 -0
  2058. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/pnpm-lock.yaml +11478 -0
  2059. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/public/favicon.ico +0 -0
  2060. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/public/robots.txt +2 -0
  2061. data/templates/nuxtjs/typescript/no-shadcn-no-tailwind-template/tsconfig.json +18 -0
  2062. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/README.md +75 -0
  2063. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/app/app.vue +6 -0
  2064. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/nuxt.config.ts +14 -0
  2065. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/package.json +26 -0
  2066. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/pnpm-lock.yaml +11478 -0
  2067. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/public/favicon.ico +0 -0
  2068. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/public/robots.txt +2 -0
  2069. data/templates/nuxtjs/typescript/no-shadcn-tailwind-template/tsconfig.json +18 -0
  2070. data/templates/nuxtjs/typescript/shadcn-tailwind-template/README.md +75 -0
  2071. data/templates/nuxtjs/typescript/shadcn-tailwind-template/app/app.vue +6 -0
  2072. data/templates/nuxtjs/typescript/shadcn-tailwind-template/nuxt.config.ts +14 -0
  2073. data/templates/nuxtjs/typescript/shadcn-tailwind-template/package.json +26 -0
  2074. data/templates/nuxtjs/typescript/shadcn-tailwind-template/pnpm-lock.yaml +11478 -0
  2075. data/templates/nuxtjs/typescript/shadcn-tailwind-template/public/favicon.ico +0 -0
  2076. data/templates/nuxtjs/typescript/shadcn-tailwind-template/public/robots.txt +2 -0
  2077. data/templates/nuxtjs/typescript/shadcn-tailwind-template/tsconfig.json +18 -0
  2078. data/templates/react-native/javascript/template/App.jsx +45 -0
  2079. data/templates/react-native/javascript/template/Gemfile +16 -0
  2080. data/templates/react-native/javascript/template/README.md +97 -0
  2081. data/templates/react-native/javascript/template/__tests__/App.test.tsx +13 -0
  2082. data/templates/react-native/javascript/template/android/app/build.gradle +119 -0
  2083. data/templates/react-native/javascript/template/android/app/debug.keystore +0 -0
  2084. data/templates/react-native/javascript/template/android/app/proguard-rules.pro +10 -0
  2085. data/templates/react-native/javascript/template/android/app/src/main/AndroidManifest.xml +27 -0
  2086. data/templates/react-native/javascript/template/android/app/src/main/java/com/template/MainActivity.kt +22 -0
  2087. data/templates/react-native/javascript/template/android/app/src/main/java/com/template/MainApplication.kt +38 -0
  2088. data/templates/react-native/javascript/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  2089. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  2090. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  2091. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  2092. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  2093. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  2094. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  2095. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  2096. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  2097. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  2098. data/templates/react-native/javascript/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  2099. data/templates/react-native/javascript/template/android/app/src/main/res/values/strings.xml +3 -0
  2100. data/templates/react-native/javascript/template/android/app/src/main/res/values/styles.xml +9 -0
  2101. data/templates/react-native/javascript/template/android/build.gradle +21 -0
  2102. data/templates/react-native/javascript/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  2103. data/templates/react-native/javascript/template/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  2104. data/templates/react-native/javascript/template/android/gradle.properties +44 -0
  2105. data/templates/react-native/javascript/template/android/gradlew +251 -0
  2106. data/templates/react-native/javascript/template/android/gradlew.bat +99 -0
  2107. data/templates/react-native/javascript/template/android/settings.gradle +6 -0
  2108. data/templates/react-native/javascript/template/app.json +4 -0
  2109. data/templates/react-native/javascript/template/babel.config.js +3 -0
  2110. data/templates/react-native/javascript/template/index.js +9 -0
  2111. data/templates/react-native/javascript/template/ios/Podfile +35 -0
  2112. data/templates/react-native/javascript/template/ios/template/AppDelegate.swift +48 -0
  2113. data/templates/react-native/javascript/template/ios/template/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  2114. data/templates/react-native/javascript/template/ios/template/Images.xcassets/Contents.json +6 -0
  2115. data/templates/react-native/javascript/template/ios/template/Info.plist +52 -0
  2116. data/templates/react-native/javascript/template/ios/template/LaunchScreen.storyboard +47 -0
  2117. data/templates/react-native/javascript/template/ios/template/PrivacyInfo.xcprivacy +37 -0
  2118. data/templates/react-native/javascript/template/ios/template.xcodeproj/project.pbxproj +471 -0
  2119. data/templates/react-native/javascript/template/ios/template.xcodeproj/xcshareddata/xcschemes/template.xcscheme +88 -0
  2120. data/templates/react-native/javascript/template/jest.config.js +3 -0
  2121. data/templates/react-native/javascript/template/metro.config.js +11 -0
  2122. data/templates/react-native/javascript/template/package.json +36 -0
  2123. data/templates/react-native/typescript/template/App.tsx +45 -0
  2124. data/templates/react-native/typescript/template/Gemfile +16 -0
  2125. data/templates/react-native/typescript/template/README.md +97 -0
  2126. data/templates/react-native/typescript/template/__tests__/App.test.tsx +13 -0
  2127. data/templates/react-native/typescript/template/android/app/build.gradle +119 -0
  2128. data/templates/react-native/typescript/template/android/app/debug.keystore +0 -0
  2129. data/templates/react-native/typescript/template/android/app/proguard-rules.pro +10 -0
  2130. data/templates/react-native/typescript/template/android/app/src/main/AndroidManifest.xml +27 -0
  2131. data/templates/react-native/typescript/template/android/app/src/main/java/com/template/MainActivity.kt +22 -0
  2132. data/templates/react-native/typescript/template/android/app/src/main/java/com/template/MainApplication.kt +38 -0
  2133. data/templates/react-native/typescript/template/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  2134. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  2135. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  2136. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  2137. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  2138. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  2139. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  2140. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  2141. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  2142. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  2143. data/templates/react-native/typescript/template/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  2144. data/templates/react-native/typescript/template/android/app/src/main/res/values/strings.xml +3 -0
  2145. data/templates/react-native/typescript/template/android/app/src/main/res/values/styles.xml +9 -0
  2146. data/templates/react-native/typescript/template/android/build.gradle +21 -0
  2147. data/templates/react-native/typescript/template/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  2148. data/templates/react-native/typescript/template/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  2149. data/templates/react-native/typescript/template/android/gradle.properties +44 -0
  2150. data/templates/react-native/typescript/template/android/gradlew +251 -0
  2151. data/templates/react-native/typescript/template/android/gradlew.bat +99 -0
  2152. data/templates/react-native/typescript/template/android/settings.gradle +6 -0
  2153. data/templates/react-native/typescript/template/app.json +4 -0
  2154. data/templates/react-native/typescript/template/babel.config.js +3 -0
  2155. data/templates/react-native/typescript/template/index.js +9 -0
  2156. data/templates/react-native/typescript/template/ios/Podfile +35 -0
  2157. data/templates/react-native/typescript/template/ios/template/AppDelegate.swift +48 -0
  2158. data/templates/react-native/typescript/template/ios/template/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  2159. data/templates/react-native/typescript/template/ios/template/Images.xcassets/Contents.json +6 -0
  2160. data/templates/react-native/typescript/template/ios/template/Info.plist +52 -0
  2161. data/templates/react-native/typescript/template/ios/template/LaunchScreen.storyboard +47 -0
  2162. data/templates/react-native/typescript/template/ios/template/PrivacyInfo.xcprivacy +37 -0
  2163. data/templates/react-native/typescript/template/ios/template.xcodeproj/project.pbxproj +471 -0
  2164. data/templates/react-native/typescript/template/ios/template.xcodeproj/xcshareddata/xcschemes/template.xcscheme +88 -0
  2165. data/templates/react-native/typescript/template/jest.config.js +3 -0
  2166. data/templates/react-native/typescript/template/metro.config.js +11 -0
  2167. data/templates/react-native/typescript/template/package.json +41 -0
  2168. data/templates/react-native/typescript/template/tsconfig.json +5 -0
  2169. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/README.md +12 -0
  2170. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/eslint.config.js +29 -0
  2171. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/index.html +13 -0
  2172. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/package.json +27 -0
  2173. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/public/vite.svg +1 -0
  2174. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/src/App.css +42 -0
  2175. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/src/App.jsx +10 -0
  2176. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/src/assets/react.svg +1 -0
  2177. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/src/index.css +68 -0
  2178. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/src/main.jsx +10 -0
  2179. data/templates/reactjs/vite/javascript/no-shadcn-no-tailwind-template/vite.config.js +7 -0
  2180. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/README.md +12 -0
  2181. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/eslint.config.js +29 -0
  2182. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/index.html +13 -0
  2183. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/package.json +29 -0
  2184. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/public/vite.svg +1 -0
  2185. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/src/App.css +44 -0
  2186. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/src/App.jsx +10 -0
  2187. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/src/assets/react.svg +1 -0
  2188. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/src/index.css +70 -0
  2189. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/src/main.jsx +10 -0
  2190. data/templates/reactjs/vite/javascript/no-shadcn-tailwind-template/vite.config.js +8 -0
  2191. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/README.md +12 -0
  2192. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/components.json +21 -0
  2193. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/eslint.config.js +29 -0
  2194. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/index.html +13 -0
  2195. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/jsconfig.json +10 -0
  2196. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/package.json +38 -0
  2197. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/public/vite.svg +1 -0
  2198. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/App.css +162 -0
  2199. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/App.jsx +10 -0
  2200. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/assets/react.svg +1 -0
  2201. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/components/ui/button.jsx +55 -0
  2202. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/components/ui/card.jsx +101 -0
  2203. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/components/ui/input.jsx +24 -0
  2204. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/components/ui/textarea.jsx +20 -0
  2205. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/index.css +70 -0
  2206. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/lib/utils.js +6 -0
  2207. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/src/main.jsx +10 -0
  2208. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/tailwind.config.js +12 -0
  2209. data/templates/reactjs/vite/javascript/shadcn-tailwind-template/vite.config.js +13 -0
  2210. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/README.md +69 -0
  2211. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/eslint.config.js +23 -0
  2212. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/index.html +13 -0
  2213. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/package.json +29 -0
  2214. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/public/vite.svg +1 -0
  2215. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/App.css +42 -0
  2216. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/App.tsx +10 -0
  2217. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/assets/react.svg +1 -0
  2218. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/index.css +68 -0
  2219. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/main.tsx +10 -0
  2220. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/src/vite-env.d.ts +1 -0
  2221. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/tsconfig.app.json +27 -0
  2222. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/tsconfig.json +7 -0
  2223. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/tsconfig.node.json +25 -0
  2224. data/templates/reactjs/vite/typescript/no-shadcn-no-tailwind-template/vite.config.ts +7 -0
  2225. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/README.md +69 -0
  2226. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/eslint.config.js +23 -0
  2227. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/index.html +13 -0
  2228. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/package.json +31 -0
  2229. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/public/vite.svg +1 -0
  2230. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/App.css +42 -0
  2231. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/App.tsx +10 -0
  2232. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/assets/react.svg +1 -0
  2233. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/index.css +68 -0
  2234. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/main.tsx +10 -0
  2235. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/src/vite-env.d.ts +1 -0
  2236. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/tsconfig.app.json +27 -0
  2237. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/tsconfig.json +7 -0
  2238. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/tsconfig.node.json +25 -0
  2239. data/templates/reactjs/vite/typescript/no-shadcn-tailwind-template/vite.config.ts +7 -0
  2240. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/README.md +69 -0
  2241. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/components.json +21 -0
  2242. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/eslint.config.js +23 -0
  2243. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/index.html +13 -0
  2244. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/package.json +39 -0
  2245. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/public/vite.svg +1 -0
  2246. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/App.css +162 -0
  2247. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/App.tsx +10 -0
  2248. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/assets/react.svg +1 -0
  2249. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/components/ui/button.tsx +59 -0
  2250. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/components/ui/card.tsx +92 -0
  2251. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/components/ui/input.tsx +21 -0
  2252. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/components/ui/textarea.tsx +18 -0
  2253. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/index.css +69 -0
  2254. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/lib/utils.ts +6 -0
  2255. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/main.tsx +10 -0
  2256. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/src/vite-env.d.ts +1 -0
  2257. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/tailwind.config.js +11 -0
  2258. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/tsconfig.app.json +34 -0
  2259. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/tsconfig.json +17 -0
  2260. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/tsconfig.node.json +25 -0
  2261. data/templates/reactjs/vite/typescript/shadcn-tailwind-template/vite.config.ts +7 -0
  2262. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/README.md +12 -0
  2263. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/README.md +308 -0
  2264. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/__tests__/setup.js +29 -0
  2265. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/__tests__/user.test.js +242 -0
  2266. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/controllers/user.controller.js +167 -0
  2267. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/db/database.js +37 -0
  2268. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/index.js +59 -0
  2269. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/jest.config.js +19 -0
  2270. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/middleware/errorHandler.js +81 -0
  2271. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/middleware/security.js +96 -0
  2272. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/middleware/validation.js +54 -0
  2273. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/models/user.model.js +64 -0
  2274. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/package.json +36 -0
  2275. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/routes/index.js +31 -0
  2276. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/routes/user.routes.js +44 -0
  2277. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/backend/utils/logger.js +68 -0
  2278. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/components.json +21 -0
  2279. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/eslint.config.js +29 -0
  2280. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/index.html +13 -0
  2281. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/jsconfig.json +10 -0
  2282. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/package.json +38 -0
  2283. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/public/vite.svg +1 -0
  2284. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/App.css +162 -0
  2285. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/App.jsx +10 -0
  2286. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/assets/react.svg +1 -0
  2287. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/components/ui/button.jsx +55 -0
  2288. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/components/ui/card.jsx +101 -0
  2289. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/components/ui/input.jsx +24 -0
  2290. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/components/ui/textarea.jsx +20 -0
  2291. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/index.css +70 -0
  2292. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/lib/utils.js +6 -0
  2293. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/src/main.jsx +10 -0
  2294. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/tailwind.config.js +12 -0
  2295. data/templates/reactjs-expressjs-shadcn/javascript/react-advance-express-shadcn-template/vite.config.js +13 -0
  2296. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/README.md +12 -0
  2297. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/backend/controllers/user.controller.js +13 -0
  2298. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/backend/index.js +28 -0
  2299. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/backend/models/user.model.js +9 -0
  2300. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/backend/package.json +14 -0
  2301. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/backend/routes/user.routes.js +9 -0
  2302. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/components.json +21 -0
  2303. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/eslint.config.js +29 -0
  2304. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/index.html +13 -0
  2305. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/jsconfig.json +10 -0
  2306. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/package.json +38 -0
  2307. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/public/vite.svg +1 -0
  2308. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/App.css +162 -0
  2309. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/App.jsx +10 -0
  2310. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/assets/react.svg +1 -0
  2311. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/components/ui/button.jsx +55 -0
  2312. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/components/ui/card.jsx +101 -0
  2313. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/components/ui/input.jsx +24 -0
  2314. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/components/ui/textarea.jsx +20 -0
  2315. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/index.css +70 -0
  2316. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/lib/utils.js +6 -0
  2317. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/src/main.jsx +10 -0
  2318. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/tailwind.config.js +12 -0
  2319. data/templates/reactjs-expressjs-shadcn/javascript/react-basic-express-shadcn-template/vite.config.js +13 -0
  2320. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/README.md +69 -0
  2321. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/README.md +294 -0
  2322. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/__tests__/setup.ts +29 -0
  2323. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/__tests__/user.test.ts +242 -0
  2324. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/db/database.ts +38 -0
  2325. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/index.ts +59 -0
  2326. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/jest.config.js +25 -0
  2327. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/middleware/errorHandler.ts +92 -0
  2328. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/middleware/security.ts +96 -0
  2329. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/middleware/validation.ts +55 -0
  2330. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/models/user.model.ts +65 -0
  2331. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/package.json +49 -0
  2332. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/routes/index.ts +31 -0
  2333. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/routes/user.routes.ts +44 -0
  2334. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/types/index.ts +53 -0
  2335. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/backend/utils/logger.ts +79 -0
  2336. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/components.json +21 -0
  2337. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/eslint.config.js +23 -0
  2338. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/index.html +13 -0
  2339. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/package.json +39 -0
  2340. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/public/vite.svg +1 -0
  2341. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/App.css +162 -0
  2342. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/App.tsx +10 -0
  2343. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/assets/react.svg +1 -0
  2344. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/components/ui/button.tsx +59 -0
  2345. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/components/ui/card.tsx +92 -0
  2346. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/components/ui/input.tsx +21 -0
  2347. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/components/ui/textarea.tsx +18 -0
  2348. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/index.css +69 -0
  2349. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/lib/utils.ts +6 -0
  2350. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/main.tsx +10 -0
  2351. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/src/vite-env.d.ts +1 -0
  2352. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/tailwind.config.js +11 -0
  2353. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/tsconfig.app.json +34 -0
  2354. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/tsconfig.json +17 -0
  2355. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/tsconfig.node.json +25 -0
  2356. data/templates/reactjs-expressjs-shadcn/typescript/react-advance-express-shadcn-template/vite.config.ts +7 -0
  2357. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/README.md +69 -0
  2358. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/backend/controllers/user.controller.ts +14 -0
  2359. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/backend/index.ts +28 -0
  2360. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/backend/models/user.model.ts +14 -0
  2361. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/backend/package.json +18 -0
  2362. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/backend/routes/user.routes.ts +9 -0
  2363. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/components.json +21 -0
  2364. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/eslint.config.js +23 -0
  2365. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/index.html +13 -0
  2366. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/package.json +39 -0
  2367. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/public/vite.svg +1 -0
  2368. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/App.css +162 -0
  2369. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/App.tsx +10 -0
  2370. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/assets/react.svg +1 -0
  2371. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/components/ui/button.tsx +59 -0
  2372. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/components/ui/card.tsx +92 -0
  2373. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/components/ui/input.tsx +21 -0
  2374. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/components/ui/textarea.tsx +18 -0
  2375. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/index.css +69 -0
  2376. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/lib/utils.ts +6 -0
  2377. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/main.tsx +10 -0
  2378. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/src/vite-env.d.ts +1 -0
  2379. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/tailwind.config.js +11 -0
  2380. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/tsconfig.app.json +34 -0
  2381. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/tsconfig.json +17 -0
  2382. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/tsconfig.node.json +25 -0
  2383. data/templates/reactjs-expressjs-shadcn/typescript/react-basic-express-shadcn-template/vite.config.ts +7 -0
  2384. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/README.md +69 -0
  2385. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/README.md +98 -0
  2386. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/eslint.config.mjs +34 -0
  2387. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/nest-cli.json +8 -0
  2388. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/package.json +73 -0
  2389. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/src/app.controller.spec.ts +22 -0
  2390. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/src/app.controller.ts +12 -0
  2391. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/src/app.module.ts +10 -0
  2392. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/src/app.service.ts +8 -0
  2393. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/src/main.ts +8 -0
  2394. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/test/app.e2e-spec.ts +25 -0
  2395. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/test/jest-e2e.json +9 -0
  2396. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/tsconfig.build.json +4 -0
  2397. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/backend/tsconfig.json +21 -0
  2398. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/components.json +21 -0
  2399. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/eslint.config.js +23 -0
  2400. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/index.html +13 -0
  2401. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/package.json +39 -0
  2402. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/public/vite.svg +1 -0
  2403. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/App.css +162 -0
  2404. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/App.tsx +10 -0
  2405. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/assets/react.svg +1 -0
  2406. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/components/ui/button.tsx +59 -0
  2407. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/components/ui/card.tsx +92 -0
  2408. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/components/ui/input.tsx +21 -0
  2409. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/components/ui/textarea.tsx +18 -0
  2410. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/index.css +69 -0
  2411. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/lib/utils.ts +6 -0
  2412. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/main.tsx +10 -0
  2413. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/src/vite-env.d.ts +1 -0
  2414. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/tailwind.config.js +11 -0
  2415. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/tsconfig.app.json +34 -0
  2416. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/tsconfig.json +17 -0
  2417. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/tsconfig.node.json +25 -0
  2418. data/templates/reactjs-nestjs-shadcn/typescript/react-nest-shadcn-template/vite.config.ts +7 -0
  2419. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/Dockerfile +22 -0
  2420. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/README.md +87 -0
  2421. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/app.css +15 -0
  2422. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/root.tsx +75 -0
  2423. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/routes/home.tsx +13 -0
  2424. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/routes.ts +3 -0
  2425. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/welcome/logo-dark.svg +23 -0
  2426. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/welcome/logo-light.svg +23 -0
  2427. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/app/welcome/welcome.tsx +89 -0
  2428. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/package.json +30 -0
  2429. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/public/favicon.ico +0 -0
  2430. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/react-router.config.ts +7 -0
  2431. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/tsconfig.json +27 -0
  2432. data/templates/remixjs/typescript/no-shadcn-no-tailwind-template/vite.config.ts +8 -0
  2433. data/templates/remixjs/typescript/no-shadcn-tailwind-template/Dockerfile +22 -0
  2434. data/templates/remixjs/typescript/no-shadcn-tailwind-template/README.md +87 -0
  2435. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/app.css +15 -0
  2436. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/root.tsx +75 -0
  2437. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/routes/home.tsx +13 -0
  2438. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/routes.ts +3 -0
  2439. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/welcome/logo-dark.svg +23 -0
  2440. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/welcome/logo-light.svg +23 -0
  2441. data/templates/remixjs/typescript/no-shadcn-tailwind-template/app/welcome/welcome.tsx +89 -0
  2442. data/templates/remixjs/typescript/no-shadcn-tailwind-template/package.json +30 -0
  2443. data/templates/remixjs/typescript/no-shadcn-tailwind-template/public/favicon.ico +0 -0
  2444. data/templates/remixjs/typescript/no-shadcn-tailwind-template/react-router.config.ts +7 -0
  2445. data/templates/remixjs/typescript/no-shadcn-tailwind-template/tsconfig.json +27 -0
  2446. data/templates/remixjs/typescript/no-shadcn-tailwind-template/vite.config.ts +8 -0
  2447. data/templates/remixjs/typescript/shadcn-tailwind-template/Dockerfile +22 -0
  2448. data/templates/remixjs/typescript/shadcn-tailwind-template/README.md +87 -0
  2449. data/templates/remixjs/typescript/shadcn-tailwind-template/app/app.css +134 -0
  2450. data/templates/remixjs/typescript/shadcn-tailwind-template/app/components/ui/button.tsx +59 -0
  2451. data/templates/remixjs/typescript/shadcn-tailwind-template/app/components/ui/card.tsx +92 -0
  2452. data/templates/remixjs/typescript/shadcn-tailwind-template/app/components/ui/input.tsx +21 -0
  2453. data/templates/remixjs/typescript/shadcn-tailwind-template/app/components/ui/textarea.tsx +18 -0
  2454. data/templates/remixjs/typescript/shadcn-tailwind-template/app/lib/utils.ts +6 -0
  2455. data/templates/remixjs/typescript/shadcn-tailwind-template/app/root.tsx +75 -0
  2456. data/templates/remixjs/typescript/shadcn-tailwind-template/app/routes/home.tsx +13 -0
  2457. data/templates/remixjs/typescript/shadcn-tailwind-template/app/routes.ts +3 -0
  2458. data/templates/remixjs/typescript/shadcn-tailwind-template/app/welcome/logo-dark.svg +23 -0
  2459. data/templates/remixjs/typescript/shadcn-tailwind-template/app/welcome/logo-light.svg +23 -0
  2460. data/templates/remixjs/typescript/shadcn-tailwind-template/app/welcome/welcome.tsx +89 -0
  2461. data/templates/remixjs/typescript/shadcn-tailwind-template/components.json +21 -0
  2462. data/templates/remixjs/typescript/shadcn-tailwind-template/package-lock.json +4767 -0
  2463. data/templates/remixjs/typescript/shadcn-tailwind-template/package.json +37 -0
  2464. data/templates/remixjs/typescript/shadcn-tailwind-template/public/favicon.ico +0 -0
  2465. data/templates/remixjs/typescript/shadcn-tailwind-template/react-router.config.ts +7 -0
  2466. data/templates/remixjs/typescript/shadcn-tailwind-template/tsconfig.json +27 -0
  2467. data/templates/remixjs/typescript/shadcn-tailwind-template/vite.config.ts +8 -0
  2468. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/Dockerfile +75 -0
  2469. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/Gemfile +29 -0
  2470. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/Gemfile.lock +279 -0
  2471. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/Procfile.dev +4 -0
  2472. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/README.md +57 -0
  2473. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/Rakefile +6 -0
  2474. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/assets/config/manifest.js +3 -0
  2475. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/assets/stylesheets/application.css +3 -0
  2476. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/channels/application_cable/channel.rb +4 -0
  2477. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/channels/application_cable/connection.rb +4 -0
  2478. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/controllers/application_controller.rb +2 -0
  2479. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/controllers/home_controller.rb +13 -0
  2480. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/helpers/application_helper.rb +2 -0
  2481. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/javascript/application.js +3 -0
  2482. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/javascript/controllers/application.js +9 -0
  2483. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/javascript/controllers/home_controller.js +19 -0
  2484. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/javascript/controllers/index.js +8 -0
  2485. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/jobs/application_job.rb +7 -0
  2486. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/mailers/application_mailer.rb +4 -0
  2487. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/models/application_record.rb +3 -0
  2488. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/views/home/_content.html.erb +3 -0
  2489. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/views/home/index.html.erb +8 -0
  2490. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/views/layouts/application.html.erb +16 -0
  2491. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/views/layouts/mailer.html.erb +13 -0
  2492. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/app/views/layouts/mailer.text.erb +1 -0
  2493. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/bundle +109 -0
  2494. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/dev +11 -0
  2495. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/docker-entrypoint +8 -0
  2496. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/rails +4 -0
  2497. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/rake +4 -0
  2498. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/bin/setup +36 -0
  2499. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/application.rb +27 -0
  2500. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/boot.rb +4 -0
  2501. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/cable.yml +10 -0
  2502. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/credentials.yml.enc +1 -0
  2503. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/database.yml +85 -0
  2504. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/environment.rb +5 -0
  2505. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/environments/development.rb +76 -0
  2506. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/environments/production.rb +97 -0
  2507. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/environments/test.rb +64 -0
  2508. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/initializers/assets.rb +12 -0
  2509. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/initializers/content_security_policy.rb +25 -0
  2510. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/initializers/filter_parameter_logging.rb +8 -0
  2511. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/initializers/inflections.rb +16 -0
  2512. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/initializers/permissions_policy.rb +13 -0
  2513. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/locales/en.yml +31 -0
  2514. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/puma.rb +44 -0
  2515. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/routes.rb +11 -0
  2516. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config/storage.yml +34 -0
  2517. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/config.ru +6 -0
  2518. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/db/schema.rb +17 -0
  2519. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/db/seeds.rb +9 -0
  2520. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/docker-compose.yaml +14 -0
  2521. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/esbuild.config.js +58 -0
  2522. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/package.json +24 -0
  2523. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/postcss.config.js +9 -0
  2524. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/404.html +67 -0
  2525. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/422.html +67 -0
  2526. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/500.html +66 -0
  2527. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/apple-touch-icon-precomposed.png +0 -0
  2528. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/apple-touch-icon.png +0 -0
  2529. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/favicon.ico +0 -0
  2530. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/public/robots.txt +1 -0
  2531. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/tailwind.config.js +8 -0
  2532. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/test/application_system_test_case.rb +5 -0
  2533. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/test/channels/application_cable/connection_test.rb +13 -0
  2534. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/test/test_helper.rb +15 -0
  2535. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/watch-stimulus.js +18 -0
  2536. data/templates/ruby/rails_7_esbuild_hotwire_tailwindcss_starter/yarn.lock +981 -0
  2537. data/templates/ruby/ruby-on-rails-apis-template/Capfile +11 -0
  2538. data/templates/ruby/ruby-on-rails-apis-template/Gemfile +31 -0
  2539. data/templates/ruby/ruby-on-rails-apis-template/Gemfile.lock +214 -0
  2540. data/templates/ruby/ruby-on-rails-apis-template/README.md +35 -0
  2541. data/templates/ruby/ruby-on-rails-apis-template/Rakefile +6 -0
  2542. data/templates/ruby/ruby-on-rails-apis-template/app/channels/application_cable/channel.rb +4 -0
  2543. data/templates/ruby/ruby-on-rails-apis-template/app/channels/application_cable/connection.rb +4 -0
  2544. data/templates/ruby/ruby-on-rails-apis-template/app/controllers/application_controller.rb +3 -0
  2545. data/templates/ruby/ruby-on-rails-apis-template/app/jobs/application_job.rb +2 -0
  2546. data/templates/ruby/ruby-on-rails-apis-template/app/mailers/application_mailer.rb +4 -0
  2547. data/templates/ruby/ruby-on-rails-apis-template/app/models/application_record.rb +3 -0
  2548. data/templates/ruby/ruby-on-rails-apis-template/app/models/user.rb +6 -0
  2549. data/templates/ruby/ruby-on-rails-apis-template/app/views/layouts/mailer.html.erb +13 -0
  2550. data/templates/ruby/ruby-on-rails-apis-template/app/views/layouts/mailer.text.erb +1 -0
  2551. data/templates/ruby/ruby-on-rails-apis-template/bin/bundle +3 -0
  2552. data/templates/ruby/ruby-on-rails-apis-template/bin/rails +9 -0
  2553. data/templates/ruby/ruby-on-rails-apis-template/bin/rake +9 -0
  2554. data/templates/ruby/ruby-on-rails-apis-template/bin/setup +34 -0
  2555. data/templates/ruby/ruby-on-rails-apis-template/bin/spring +15 -0
  2556. data/templates/ruby/ruby-on-rails-apis-template/bin/update +29 -0
  2557. data/templates/ruby/ruby-on-rails-apis-template/circle.yml +12 -0
  2558. data/templates/ruby/ruby-on-rails-apis-template/config/application.rb +31 -0
  2559. data/templates/ruby/ruby-on-rails-apis-template/config/boot.rb +3 -0
  2560. data/templates/ruby/ruby-on-rails-apis-template/config/cable.yml +9 -0
  2561. data/templates/ruby/ruby-on-rails-apis-template/config/database.yml +19 -0
  2562. data/templates/ruby/ruby-on-rails-apis-template/config/deploy/production.rb +6 -0
  2563. data/templates/ruby/ruby-on-rails-apis-template/config/deploy.rb +87 -0
  2564. data/templates/ruby/ruby-on-rails-apis-template/config/environment.rb +5 -0
  2565. data/templates/ruby/ruby-on-rails-apis-template/config/environments/development.rb +47 -0
  2566. data/templates/ruby/ruby-on-rails-apis-template/config/environments/production.rb +78 -0
  2567. data/templates/ruby/ruby-on-rails-apis-template/config/environments/test.rb +42 -0
  2568. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/application_controller_renderer.rb +6 -0
  2569. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/backtrace_silencers.rb +7 -0
  2570. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/cors.rb +8 -0
  2571. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/devise.rb +4 -0
  2572. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/devise_token_auth.rb +49 -0
  2573. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/filter_parameter_logging.rb +4 -0
  2574. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/inflections.rb +16 -0
  2575. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/mime_types.rb +4 -0
  2576. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/new_framework_defaults.rb +18 -0
  2577. data/templates/ruby/ruby-on-rails-apis-template/config/initializers/wrap_parameters.rb +14 -0
  2578. data/templates/ruby/ruby-on-rails-apis-template/config/locales/en.yml +2 -0
  2579. data/templates/ruby/ruby-on-rails-apis-template/config/puma.rb +13 -0
  2580. data/templates/ruby/ruby-on-rails-apis-template/config/routes.rb +3 -0
  2581. data/templates/ruby/ruby-on-rails-apis-template/config/secrets.yml +22 -0
  2582. data/templates/ruby/ruby-on-rails-apis-template/config/spring.rb +6 -0
  2583. data/templates/ruby/ruby-on-rails-apis-template/config.ru +5 -0
  2584. data/templates/ruby/ruby-on-rails-apis-template/db/migrate/20160824081533_devise_token_auth_create_users.rb +54 -0
  2585. data/templates/ruby/ruby-on-rails-apis-template/db/schema.rb +46 -0
  2586. data/templates/ruby/ruby-on-rails-apis-template/db/seeds.rb +7 -0
  2587. data/templates/ruby/ruby-on-rails-apis-template/spec/rails_helper.rb +67 -0
  2588. data/templates/ruby/ruby-on-rails-apis-template/spec/spec_helper.rb +11 -0
  2589. data/templates/ruby/ruby-on-rails-boilerplate-template/Capfile +25 -0
  2590. data/templates/ruby/ruby-on-rails-boilerplate-template/Dockerfile +34 -0
  2591. data/templates/ruby/ruby-on-rails-boilerplate-template/Gemfile +121 -0
  2592. data/templates/ruby/ruby-on-rails-boilerplate-template/Gemfile.lock +478 -0
  2593. data/templates/ruby/ruby-on-rails-boilerplate-template/Procfile.dev +4 -0
  2594. data/templates/ruby/ruby-on-rails-boilerplate-template/README.md +57 -0
  2595. data/templates/ruby/ruby-on-rails-boilerplate-template/Rakefile +6 -0
  2596. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/config/esbuild.js +0 -0
  2597. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/config/manifest.js +4 -0
  2598. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/images/admin/000m.jpg +0 -0
  2599. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/images/admin/logo.svg +4 -0
  2600. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/stylesheets/admin/profile.scss +3 -0
  2601. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/stylesheets/admin.bootstrap.scss +3 -0
  2602. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/stylesheets/application.bootstrap.scss +3 -0
  2603. data/templates/ruby/ruby-on-rails-boilerplate-template/app/assets/stylesheets/lib/tabler.min.css +14 -0
  2604. data/templates/ruby/ruby-on-rails-boilerplate-template/app/channels/application_cable/channel.rb +6 -0
  2605. data/templates/ruby/ruby-on-rails-boilerplate-template/app/channels/application_cable/connection.rb +6 -0
  2606. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/base_controller.rb +13 -0
  2607. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/confirmations_controller.rb +32 -0
  2608. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/home_controller.rb +5 -0
  2609. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/omniauth_callbacks_controller.rb +30 -0
  2610. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/passwords_controller.rb +34 -0
  2611. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/profile_controller.rb +41 -0
  2612. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/registrations_controller.rb +62 -0
  2613. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/sessions_controller.rb +29 -0
  2614. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/unlocks_controller.rb +32 -0
  2615. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/admin/users_controller.rb +55 -0
  2616. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/application_controller.rb +5 -0
  2617. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/concerns/active_storage.rb +9 -0
  2618. data/templates/ruby/ruby-on-rails-boilerplate-template/app/controllers/home_controller.rb +5 -0
  2619. data/templates/ruby/ruby-on-rails-boilerplate-template/app/decorators/admins/profile_decorator.rb +13 -0
  2620. data/templates/ruby/ruby-on-rails-boilerplate-template/app/decorators/application_decorator.rb +10 -0
  2621. data/templates/ruby/ruby-on-rails-boilerplate-template/app/helpers/admin/application_helper.rb +33 -0
  2622. data/templates/ruby/ruby-on-rails-boilerplate-template/app/helpers/application_helper.rb +4 -0
  2623. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/admin.js +6 -0
  2624. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/application.js +6 -0
  2625. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/admin/dashboard_controller.js +7 -0
  2626. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/admin/flash_message_controller.js +7 -0
  2627. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/admin/index.js +8 -0
  2628. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/flash_message_controller.js +7 -0
  2629. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/home_controller.js +7 -0
  2630. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/controllers/index.js +8 -0
  2631. data/templates/ruby/ruby-on-rails-boilerplate-template/app/javascript/lib/tabler.min.js +9 -0
  2632. data/templates/ruby/ruby-on-rails-boilerplate-template/app/jobs/application_job.rb +9 -0
  2633. data/templates/ruby/ruby-on-rails-boilerplate-template/app/mailers/admin/application_mailer.rb +5 -0
  2634. data/templates/ruby/ruby-on-rails-boilerplate-template/app/mailers/admin/user_mailer.rb +10 -0
  2635. data/templates/ruby/ruby-on-rails-boilerplate-template/app/mailers/application_mailer.rb +6 -0
  2636. data/templates/ruby/ruby-on-rails-boilerplate-template/app/models/admin.rb +39 -0
  2637. data/templates/ruby/ruby-on-rails-boilerplate-template/app/models/application_record.rb +6 -0
  2638. data/templates/ruby/ruby-on-rails-boilerplate-template/app/models/user.rb +54 -0
  2639. data/templates/ruby/ruby-on-rails-boilerplate-template/app/services/application_service.rb +7 -0
  2640. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_flash_messages.html.erb +11 -0
  2641. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_footer.html.erb +34 -0
  2642. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_javascript_tags.html.erb +29 -0
  2643. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_page_header.html.erb +7 -0
  2644. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_page_header_actions.html.erb +5 -0
  2645. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_page_header_breadcrumb.html.erb +12 -0
  2646. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_pagination.html.erb +24 -0
  2647. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_primary_navbar.html.erb +48 -0
  2648. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_secondary_navbar.html.erb +31 -0
  2649. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/base/_stylesheet_link_tags.html.erb +8 -0
  2650. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/home/index.html.erb +8 -0
  2651. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/password_resets/edit.html.erb +21 -0
  2652. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/password_resets/new.html.erb +17 -0
  2653. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/profile/index.html.erb +61 -0
  2654. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/profile/password.html.erb +65 -0
  2655. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/sessions/new.html.erb +18 -0
  2656. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/user_mailer/password_reset.html.erb +14 -0
  2657. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/user_mailer/password_reset.text.erb +9 -0
  2658. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/users/_form.html.erb +46 -0
  2659. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/users/edit.html.erb +17 -0
  2660. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/users/index.html.erb +72 -0
  2661. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/users/new.html.erb +16 -0
  2662. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/admin/users/show.html.erb +33 -0
  2663. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/confirmations/new.html.erb +16 -0
  2664. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  2665. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/mailer/email_changed.html.erb +7 -0
  2666. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/mailer/password_change.html.erb +3 -0
  2667. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  2668. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  2669. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/sessions/new.html.erb +26 -0
  2670. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/shared/_error_messages.html.erb +15 -0
  2671. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/shared/_links.html.erb +25 -0
  2672. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/devise/unlocks/new.html.erb +16 -0
  2673. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/home/index.html.erb +2 -0
  2674. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/layouts/admin/authentication.html.erb +32 -0
  2675. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/layouts/admin/base.html.erb +29 -0
  2676. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/layouts/application.html.erb +16 -0
  2677. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/layouts/mailer.html.erb +13 -0
  2678. data/templates/ruby/ruby-on-rails-boilerplate-template/app/views/layouts/mailer.text.erb +1 -0
  2679. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/bundle +114 -0
  2680. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/dev +9 -0
  2681. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/importmap +4 -0
  2682. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/rails +4 -0
  2683. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/rake +4 -0
  2684. data/templates/ruby/ruby-on-rails-boilerplate-template/bin/setup +33 -0
  2685. data/templates/ruby/ruby-on-rails-boilerplate-template/config/application.rb +27 -0
  2686. data/templates/ruby/ruby-on-rails-boilerplate-template/config/boot.rb +4 -0
  2687. data/templates/ruby/ruby-on-rails-boilerplate-template/config/cable.yml +10 -0
  2688. data/templates/ruby/ruby-on-rails-boilerplate-template/config/credentials.yml.enc +1 -0
  2689. data/templates/ruby/ruby-on-rails-boilerplate-template/config/database.yml +86 -0
  2690. data/templates/ruby/ruby-on-rails-boilerplate-template/config/deploy/production.rb +56 -0
  2691. data/templates/ruby/ruby-on-rails-boilerplate-template/config/deploy/staging.rb +56 -0
  2692. data/templates/ruby/ruby-on-rails-boilerplate-template/config/deploy/templates/nginx_conf.erb +23 -0
  2693. data/templates/ruby/ruby-on-rails-boilerplate-template/config/deploy/templates/puma.rb.erb +54 -0
  2694. data/templates/ruby/ruby-on-rails-boilerplate-template/config/deploy.rb +95 -0
  2695. data/templates/ruby/ruby-on-rails-boilerplate-template/config/environment.rb +5 -0
  2696. data/templates/ruby/ruby-on-rails-boilerplate-template/config/environments/development.rb +75 -0
  2697. data/templates/ruby/ruby-on-rails-boilerplate-template/config/environments/production.rb +94 -0
  2698. data/templates/ruby/ruby-on-rails-boilerplate-template/config/environments/test.rb +60 -0
  2699. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/assets.rb +13 -0
  2700. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/content_security_policy.rb +25 -0
  2701. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/devise.rb +311 -0
  2702. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/filter_parameter_logging.rb +8 -0
  2703. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/inflections.rb +16 -0
  2704. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/permissions_policy.rb +11 -0
  2705. data/templates/ruby/ruby-on-rails-boilerplate-template/config/initializers/sidekiq.rb +34 -0
  2706. data/templates/ruby/ruby-on-rails-boilerplate-template/config/locales/devise.en.yml +65 -0
  2707. data/templates/ruby/ruby-on-rails-boilerplate-template/config/locales/en.yml +33 -0
  2708. data/templates/ruby/ruby-on-rails-boilerplate-template/config/puma/production.rb +41 -0
  2709. data/templates/ruby/ruby-on-rails-boilerplate-template/config/puma/staging.rb +41 -0
  2710. data/templates/ruby/ruby-on-rails-boilerplate-template/config/puma.rb +43 -0
  2711. data/templates/ruby/ruby-on-rails-boilerplate-template/config/routes.rb +24 -0
  2712. data/templates/ruby/ruby-on-rails-boilerplate-template/config/sidekiq.yml +3 -0
  2713. data/templates/ruby/ruby-on-rails-boilerplate-template/config/storage.yml +34 -0
  2714. data/templates/ruby/ruby-on-rails-boilerplate-template/config.ru +8 -0
  2715. data/templates/ruby/ruby-on-rails-boilerplate-template/db/migrate/20220731033724_create_active_storage_tables.active_storage.rb +57 -0
  2716. data/templates/ruby/ruby-on-rails-boilerplate-template/db/migrate/20221015181021_devise_create_admins.rb +45 -0
  2717. data/templates/ruby/ruby-on-rails-boilerplate-template/db/migrate/20221021163750_devise_create_users.rb +50 -0
  2718. data/templates/ruby/ruby-on-rails-boilerplate-template/db/schema.rb +101 -0
  2719. data/templates/ruby/ruby-on-rails-boilerplate-template/db/seeds.rb +9 -0
  2720. data/templates/ruby/ruby-on-rails-boilerplate-template/docker-compose.yml +80 -0
  2721. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/USAGE +5 -0
  2722. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/scaffold_generator.rb +84 -0
  2723. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/controller.rb.tt +58 -0
  2724. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/erb/_form.html.erb.tt +41 -0
  2725. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/erb/edit.html.erb.tt +17 -0
  2726. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/erb/index.html.erb.tt +74 -0
  2727. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/erb/new.html.erb.tt +16 -0
  2728. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/erb/show.html.erb.tt +37 -0
  2729. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/functional_test.rb.tt +53 -0
  2730. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/generators/admins/scaffold/templates/system_test.rb.tt +52 -0
  2731. data/templates/ruby/ruby-on-rails-boilerplate-template/lib/tasks/auto_annotate_models.rake +61 -0
  2732. data/templates/ruby/ruby-on-rails-boilerplate-template/package.json +17 -0
  2733. data/templates/ruby/ruby-on-rails-boilerplate-template/public/404.html +67 -0
  2734. data/templates/ruby/ruby-on-rails-boilerplate-template/public/422.html +67 -0
  2735. data/templates/ruby/ruby-on-rails-boilerplate-template/public/500.html +66 -0
  2736. data/templates/ruby/ruby-on-rails-boilerplate-template/public/apple-touch-icon-precomposed.png +0 -0
  2737. data/templates/ruby/ruby-on-rails-boilerplate-template/public/apple-touch-icon.png +0 -0
  2738. data/templates/ruby/ruby-on-rails-boilerplate-template/public/favicon.ico +0 -0
  2739. data/templates/ruby/ruby-on-rails-boilerplate-template/public/robots.txt +1 -0
  2740. data/templates/ruby/ruby-on-rails-boilerplate-template/scripts/start.sh +14 -0
  2741. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/factories/admins.rb +6 -0
  2742. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/factories/users.rb +6 -0
  2743. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/models/admin_spec.rb +7 -0
  2744. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/models/user_spec.rb +7 -0
  2745. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/rails_helper.rb +63 -0
  2746. data/templates/ruby/ruby-on-rails-boilerplate-template/spec/spec_helper.rb +94 -0
  2747. data/templates/ruby/ruby-on-rails-boilerplate-template/systemd/puma.service +26 -0
  2748. data/templates/ruby/ruby-on-rails-boilerplate-template/systemd/sidekiq.service +90 -0
  2749. data/templates/ruby/ruby-on-rails-boilerplate-template/yarn.lock +294 -0
  2750. data/templates/rust/advance-rust-template/Cargo.toml +22 -0
  2751. data/templates/rust/advance-rust-template/README.md +81 -0
  2752. data/templates/rust/advance-rust-template/env.example +4 -0
  2753. data/templates/rust/advance-rust-template/src/config.rs +17 -0
  2754. data/templates/rust/advance-rust-template/src/errors.rs +17 -0
  2755. data/templates/rust/advance-rust-template/src/handlers.rs +28 -0
  2756. data/templates/rust/advance-rust-template/src/main.rs +33 -0
  2757. data/templates/rust/advance-rust-template/src/models.rs +1 -0
  2758. data/templates/rust/advance-rust-template/src/routes.rs +10 -0
  2759. data/templates/rust/advance-rust-template/tests/integration.rs +18 -0
  2760. data/templates/rust/basic-rust-template/Cargo.toml +7 -0
  2761. data/templates/rust/basic-rust-template/README.md +38 -0
  2762. data/templates/rust/basic-rust-template/src/main.rs +54 -0
  2763. data/templates/vuejs/javascript/headless-tailwind-template/README.md +60 -0
  2764. data/templates/vuejs/javascript/headless-tailwind-template/e2e/vue.spec.js +8 -0
  2765. data/templates/vuejs/javascript/headless-tailwind-template/eslint.config.js +40 -0
  2766. data/templates/vuejs/javascript/headless-tailwind-template/index.html +13 -0
  2767. data/templates/vuejs/javascript/headless-tailwind-template/jsconfig.json +8 -0
  2768. data/templates/vuejs/javascript/headless-tailwind-template/package.json +47 -0
  2769. data/templates/vuejs/javascript/headless-tailwind-template/playwright.config.js +110 -0
  2770. data/templates/vuejs/javascript/headless-tailwind-template/public/favicon.ico +0 -0
  2771. data/templates/vuejs/javascript/headless-tailwind-template/src/App.vue +26 -0
  2772. data/templates/vuejs/javascript/headless-tailwind-template/src/assets/base.css +86 -0
  2773. data/templates/vuejs/javascript/headless-tailwind-template/src/assets/logo.svg +1 -0
  2774. data/templates/vuejs/javascript/headless-tailwind-template/src/assets/main.css +37 -0
  2775. data/templates/vuejs/javascript/headless-tailwind-template/src/components/HelloWorld.vue +44 -0
  2776. data/templates/vuejs/javascript/headless-tailwind-template/src/components/TheWelcome.vue +95 -0
  2777. data/templates/vuejs/javascript/headless-tailwind-template/src/components/WelcomeItem.vue +86 -0
  2778. data/templates/vuejs/javascript/headless-tailwind-template/src/components/__tests__/HelloWorld.spec.js +11 -0
  2779. data/templates/vuejs/javascript/headless-tailwind-template/src/components/icons/IconCommunity.vue +7 -0
  2780. data/templates/vuejs/javascript/headless-tailwind-template/src/components/icons/IconDocumentation.vue +7 -0
  2781. data/templates/vuejs/javascript/headless-tailwind-template/src/components/icons/IconEcosystem.vue +7 -0
  2782. data/templates/vuejs/javascript/headless-tailwind-template/src/components/icons/IconSupport.vue +7 -0
  2783. data/templates/vuejs/javascript/headless-tailwind-template/src/components/icons/IconTooling.vue +19 -0
  2784. data/templates/vuejs/javascript/headless-tailwind-template/src/components/ui/BaseButton.vue +8 -0
  2785. data/templates/vuejs/javascript/headless-tailwind-template/src/components/ui/BaseCard.vue +6 -0
  2786. data/templates/vuejs/javascript/headless-tailwind-template/src/components/ui/BaseInput.vue +19 -0
  2787. data/templates/vuejs/javascript/headless-tailwind-template/src/components/ui/BaseTextarea.vue +19 -0
  2788. data/templates/vuejs/javascript/headless-tailwind-template/src/main.js +14 -0
  2789. data/templates/vuejs/javascript/headless-tailwind-template/src/router/index.js +23 -0
  2790. data/templates/vuejs/javascript/headless-tailwind-template/src/stores/counter.js +12 -0
  2791. data/templates/vuejs/javascript/headless-tailwind-template/src/views/AboutView.vue +15 -0
  2792. data/templates/vuejs/javascript/headless-tailwind-template/src/views/HomeView.vue +9 -0
  2793. data/templates/vuejs/javascript/headless-tailwind-template/tailwind.config.js +11 -0
  2794. data/templates/vuejs/javascript/headless-tailwind-template/vite.config.js +20 -0
  2795. data/templates/vuejs/javascript/headless-tailwind-template/vitest.config.js +14 -0
  2796. data/templates/vuejs/javascript/no-headless-no-tailwind-template/README.md +58 -0
  2797. data/templates/vuejs/javascript/no-headless-no-tailwind-template/eslint.config.js +34 -0
  2798. data/templates/vuejs/javascript/no-headless-no-tailwind-template/index.html +13 -0
  2799. data/templates/vuejs/javascript/no-headless-no-tailwind-template/jsconfig.json +8 -0
  2800. data/templates/vuejs/javascript/no-headless-no-tailwind-template/nightwatch.conf.cjs +153 -0
  2801. data/templates/vuejs/javascript/no-headless-no-tailwind-template/package.json +47 -0
  2802. data/templates/vuejs/javascript/no-headless-no-tailwind-template/public/favicon.ico +0 -0
  2803. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/App.vue +85 -0
  2804. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/assets/base.css +86 -0
  2805. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/assets/logo.svg +1 -0
  2806. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/assets/main.css +35 -0
  2807. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/HelloWorld.vue +44 -0
  2808. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/TheWelcome.vue +95 -0
  2809. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/WelcomeItem.vue +86 -0
  2810. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/__tests__/HelloWorld.spec.js +11 -0
  2811. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/icons/IconCommunity.vue +7 -0
  2812. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/icons/IconDocumentation.vue +7 -0
  2813. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/icons/IconEcosystem.vue +7 -0
  2814. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/icons/IconSupport.vue +7 -0
  2815. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/components/icons/IconTooling.vue +19 -0
  2816. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/main.js +14 -0
  2817. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/router/index.js +23 -0
  2818. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/stores/counter.js +12 -0
  2819. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/views/AboutView.vue +15 -0
  2820. data/templates/vuejs/javascript/no-headless-no-tailwind-template/src/views/HomeView.vue +9 -0
  2821. data/templates/vuejs/javascript/no-headless-no-tailwind-template/tests/e2e/example.js +11 -0
  2822. data/templates/vuejs/javascript/no-headless-no-tailwind-template/vite.config.js +22 -0
  2823. data/templates/vuejs/javascript/no-headless-no-tailwind-template/vitest.config.js +14 -0
  2824. data/templates/vuejs/typescript/headless-tailwind-template/README.md +64 -0
  2825. data/templates/vuejs/typescript/headless-tailwind-template/e2e/tsconfig.json +4 -0
  2826. data/templates/vuejs/typescript/headless-tailwind-template/e2e/vue.spec.ts +8 -0
  2827. data/templates/vuejs/typescript/headless-tailwind-template/env.d.ts +1 -0
  2828. data/templates/vuejs/typescript/headless-tailwind-template/eslint.config.ts +36 -0
  2829. data/templates/vuejs/typescript/headless-tailwind-template/index.html +13 -0
  2830. data/templates/vuejs/typescript/headless-tailwind-template/package.json +54 -0
  2831. data/templates/vuejs/typescript/headless-tailwind-template/playwright.config.ts +110 -0
  2832. data/templates/vuejs/typescript/headless-tailwind-template/public/favicon.ico +0 -0
  2833. data/templates/vuejs/typescript/headless-tailwind-template/src/App.vue +26 -0
  2834. data/templates/vuejs/typescript/headless-tailwind-template/src/assets/base.css +86 -0
  2835. data/templates/vuejs/typescript/headless-tailwind-template/src/assets/logo.svg +1 -0
  2836. data/templates/vuejs/typescript/headless-tailwind-template/src/assets/main.css +35 -0
  2837. data/templates/vuejs/typescript/headless-tailwind-template/src/components/HelloWorld.vue +41 -0
  2838. data/templates/vuejs/typescript/headless-tailwind-template/src/components/TheWelcome.vue +95 -0
  2839. data/templates/vuejs/typescript/headless-tailwind-template/src/components/WelcomeItem.vue +87 -0
  2840. data/templates/vuejs/typescript/headless-tailwind-template/src/components/__tests__/HelloWorld.spec.ts +11 -0
  2841. data/templates/vuejs/typescript/headless-tailwind-template/src/components/icons/IconCommunity.vue +7 -0
  2842. data/templates/vuejs/typescript/headless-tailwind-template/src/components/icons/IconDocumentation.vue +7 -0
  2843. data/templates/vuejs/typescript/headless-tailwind-template/src/components/icons/IconEcosystem.vue +7 -0
  2844. data/templates/vuejs/typescript/headless-tailwind-template/src/components/icons/IconSupport.vue +7 -0
  2845. data/templates/vuejs/typescript/headless-tailwind-template/src/components/icons/IconTooling.vue +19 -0
  2846. data/templates/vuejs/typescript/headless-tailwind-template/src/components/ui/BaseButton.vue +8 -0
  2847. data/templates/vuejs/typescript/headless-tailwind-template/src/components/ui/BaseCard.vue +6 -0
  2848. data/templates/vuejs/typescript/headless-tailwind-template/src/components/ui/BaseInput.vue +19 -0
  2849. data/templates/vuejs/typescript/headless-tailwind-template/src/components/ui/BaseTextarea.vue +19 -0
  2850. data/templates/vuejs/typescript/headless-tailwind-template/src/main.ts +14 -0
  2851. data/templates/vuejs/typescript/headless-tailwind-template/src/router/index.ts +23 -0
  2852. data/templates/vuejs/typescript/headless-tailwind-template/src/stores/counter.ts +12 -0
  2853. data/templates/vuejs/typescript/headless-tailwind-template/src/views/AboutView.vue +15 -0
  2854. data/templates/vuejs/typescript/headless-tailwind-template/src/views/HomeView.vue +9 -0
  2855. data/templates/vuejs/typescript/headless-tailwind-template/tailwind.config.js +11 -0
  2856. data/templates/vuejs/typescript/headless-tailwind-template/tsconfig.app.json +12 -0
  2857. data/templates/vuejs/typescript/headless-tailwind-template/tsconfig.json +14 -0
  2858. data/templates/vuejs/typescript/headless-tailwind-template/tsconfig.node.json +19 -0
  2859. data/templates/vuejs/typescript/headless-tailwind-template/tsconfig.vitest.json +11 -0
  2860. data/templates/vuejs/typescript/headless-tailwind-template/vite.config.ts +20 -0
  2861. data/templates/vuejs/typescript/headless-tailwind-template/vitest.config.ts +14 -0
  2862. data/templates/vuejs/typescript/no-headless-no-tailwind-template/README.md +64 -0
  2863. data/templates/vuejs/typescript/no-headless-no-tailwind-template/e2e/tsconfig.json +4 -0
  2864. data/templates/vuejs/typescript/no-headless-no-tailwind-template/e2e/vue.spec.ts +8 -0
  2865. data/templates/vuejs/typescript/no-headless-no-tailwind-template/env.d.ts +1 -0
  2866. data/templates/vuejs/typescript/no-headless-no-tailwind-template/eslint.config.ts +36 -0
  2867. data/templates/vuejs/typescript/no-headless-no-tailwind-template/index.html +13 -0
  2868. data/templates/vuejs/typescript/no-headless-no-tailwind-template/package.json +51 -0
  2869. data/templates/vuejs/typescript/no-headless-no-tailwind-template/playwright.config.ts +110 -0
  2870. data/templates/vuejs/typescript/no-headless-no-tailwind-template/public/favicon.ico +0 -0
  2871. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/App.vue +85 -0
  2872. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/assets/base.css +86 -0
  2873. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/assets/logo.svg +1 -0
  2874. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/assets/main.css +35 -0
  2875. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/HelloWorld.vue +41 -0
  2876. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/TheWelcome.vue +95 -0
  2877. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/WelcomeItem.vue +87 -0
  2878. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/__tests__/HelloWorld.spec.ts +11 -0
  2879. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/icons/IconCommunity.vue +7 -0
  2880. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/icons/IconDocumentation.vue +7 -0
  2881. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/icons/IconEcosystem.vue +7 -0
  2882. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/icons/IconSupport.vue +7 -0
  2883. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/components/icons/IconTooling.vue +19 -0
  2884. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/main.ts +14 -0
  2885. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/router/index.ts +23 -0
  2886. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/stores/counter.ts +12 -0
  2887. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/views/AboutView.vue +15 -0
  2888. data/templates/vuejs/typescript/no-headless-no-tailwind-template/src/views/HomeView.vue +9 -0
  2889. data/templates/vuejs/typescript/no-headless-no-tailwind-template/tsconfig.app.json +12 -0
  2890. data/templates/vuejs/typescript/no-headless-no-tailwind-template/tsconfig.json +14 -0
  2891. data/templates/vuejs/typescript/no-headless-no-tailwind-template/tsconfig.node.json +19 -0
  2892. data/templates/vuejs/typescript/no-headless-no-tailwind-template/tsconfig.vitest.json +11 -0
  2893. data/templates/vuejs/typescript/no-headless-no-tailwind-template/vite.config.ts +20 -0
  2894. data/templates/vuejs/typescript/no-headless-no-tailwind-template/vitest.config.ts +14 -0
  2895. metadata +2991 -0
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],t):(e=e||self).Util=t(e.jQuery)}(this,function(o){"use strict";o=o&&o.hasOwnProperty("default")?o.default:o;var t="transitionend";function e(e){var t=this,n=!1;return o(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(t)},e),this}var l={TRANSITION_END:"bsTransitionEnd",getUID:function(e){for(;e+=~~(1e6*Math.random()),document.getElementById(e););return e},getSelectorFromElement:function(e){var t=e.getAttribute("data-target");if(!t||"#"===t){var n=e.getAttribute("href");t=n&&"#"!==n?n.trim():""}try{return document.querySelector(t)?t:null}catch(e){return null}},getTransitionDurationFromElement:function(e){if(!e)return 0;var t=o(e).css("transition-duration"),n=o(e).css("transition-delay"),r=parseFloat(t),i=parseFloat(n);return r||i?(t=t.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(t)+parseFloat(n))):0},reflow:function(e){return e.offsetHeight},triggerTransitionEnd:function(e){o(e).trigger(t)},supportsTransitionEnd:function(){return Boolean(t)},isElement:function(e){return(e[0]||e).nodeType},typeCheckConfig:function(e,t,n){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var i=n[r],o=t[r],a=o&&l.isElement(o)?"element":(s=o,{}.toString.call(s).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(i).test(a))throw new Error(e.toUpperCase()+': Option "'+r+'" provided type "'+a+'" but expected type "'+i+'".')}var s},findShadowRoot:function(e){if(!document.documentElement.attachShadow)return null;if("function"!=typeof e.getRootNode)return e instanceof ShadowRoot?e:e.parentNode?l.findShadowRoot(e.parentNode):null;var t=e.getRootNode();return t instanceof ShadowRoot?t:null}};return o.fn.emulateTransitionEnd=e,o.event.special[l.TRANSITION_END]={bindType:t,delegateType:t,handle:function(e){if(o(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}},l}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","./util.js"],t):(e=e||self).Collapse=t(e.jQuery,e.Util)}(this,function(l,u){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(i){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},t=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),t.forEach(function(e){var t,n,r;t=i,r=o[n=e],n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r})}return i}l=l&&l.hasOwnProperty("default")?l.default:l,u=u&&u.hasOwnProperty("default")?u.default:u;var t="collapse",c="bs.collapse",e="."+c,n=l.fn[t],o={toggle:!0,parent:""},a={toggle:"boolean",parent:"(string|element)"},f={SHOW:"show"+e,SHOWN:"shown"+e,HIDE:"hide"+e,HIDDEN:"hidden"+e,CLICK_DATA_API:"click"+e+".data-api"},h="show",d="collapse",g="collapsing",p="collapsed",m="width",_="height",y=".show, .collapsing",v='[data-toggle="collapse"]',s=function(){function s(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(v)),r=0,i=n.length;r<i;r++){var o=n[r],a=u.getSelectorFromElement(o),s=[].slice.call(document.querySelectorAll(a)).filter(function(e){return e===t});null!==a&&0<s.length&&(this._selector=a,this._triggerArray.push(o))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=s.prototype;return e.toggle=function(){l(this._element).hasClass(h)?this.hide():this.show()},e.show=function(){var e,t,n=this;if(!this._isTransitioning&&!l(this._element).hasClass(h)&&(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(y)).filter(function(e){return"string"==typeof n._config.parent?e.getAttribute("data-parent")===n._config.parent:e.classList.contains(d)})).length&&(e=null),!(e&&(t=l(e).not(this._selector).data(c))&&t._isTransitioning))){var r=l.Event(f.SHOW);if(l(this._element).trigger(r),!r.isDefaultPrevented()){e&&(s._jQueryInterface.call(l(e).not(this._selector),"hide"),t||l(e).data(c,null));var i=this._getDimension();l(this._element).removeClass(d).addClass(g),this._element.style[i]=0,this._triggerArray.length&&l(this._triggerArray).removeClass(p).attr("aria-expanded",!0),this.setTransitioning(!0);var o="scroll"+(i[0].toUpperCase()+i.slice(1)),a=u.getTransitionDurationFromElement(this._element);l(this._element).one(u.TRANSITION_END,function(){l(n._element).removeClass(g).addClass(d).addClass(h),n._element.style[i]="",n.setTransitioning(!1),l(n._element).trigger(f.SHOWN)}).emulateTransitionEnd(a),this._element.style[i]=this._element[o]+"px"}}},e.hide=function(){var e=this;if(!this._isTransitioning&&l(this._element).hasClass(h)){var t=l.Event(f.HIDE);if(l(this._element).trigger(t),!t.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",u.reflow(this._element),l(this._element).addClass(g).removeClass(d).removeClass(h);var r=this._triggerArray.length;if(0<r)for(var i=0;i<r;i++){var o=this._triggerArray[i],a=u.getSelectorFromElement(o);if(null!==a)l([].slice.call(document.querySelectorAll(a))).hasClass(h)||l(o).addClass(p).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var s=u.getTransitionDurationFromElement(this._element);l(this._element).one(u.TRANSITION_END,function(){e.setTransitioning(!1),l(e._element).removeClass(g).addClass(d).trigger(f.HIDDEN)}).emulateTransitionEnd(s)}}},e.setTransitioning=function(e){this._isTransitioning=e},e.dispose=function(){l.removeData(this._element,c),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(e){return(e=i({},o,e)).toggle=Boolean(e.toggle),u.typeCheckConfig(t,e,a),e},e._getDimension=function(){return l(this._element).hasClass(m)?m:_},e._getParent=function(){var e,n=this;u.isElement(this._config.parent)?(e=this._config.parent,void 0!==this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var t='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',r=[].slice.call(e.querySelectorAll(t));return l(r).each(function(e,t){n._addAriaAndCollapsedClass(s._getTargetFromElement(t),[t])}),e},e._addAriaAndCollapsedClass=function(e,t){var n=l(e).hasClass(h);t.length&&l(t).toggleClass(p,!n).attr("aria-expanded",n)},s._getTargetFromElement=function(e){var t=u.getSelectorFromElement(e);return t?document.querySelector(t):null},s._jQueryInterface=function(r){return this.each(function(){var e=l(this),t=e.data(c),n=i({},o,e.data(),"object"==typeof r&&r?r:{});if(!t&&n.toggle&&/show|hide/.test(r)&&(n.toggle=!1),t||(t=new s(this,n),e.data(c,t)),"string"==typeof r){if(void 0===t[r])throw new TypeError('No method named "'+r+'"');t[r]()}})},function(e,t,n){t&&r(e.prototype,t),n&&r(e,n)}(s,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return o}}]),s}();return l(document).on(f.CLICK_DATA_API,v,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var n=l(this),t=u.getSelectorFromElement(this),r=[].slice.call(document.querySelectorAll(t));l(r).each(function(){var e=l(this),t=e.data(c)?"toggle":n.data();s._jQueryInterface.call(e,t)})}),l.fn[t]=s._jQueryInterface,l.fn[t].Constructor=s,l.fn[t].noConflict=function(){return l.fn[t]=n,s._jQueryInterface},s}),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("jquery"),require("popper.js"),require("./util.js")):"function"==typeof define&&define.amd?define(["jquery","popper.js","./util.js"],t):(e=e||self).Dropdown=t(e.jQuery,e.Popper,e.Util)}(this,function(c,o,a){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(i){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},t=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),t.forEach(function(e){var t,n,r;t=i,r=o[n=e],n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r})}return i}c=c&&c.hasOwnProperty("default")?c.default:c,o=o&&o.hasOwnProperty("default")?o.default:o,a=a&&a.hasOwnProperty("default")?a.default:a;var t="dropdown",f="bs.dropdown",i="."+f,e=".data-api",s=c.fn[t],l=new RegExp("38|40|27"),h={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,CLICK:"click"+i,CLICK_DATA_API:"click"+i+e,KEYDOWN_DATA_API:"keydown"+i+e,KEYUP_DATA_API:"keyup"+i+e},d="disabled",g="show",p="dropup",m="dropright",_="dropleft",y="dropdown-menu-right",v="position-static",C='[data-toggle="dropdown"]',u=".dropdown form",E=".dropdown-menu",b=".navbar-nav",w=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",A="top-start",D="top-end",T="bottom-start",P="bottom-end",I="right-start",O="left-start",S={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},j={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},N=function(){function u(e,t){this._element=e,this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=u.prototype;return e.toggle=function(){if(!this._element.disabled&&!c(this._element).hasClass(d)){var e=u._getParentFromElement(this._element),t=c(this._menu).hasClass(g);if(u._clearMenus(),!t){var n={relatedTarget:this._element},r=c.Event(h.SHOW,n);if(c(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if(void 0===o)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var i=this._element;"parent"===this._config.reference?i=e:a.isElement(this._config.reference)&&(i=this._config.reference,void 0!==this._config.reference.jquery&&(i=this._config.reference[0])),"scrollParent"!==this._config.boundary&&c(e).addClass(v),this._popper=new o(i,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===c(e).closest(b).length&&c(document.body).children().on("mouseover",null,c.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),c(this._menu).toggleClass(g),c(e).toggleClass(g).trigger(c.Event(h.SHOWN,n))}}}},e.show=function(){if(!(this._element.disabled||c(this._element).hasClass(d)||c(this._menu).hasClass(g))){var e={relatedTarget:this._element},t=c.Event(h.SHOW,e),n=u._getParentFromElement(this._element);c(n).trigger(t),t.isDefaultPrevented()||(c(this._menu).toggleClass(g),c(n).toggleClass(g).trigger(c.Event(h.SHOWN,e)))}},e.hide=function(){if(!this._element.disabled&&!c(this._element).hasClass(d)&&c(this._menu).hasClass(g)){var e={relatedTarget:this._element},t=c.Event(h.HIDE,e),n=u._getParentFromElement(this._element);c(n).trigger(t),t.isDefaultPrevented()||(c(this._menu).toggleClass(g),c(n).toggleClass(g).trigger(c.Event(h.HIDDEN,e)))}},e.dispose=function(){c.removeData(this._element,f),c(this._element).off(i),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;c(this._element).on(h.CLICK,function(e){e.preventDefault(),e.stopPropagation(),t.toggle()})},e._getConfig=function(e){return e=n({},this.constructor.Default,c(this._element).data(),e),a.typeCheckConfig(t,e,this.constructor.DefaultType),e},e._getMenuElement=function(){if(!this._menu){var e=u._getParentFromElement(this._element);e&&(this._menu=e.querySelector(E))}return this._menu},e._getPlacement=function(){var e=c(this._element.parentNode),t=T;return e.hasClass(p)?(t=A,c(this._menu).hasClass(y)&&(t=D)):e.hasClass(m)?t=I:e.hasClass(_)?t=O:c(this._menu).hasClass(y)&&(t=P),t},e._detectNavbar=function(){return 0<c(this._element).closest(".navbar").length},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=n({},e.offsets,t._config.offset(e.offsets,t._element)||{}),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),e},u._jQueryInterface=function(t){return this.each(function(){var e=c(this).data(f);if(e||(e=new u(this,"object"==typeof t?t:null),c(this).data(f,e)),"string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}})},u._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var t=[].slice.call(document.querySelectorAll(C)),n=0,r=t.length;n<r;n++){var i=u._getParentFromElement(t[n]),o=c(t[n]).data(f),a={relatedTarget:t[n]};if(e&&"click"===e.type&&(a.clickEvent=e),o){var s=o._menu;if(c(i).hasClass(g)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&c.contains(i,e.target))){var l=c.Event(h.HIDE,a);c(i).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&c(document.body).children().off("mouseover",null,c.noop),t[n].setAttribute("aria-expanded","false"),c(s).removeClass(g),c(i).removeClass(g).trigger(c.Event(h.HIDDEN,a)))}}}},u._getParentFromElement=function(e){var t,n=a.getSelectorFromElement(e);return n&&(t=document.querySelector(n)),t||e.parentNode},u._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||c(e.target).closest(E).length)):l.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!c(this).hasClass(d))){var t=u._getParentFromElement(this),n=c(t).hasClass(g);if(n&&(!n||27!==e.which&&32!==e.which)){var r=[].slice.call(t.querySelectorAll(w));if(0!==r.length){var i=r.indexOf(e.target);38===e.which&&0<i&&i--,40===e.which&&i<r.length-1&&i++,i<0&&(i=0),r[i].focus()}}else{if(27===e.which){var o=t.querySelector(C);c(o).trigger("focus")}c(this).trigger("click")}}},function(e,t,n){t&&r(e.prototype,t),n&&r(e,n)}(u,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return S}},{key:"DefaultType",get:function(){return j}}]),u}();return c(document).on(h.KEYDOWN_DATA_API,C,N._dataApiKeydownHandler).on(h.KEYDOWN_DATA_API,E,N._dataApiKeydownHandler).on(h.CLICK_DATA_API+" "+h.KEYUP_DATA_API,N._clearMenus).on(h.CLICK_DATA_API,C,function(e){e.preventDefault(),e.stopPropagation(),N._jQueryInterface.call(c(this),"toggle")}).on(h.CLICK_DATA_API,u,function(e){e.stopPropagation()}),c.fn[t]=N._jQueryInterface,c.fn[t].Constructor=N,c.fn[t].noConflict=function(){return c.fn[t]=s,N._jQueryInterface},N});
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwuanMiLCJjb2xsYXBzZS5qcyIsImRyb3Bkb3duLmpzIl0sIm5hbWVzIjpbImdsb2JhbCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJVdGlsIiwialF1ZXJ5IiwidGhpcyIsIiQiLCJoYXNPd25Qcm9wZXJ0eSIsIlRSQU5TSVRJT05fRU5EIiwidHJhbnNpdGlvbkVuZEVtdWxhdG9yIiwiZHVyYXRpb24iLCJfdGhpcyIsImNhbGxlZCIsIm9uZSIsInNldFRpbWVvdXQiLCJ0cmlnZ2VyVHJhbnNpdGlvbkVuZCIsImdldFVJRCIsInByZWZpeCIsIk1hdGgiLCJyYW5kb20iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCIsImVsZW1lbnQiLCJzZWxlY3RvciIsImdldEF0dHJpYnV0ZSIsImhyZWZBdHRyIiwidHJpbSIsInF1ZXJ5U2VsZWN0b3IiLCJlcnIiLCJnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCIsInRyYW5zaXRpb25EdXJhdGlvbiIsImNzcyIsInRyYW5zaXRpb25EZWxheSIsImZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uIiwicGFyc2VGbG9hdCIsImZsb2F0VHJhbnNpdGlvbkRlbGF5Iiwic3BsaXQiLCJyZWZsb3ciLCJvZmZzZXRIZWlnaHQiLCJ0cmlnZ2VyIiwic3VwcG9ydHNUcmFuc2l0aW9uRW5kIiwiQm9vbGVhbiIsImlzRWxlbWVudCIsIm9iaiIsIm5vZGVUeXBlIiwidHlwZUNoZWNrQ29uZmlnIiwiY29tcG9uZW50TmFtZSIsImNvbmZpZyIsImNvbmZpZ1R5cGVzIiwicHJvcGVydHkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiZXhwZWN0ZWRUeXBlcyIsInZhbHVlIiwidmFsdWVUeXBlIiwidG9TdHJpbmciLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwiUmVnRXhwIiwidGVzdCIsIkVycm9yIiwidG9VcHBlckNhc2UiLCJmaW5kU2hhZG93Um9vdCIsImRvY3VtZW50RWxlbWVudCIsImF0dGFjaFNoYWRvdyIsImdldFJvb3ROb2RlIiwiU2hhZG93Um9vdCIsInBhcmVudE5vZGUiLCJyb290IiwiZm4iLCJlbXVsYXRlVHJhbnNpdGlvbkVuZCIsImV2ZW50Iiwic3BlY2lhbCIsImJpbmRUeXBlIiwiZGVsZWdhdGVUeXBlIiwiaGFuZGxlIiwidGFyZ2V0IiwiaXMiLCJoYW5kbGVPYmoiLCJoYW5kbGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJDb2xsYXBzZSIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImRlZmluZVByb3BlcnR5Iiwia2V5IiwiX29iamVjdFNwcmVhZCIsInNvdXJjZSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiY29uY2F0IiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZm9yRWFjaCIsIk5BTUUiLCJEQVRBX0tFWSIsIkVWRU5UX0tFWSIsIkpRVUVSWV9OT19DT05GTElDVCIsIkRlZmF1bHQiLCJ0b2dnbGUiLCJwYXJlbnQiLCJEZWZhdWx0VHlwZSIsIkV2ZW50IiwiU0hPVyIsIlNIT1dOIiwiSElERSIsIkhJRERFTiIsIkNMSUNLX0RBVEFfQVBJIiwiQ2xhc3NOYW1lIiwiRGltZW5zaW9uIiwiU2VsZWN0b3IiLCJfaXNUcmFuc2l0aW9uaW5nIiwiX2VsZW1lbnQiLCJfY29uZmlnIiwiX2dldENvbmZpZyIsIl90cmlnZ2VyQXJyYXkiLCJzbGljZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpZCIsInRvZ2dsZUxpc3QiLCJsZW4iLCJlbGVtIiwiZmlsdGVyRWxlbWVudCIsImZvdW5kRWxlbSIsIl9zZWxlY3RvciIsInB1c2giLCJfcGFyZW50IiwiX2dldFBhcmVudCIsIl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MiLCJfcHJvdG8iLCJoYXNDbGFzcyIsImhpZGUiLCJzaG93IiwiYWN0aXZlcyIsImFjdGl2ZXNEYXRhIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJub3QiLCJkYXRhIiwic3RhcnRFdmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIsIl9qUXVlcnlJbnRlcmZhY2UiLCJkaW1lbnNpb24iLCJfZ2V0RGltZW5zaW9uIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInN0eWxlIiwiYXR0ciIsInNldFRyYW5zaXRpb25pbmciLCJzY3JvbGxTaXplIiwiX3RoaXMyIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidHJpZ2dlckFycmF5TGVuZ3RoIiwiaXNUcmFuc2l0aW9uaW5nIiwiZGlzcG9zZSIsInJlbW92ZURhdGEiLCJfdGhpczMiLCJqcXVlcnkiLCJjaGlsZHJlbiIsImVhY2giLCJfZ2V0VGFyZ2V0RnJvbUVsZW1lbnQiLCJ0cmlnZ2VyQXJyYXkiLCJpc09wZW4iLCJ0b2dnbGVDbGFzcyIsIiR0aGlzIiwiVHlwZUVycm9yIiwiQ29uc3RydWN0b3IiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY3JlYXRlQ2xhc3MiLCJnZXQiLCJvbiIsImN1cnJlbnRUYXJnZXQiLCJ0YWdOYW1lIiwicHJldmVudERlZmF1bHQiLCIkdHJpZ2dlciIsInNlbGVjdG9ycyIsIiR0YXJnZXQiLCJub0NvbmZsaWN0IiwiRHJvcGRvd24iLCJQb3BwZXIiLCJEQVRBX0FQSV9LRVkiLCJSRUdFWFBfS0VZRE9XTiIsIkFSUk9XX1VQX0tFWUNPREUiLCJDTElDSyIsIktFWURPV05fREFUQV9BUEkiLCJLRVlVUF9EQVRBX0FQSSIsIkF0dGFjaG1lbnRNYXAiLCJvZmZzZXQiLCJmbGlwIiwiYm91bmRhcnkiLCJyZWZlcmVuY2UiLCJkaXNwbGF5IiwiX3BvcHBlciIsIl9tZW51IiwiX2dldE1lbnVFbGVtZW50IiwiX2luTmF2YmFyIiwiX2RldGVjdE5hdmJhciIsIl9hZGRFdmVudExpc3RlbmVycyIsImRpc2FibGVkIiwiX2dldFBhcmVudEZyb21FbGVtZW50IiwiaXNBY3RpdmUiLCJfY2xlYXJNZW51cyIsInJlbGF0ZWRUYXJnZXQiLCJzaG93RXZlbnQiLCJyZWZlcmVuY2VFbGVtZW50IiwiX2dldFBvcHBlckNvbmZpZyIsImNsb3Nlc3QiLCJib2R5Iiwibm9vcCIsImZvY3VzIiwic2V0QXR0cmlidXRlIiwiaGlkZUV2ZW50Iiwib2ZmIiwiZGVzdHJveSIsInVwZGF0ZSIsInNjaGVkdWxlVXBkYXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiY29uc3RydWN0b3IiLCJfZ2V0UGxhY2VtZW50IiwiJHBhcmVudERyb3Bkb3duIiwicGxhY2VtZW50IiwiX2dldE9mZnNldCIsIm9mZnNldHMiLCJwb3BwZXJDb25maWciLCJtb2RpZmllcnMiLCJlbmFibGVkIiwicHJldmVudE92ZXJmbG93IiwiYm91bmRhcmllc0VsZW1lbnQiLCJhcHBseVN0eWxlIiwid2hpY2giLCJ0eXBlIiwidG9nZ2xlcyIsImNvbnRleHQiLCJjbGlja0V2ZW50IiwiZHJvcGRvd25NZW51IiwiX2RhdGFBcGlLZXlkb3duSGFuZGxlciIsIml0ZW1zIiwiaW5kZXgiLCJpbmRleE9mIiwiZSJdLCJtYXBwaW5ncyI6IkNBS0EsU0FBQUEsRUFBQUMsR0FDQSxpQkFBQUMsU0FBQSxvQkFBQUMsT0FBQUEsT0FBQUQsUUFBQUQsRUFBQUcsUUFBQSxXQUNBLG1CQUFBQyxRQUFBQSxPQUFBQyxJQUFBRCxPQUFBLENBQUEsVUFBQUosSUFDQUQsRUFBQUEsR0FBQU8sTUFBQUMsS0FBQVAsRUFBQUQsRUFBQVMsUUFIQSxDQUlBQyxLQUFBLFNBQUFDLEdBQUEsYUFFQUEsRUFBQUEsR0FBQUEsRUFBQUMsZUFBQSxXQUFBRCxFQUFBLFFBQUFBLEVBY0EsSUFBQUUsRUFBQSxnQkFzQkEsU0FBQUMsRUFBQUMsR0FDQSxJQUFBQyxFQUFBTixLQUVBTyxHQUFBLEVBU0EsT0FSQU4sRUFBQUQsTUFBQVEsSUFBQVYsRUFBQUssZUFBQSxXQUNBSSxHQUFBLElBRUFFLFdBQUEsV0FDQUYsR0FD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QXliQSxPQXRCQXhMLEVBQUFjLFVBQUFrSyxHQUFBckUsRUFBQW1GLGlCQUFBM0UsRUFBQXFFLEVBQUF5RCx3QkFBQWpFLEdBQUFyRSxFQUFBbUYsaUJBQUEzRSxFQUFBcUUsRUFBQXlELHdCQUFBakUsR0FBQXJFLEVBQUFLLGVBQUEsSUFBQUwsRUFBQW9GLGVBQUFQLEVBQUF1QixhQUFBL0IsR0FBQXJFLEVBQUFLLGVBQUFHLEVBQUEsU0FBQWhELEdBQ0FBLEVBQUFnSCxpQkFDQWhILEVBQUEySixrQkFFQXRDLEVBQUF0QyxpQkFBQW5HLEtBQUEvQyxFQUFBRCxNQUFBLFlBQ0FpTCxHQUFBckUsRUFBQUssZUFBQUcsRUFBQSxTQUFBa0ksR0FDQUEsRUFBQXZCLG9CQVFBOU4sRUFBQWlFLEdBQUFrQyxHQUFBcUYsRUFBQXRDLGlCQUNBbEosRUFBQWlFLEdBQUFrQyxHQUFBd0UsWUFBQWEsRUFFQXhMLEVBQUFpRSxHQUFBa0MsR0FBQW9GLFdBQUEsV0FFQSxPQURBdkwsRUFBQWlFLEdBQUFrQyxHQUFBRyxFQUNBa0YsRUFBQXRDLGtCQUdBc0MiLCJmaWxlIjoiYm9vdHN0cmFwLm1pbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICAqIEJvb3RzdHJhcCB1dGlsLmpzIHY0LjMuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpXG4gICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSkgOlxuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGdsb2JhbC5VdGlsID0gZmFjdG9yeShnbG9iYWwualF1ZXJ5KSk7XG59KHRoaXMsIGZ1bmN0aW9uICgkKSB7ICd1c2Ugc3RyaWN0JztcblxuICAkID0gJCAmJiAkLmhhc093blByb3BlcnR5KCdkZWZhdWx0JykgPyAkWydkZWZhdWx0J10gOiAkO1xuXG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBCb290c3RyYXAgKHY0LjMuMSk6IHV0aWwuanNcbiAgICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogUHJpdmF0ZSBUcmFuc2l0aW9uRW5kIEhlbHBlcnNcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG4gIHZhciBUUkFOU0lUSU9OX0VORCA9ICd0cmFuc2l0aW9uZW5kJztcbiAgdmFyIE1BWF9VSUQgPSAxMDAwMDAwO1xuICB2YXIgTUlMTElTRUNPTkRTX01VTFRJUExJRVIgPSAxMDAwOyAvLyBTaG91dG91dCBBbmd1c0Nyb2xsIChodHRwczovL2dvby5nbC9weHdRR3ApXG5cbiAgZnVuY3Rpb24gdG9UeXBlKG9iaikge1xuICAgIHJldHVybiB7fS50b1N0cmluZy5jYWxsKG9iaikubWF0Y2goL1xccyhbYS16XSspL2kpWzFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRTcGVjaWFsVHJhbnNpdGlvbkVuZEV2ZW50KCkge1xuICAgIHJldHVybiB7XG4gICAgICBiaW5kVHlwZTogVFJBTlNJVElPTl9FTkQsXG4gICAgICBkZWxlZ2F0ZVR5cGU6IFRSQU5TSVRJT05fRU5ELFxuICAgICAgaGFuZGxlOiBmdW5jdGlvbiBoYW5kbGUoZXZlbnQpIHtcbiAgICAgICAgaWYgKCQoZXZlbnQudGFyZ2V0KS5pcyh0aGlzKSkge1xuICAgICAgICAgIHJldHVybiBldmVudC5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1yZXN0LXBhcmFtc1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZmluZWRcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNpdGlvbkVuZEVtdWxhdG9yKGR1cmF0aW9uKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgICAkKHRoaXMpLm9uZShVdGlsLlRSQU5TSVRJT05fRU5ELCBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgICAgVXRpbC50cmlnZ2VyVHJhbnNpdGlvbkVuZChfdGhpcyk7XG4gICAgICB9XG4gICAgfSwgZHVyYXRpb24pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0VHJhbnNpdGlvbkVuZFN1cHBvcnQoKSB7XG4gICAgJC5mbi5lbXVsYXRlVHJhbnNpdGlvbkVuZCA9IHRyYW5zaXRpb25FbmRFbXVsYXRvcjtcbiAgICAkLmV2ZW50LnNwZWNpYWxbVXRpbC5UUkFOU0lUSU9OX0VORF0gPSBnZXRTcGVjaWFsVHJhbnNpdGlvbkVuZEV2ZW50KCk7XG4gIH1cbiAgLyoqXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIFB1YmxpYyBVdGlsIEFwaVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuXG4gIHZhciBVdGlsID0ge1xuICAgIFRSQU5TSVRJT05fRU5EOiAnYnNUcmFuc2l0aW9uRW5kJyxcbiAgICBnZXRVSUQ6IGZ1bmN0aW9uIGdldFVJRChwcmVmaXgpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgcHJlZml4ICs9IH5+KE1hdGgucmFuZG9tKCkgKiBNQVhfVUlEKTsgLy8gXCJ+flwiIGFjdHMgbGlrZSBhIGZhc3RlciBNYXRoLmZsb29yKCkgaGVyZVxuICAgICAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSk7XG5cbiAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfSxcbiAgICBnZXRTZWxlY3RvckZyb21FbGVtZW50OiBmdW5jdGlvbiBnZXRTZWxlY3RvckZyb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgIHZhciBzZWxlY3RvciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXRhcmdldCcpO1xuXG4gICAgICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yID09PSAnIycpIHtcbiAgICAgICAgdmFyIGhyZWZBdHRyID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICAgICAgc2VsZWN0b3IgPSBocmVmQXR0ciAmJiBocmVmQXR0ciAhPT0gJyMnID8gaHJlZkF0dHIudHJpbSgpIDogJyc7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSA/IHNlbGVjdG9yIDogbnVsbDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50OiBmdW5jdGlvbiBnZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudChlbGVtZW50KSB7XG4gICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IC8vIEdldCB0cmFuc2l0aW9uLWR1cmF0aW9uIG9mIHRoZSBlbGVtZW50XG5cblxuICAgICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbiA9ICQoZWxlbWVudCkuY3NzKCd0cmFuc2l0aW9uLWR1cmF0aW9uJyk7XG4gICAgICB2YXIgdHJhbnNpdGlvbkRlbGF5ID0gJChlbGVtZW50KS5jc3MoJ3RyYW5zaXRpb24tZGVsYXknKTtcbiAgICAgIHZhciBmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiA9IHBhcnNlRmxvYXQodHJhbnNpdGlvbkR1cmF0aW9uKTtcbiAgICAgIHZhciBmbG9hdFRyYW5zaXRpb25EZWxheSA9IHBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KTsgLy8gUmV0dXJuIDAgaWYgZWxlbWVudCBvciB0cmFuc2l0aW9uIGR1cmF0aW9uIGlzIG5vdCBmb3VuZFxuXG4gICAgICBpZiAoIWZsb2F0VHJhbnNpdGlvbkR1cmF0aW9uICYmICFmbG9hdFRyYW5zaXRpb25EZWxheSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gLy8gSWYgbXVsdGlwbGUgZHVyYXRpb25zIGFyZSBkZWZpbmVkLCB0YWtlIHRoZSBmaXJzdFxuXG5cbiAgICAgIHRyYW5zaXRpb25EdXJhdGlvbiA9IHRyYW5zaXRpb25EdXJhdGlvbi5zcGxpdCgnLCcpWzBdO1xuICAgICAgdHJhbnNpdGlvbkRlbGF5ID0gdHJhbnNpdGlvbkRlbGF5LnNwbGl0KCcsJylbMF07XG4gICAgICByZXR1cm4gKHBhcnNlRmxvYXQodHJhbnNpdGlvbkR1cmF0aW9uKSArIHBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KSkgKiBNSUxMSVNFQ09ORFNfTVVMVElQTElFUjtcbiAgICB9LFxuICAgIHJlZmxvdzogZnVuY3Rpb24gcmVmbG93KGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICB9LFxuICAgIHRyaWdnZXJUcmFuc2l0aW9uRW5kOiBmdW5jdGlvbiB0cmlnZ2VyVHJhbnNpdGlvbkVuZChlbGVtZW50KSB7XG4gICAgICAkKGVsZW1lbnQpLnRyaWdnZXIoVFJBTlNJVElPTl9FTkQpO1xuICAgIH0sXG4gICAgLy8gVE9ETzogUmVtb3ZlIGluIHY1XG4gICAgc3VwcG9ydHNUcmFuc2l0aW9uRW5kOiBmdW5jdGlvbiBzdXBwb3J0c1RyYW5zaXRpb25FbmQoKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihUUkFOU0lUSU9OX0VORCk7XG4gICAgfSxcbiAgICBpc0VsZW1lbnQ6IGZ1bmN0aW9uIGlzRWxlbWVudChvYmopIHtcbiAgICAgIHJldHVybiAob2JqWzBdIHx8IG9iaikubm9kZVR5cGU7XG4gICAgfSxcbiAgICB0eXBlQ2hlY2tDb25maWc6IGZ1bmN0aW9uIHR5cGVDaGVja0NvbmZpZyhjb21wb25lbnROYW1lLCBjb25maWcsIGNvbmZpZ1R5cGVzKSB7XG4gICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBjb25maWdUeXBlcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZ1R5cGVzLCBwcm9wZXJ0eSkpIHtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRUeXBlcyA9IGNvbmZpZ1R5cGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBjb25maWdbcHJvcGVydHldO1xuICAgICAgICAgIHZhciB2YWx1ZVR5cGUgPSB2YWx1ZSAmJiBVdGlsLmlzRWxlbWVudCh2YWx1ZSkgPyAnZWxlbWVudCcgOiB0b1R5cGUodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKCFuZXcgUmVnRXhwKGV4cGVjdGVkVHlwZXMpLnRlc3QodmFsdWVUeXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGNvbXBvbmVudE5hbWUudG9VcHBlckNhc2UoKSArIFwiOiBcIiArIChcIk9wdGlvbiBcXFwiXCIgKyBwcm9wZXJ0eSArIFwiXFxcIiBwcm92aWRlZCB0eXBlIFxcXCJcIiArIHZhbHVlVHlwZSArIFwiXFxcIiBcIikgKyAoXCJidXQgZXhwZWN0ZWQgdHlwZSBcXFwiXCIgKyBleHBlY3RlZFR5cGVzICsgXCJcXFwiLlwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBmaW5kU2hhZG93Um9vdDogZnVuY3Rpb24gZmluZFNoYWRvd1Jvb3QoZWxlbWVudCkge1xuICAgICAgaWYgKCFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXR0YWNoU2hhZG93KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSAvLyBDYW4gZmluZCB0aGUgc2hhZG93IHJvb3Qgb3RoZXJ3aXNlIGl0J2xsIHJldHVybiB0aGUgZG9jdW1lbnRcblxuXG4gICAgICBpZiAodHlwZW9mIGVsZW1lbnQuZ2V0Um9vdE5vZGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIHJvb3QgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAgIHJldHVybiByb290IGluc3RhbmNlb2YgU2hhZG93Um9vdCA/IHJvb3QgOiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICB9IC8vIHdoZW4gd2UgZG9uJ3QgZmluZCBhIHNoYWRvdyByb290XG5cblxuICAgICAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBVdGlsLmZpbmRTaGFkb3dSb290KGVsZW1lbnQucGFyZW50Tm9kZSk7XG4gICAgfVxuICB9O1xuICBzZXRUcmFuc2l0aW9uRW5kU3VwcG9ydCgpO1xuXG4gIHJldHVybiBVdGlsO1xuXG59KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsLmpzLm1hcFxuIiwiLyohXG4gICogQm9vdHN0cmFwIGNvbGxhcHNlLmpzIHY0LjMuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpXG4gICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSwgcmVxdWlyZSgnLi91dGlsLmpzJykpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKFsnanF1ZXJ5JywgJy4vdXRpbC5qcyddLCBmYWN0b3J5KSA6XG4gIChnbG9iYWwgPSBnbG9iYWwgfHwgc2VsZiwgZ2xvYmFsLkNvbGxhcHNlID0gZmFjdG9yeShnbG9iYWwualF1ZXJ5LCBnbG9iYWwuVXRpbCkpO1xufSh0aGlzLCBmdW5jdGlvbiAoJCwgVXRpbCkgeyAndXNlIHN0cmljdCc7XG5cbiAgJCA9ICQgJiYgJC5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdCcpID8gJFsnZGVmYXVsdCddIDogJDtcbiAgVXRpbCA9IFV0aWwgJiYgVXRpbC5oYXNPd25Qcm9wZXJ0eSgnZGVmYXVsdCcpID8gVXRpbFsnZGVmYXVsdCddIDogVXRpbDtcblxuICBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1cblxuICBmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcbiAgICAgIHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICAgICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICAvKipcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbnN0YW50c1xuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgdmFyIE5BTUUgPSAnY29sbGFwc2UnO1xuICB2YXIgVkVSU0lPTiA9ICc0LjMuMSc7XG4gIHZhciBEQVRBX0tFWSA9ICdicy5jb2xsYXBzZSc7XG4gIHZhciBFVkVOVF9LRVkgPSBcIi5cIiArIERBVEFfS0VZO1xuICB2YXIgREFUQV9BUElfS0VZID0gJy5kYXRhLWFwaSc7XG4gIHZhciBKUVVFUllfTk9fQ09ORkxJQ1QgPSAkLmZuW05BTUVdO1xuICB2YXIgRGVmYXVsdCA9IHtcbiAgICB0b2dnbGU6IHRydWUsXG4gICAgcGFyZW50OiAnJ1xuICB9O1xuICB2YXIgRGVmYXVsdFR5cGUgPSB7XG4gICAgdG9nZ2xlOiAnYm9vbGVhbicsXG4gICAgcGFyZW50OiAnKHN0cmluZ3xlbGVtZW50KSdcbiAgfTtcbiAgdmFyIEV2ZW50ID0ge1xuICAgIFNIT1c6IFwic2hvd1wiICsgRVZFTlRfS0VZLFxuICAgIFNIT1dOOiBcInNob3duXCIgKyBFVkVOVF9LRVksXG4gICAgSElERTogXCJoaWRlXCIgKyBFVkVOVF9LRVksXG4gICAgSElEREVOOiBcImhpZGRlblwiICsgRVZFTlRfS0VZLFxuICAgIENMSUNLX0RBVEFfQVBJOiBcImNsaWNrXCIgKyBFVkVOVF9LRVkgKyBEQVRBX0FQSV9LRVlcbiAgfTtcbiAgdmFyIENsYXNzTmFtZSA9IHtcbiAgICBTSE9XOiAnc2hvdycsXG4gICAgQ09MTEFQU0U6ICdjb2xsYXBzZScsXG4gICAgQ09MTEFQU0lORzogJ2NvbGxhcHNpbmcnLFxuICAgIENPTExBUFNFRDogJ2NvbGxhcHNlZCdcbiAgfTtcbiAgdmFyIERpbWVuc2lvbiA9IHtcbiAgICBXSURUSDogJ3dpZHRoJyxcbiAgICBIRUlHSFQ6ICdoZWlnaHQnXG4gIH07XG4gIHZhciBTZWxlY3RvciA9IHtcbiAgICBBQ1RJVkVTOiAnLnNob3csIC5jb2xsYXBzaW5nJyxcbiAgICBEQVRBX1RPR0dMRTogJ1tkYXRhLXRvZ2dsZT1cImNvbGxhcHNlXCJdJ1xuICAgIC8qKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIENsYXNzIERlZmluaXRpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKi9cblxuICB9O1xuXG4gIHZhciBDb2xsYXBzZSA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbGxhcHNlKGVsZW1lbnQsIGNvbmZpZykge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICAgICAgdGhpcy5fdHJpZ2dlckFycmF5ID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdG9nZ2xlPVxcXCJjb2xsYXBzZVxcXCJdW2hyZWY9XFxcIiNcIiArIGVsZW1lbnQuaWQgKyBcIlxcXCJdLFwiICsgKFwiW2RhdGEtdG9nZ2xlPVxcXCJjb2xsYXBzZVxcXCJdW2RhdGEtdGFyZ2V0PVxcXCIjXCIgKyBlbGVtZW50LmlkICsgXCJcXFwiXVwiKSkpO1xuICAgICAgdmFyIHRvZ2dsZUxpc3QgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU2VsZWN0b3IuREFUQV9UT0dHTEUpKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRvZ2dsZUxpc3QubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZW0gPSB0b2dnbGVMaXN0W2ldO1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSBVdGlsLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZWxlbSk7XG4gICAgICAgIHZhciBmaWx0ZXJFbGVtZW50ID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSkuZmlsdGVyKGZ1bmN0aW9uIChmb3VuZEVsZW0pIHtcbiAgICAgICAgICByZXR1cm4gZm91bmRFbGVtID09PSBlbGVtZW50O1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IgIT09IG51bGwgJiYgZmlsdGVyRWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcblxuICAgICAgICAgIHRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKGVsZW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2NvbmZpZy5wYXJlbnQgPyB0aGlzLl9nZXRQYXJlbnQoKSA6IG51bGw7XG5cbiAgICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fZWxlbWVudCwgdGhpcy5fdHJpZ2dlckFycmF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy50b2dnbGUpIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgIH1cbiAgICB9IC8vIEdldHRlcnNcblxuXG4gICAgdmFyIF9wcm90byA9IENvbGxhcHNlLnByb3RvdHlwZTtcblxuICAgIC8vIFB1YmxpY1xuICAgIF9wcm90by50b2dnbGUgPSBmdW5jdGlvbiB0b2dnbGUoKSB7XG4gICAgICBpZiAoJCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhDbGFzc05hbWUuU0hPVykpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3Byb3RvLnNob3cgPSBmdW5jdGlvbiBzaG93KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCAkKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKENsYXNzTmFtZS5TSE9XKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBhY3RpdmVzO1xuICAgICAgdmFyIGFjdGl2ZXNEYXRhO1xuXG4gICAgICBpZiAodGhpcy5fcGFyZW50KSB7XG4gICAgICAgIGFjdGl2ZXMgPSBbXS5zbGljZS5jYWxsKHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKFNlbGVjdG9yLkFDVElWRVMpKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW0pIHtcbiAgICAgICAgICBpZiAodHlwZW9mIF90aGlzLl9jb25maWcucGFyZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCdkYXRhLXBhcmVudCcpID09PSBfdGhpcy5fY29uZmlnLnBhcmVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZWxlbS5jbGFzc0xpc3QuY29udGFpbnMoQ2xhc3NOYW1lLkNPTExBUFNFKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgYWN0aXZlcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZXMpIHtcbiAgICAgICAgYWN0aXZlc0RhdGEgPSAkKGFjdGl2ZXMpLm5vdCh0aGlzLl9zZWxlY3RvcikuZGF0YShEQVRBX0tFWSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZXNEYXRhICYmIGFjdGl2ZXNEYXRhLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXJ0RXZlbnQgPSAkLkV2ZW50KEV2ZW50LlNIT1cpO1xuICAgICAgJCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKHN0YXJ0RXZlbnQpO1xuXG4gICAgICBpZiAoc3RhcnRFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3RpdmVzKSB7XG4gICAgICAgIENvbGxhcHNlLl9qUXVlcnlJbnRlcmZhY2UuY2FsbCgkKGFjdGl2ZXMpLm5vdCh0aGlzLl9zZWxlY3RvciksICdoaWRlJyk7XG5cbiAgICAgICAgaWYgKCFhY3RpdmVzRGF0YSkge1xuICAgICAgICAgICQoYWN0aXZlcykuZGF0YShEQVRBX0tFWSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuX2dldERpbWVuc2lvbigpO1xuXG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKENsYXNzTmFtZS5DT0xMQVBTRSkuYWRkQ2xhc3MoQ2xhc3NOYW1lLkNPTExBUFNJTkcpO1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gMDtcblxuICAgICAgaWYgKHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgJCh0aGlzLl90cmlnZ2VyQXJyYXkpLnJlbW92ZUNsYXNzKENsYXNzTmFtZS5DT0xMQVBTRUQpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRUcmFuc2l0aW9uaW5nKHRydWUpO1xuXG4gICAgICB2YXIgY29tcGxldGUgPSBmdW5jdGlvbiBjb21wbGV0ZSgpIHtcbiAgICAgICAgJChfdGhpcy5fZWxlbWVudCkucmVtb3ZlQ2xhc3MoQ2xhc3NOYW1lLkNPTExBUFNJTkcpLmFkZENsYXNzKENsYXNzTmFtZS5DT0xMQVBTRSkuYWRkQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpO1xuICAgICAgICBfdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJyc7XG5cbiAgICAgICAgX3RoaXMuc2V0VHJhbnNpdGlvbmluZyhmYWxzZSk7XG5cbiAgICAgICAgJChfdGhpcy5fZWxlbWVudCkudHJpZ2dlcihFdmVudC5TSE9XTik7XG4gICAgICB9O1xuXG4gICAgICB2YXIgY2FwaXRhbGl6ZWREaW1lbnNpb24gPSBkaW1lbnNpb25bMF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSgxKTtcbiAgICAgIHZhciBzY3JvbGxTaXplID0gXCJzY3JvbGxcIiArIGNhcGl0YWxpemVkRGltZW5zaW9uO1xuICAgICAgdmFyIHRyYW5zaXRpb25EdXJhdGlvbiA9IFV0aWwuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLm9uZShVdGlsLlRSQU5TSVRJT05fRU5ELCBjb21wbGV0ZSkuZW11bGF0ZVRyYW5zaXRpb25FbmQodHJhbnNpdGlvbkR1cmF0aW9uKTtcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9IHRoaXMuX2VsZW1lbnRbc2Nyb2xsU2l6ZV0gKyBcInB4XCI7XG4gICAgfTtcblxuICAgIF9wcm90by5oaWRlID0gZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5faXNUcmFuc2l0aW9uaW5nIHx8ICEkKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKENsYXNzTmFtZS5TSE9XKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBzdGFydEV2ZW50ID0gJC5FdmVudChFdmVudC5ISURFKTtcbiAgICAgICQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihzdGFydEV2ZW50KTtcblxuICAgICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5fZ2V0RGltZW5zaW9uKCk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbZGltZW5zaW9uXSA9IHRoaXMuX2VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbZGltZW5zaW9uXSArIFwicHhcIjtcbiAgICAgIFV0aWwucmVmbG93KHRoaXMuX2VsZW1lbnQpO1xuICAgICAgJCh0aGlzLl9lbGVtZW50KS5hZGRDbGFzcyhDbGFzc05hbWUuQ09MTEFQU0lORykucmVtb3ZlQ2xhc3MoQ2xhc3NOYW1lLkNPTExBUFNFKS5yZW1vdmVDbGFzcyhDbGFzc05hbWUuU0hPVyk7XG4gICAgICB2YXIgdHJpZ2dlckFycmF5TGVuZ3RoID0gdGhpcy5fdHJpZ2dlckFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHRyaWdnZXJBcnJheUxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmlnZ2VyQXJyYXlMZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciB0cmlnZ2VyID0gdGhpcy5fdHJpZ2dlckFycmF5W2ldO1xuICAgICAgICAgIHZhciBzZWxlY3RvciA9IFV0aWwuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0cmlnZ2VyKTtcblxuICAgICAgICAgIGlmIChzZWxlY3RvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyICRlbGVtID0gJChbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSk7XG5cbiAgICAgICAgICAgIGlmICghJGVsZW0uaGFzQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpKSB7XG4gICAgICAgICAgICAgICQodHJpZ2dlcikuYWRkQ2xhc3MoQ2xhc3NOYW1lLkNPTExBUFNFRCkuYXR0cignYXJpYS1leHBhbmRlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRUcmFuc2l0aW9uaW5nKHRydWUpO1xuXG4gICAgICB2YXIgY29tcGxldGUgPSBmdW5jdGlvbiBjb21wbGV0ZSgpIHtcbiAgICAgICAgX3RoaXMyLnNldFRyYW5zaXRpb25pbmcoZmFsc2UpO1xuXG4gICAgICAgICQoX3RoaXMyLl9lbGVtZW50KS5yZW1vdmVDbGFzcyhDbGFzc05hbWUuQ09MTEFQU0lORykuYWRkQ2xhc3MoQ2xhc3NOYW1lLkNPTExBUFNFKS50cmlnZ2VyKEV2ZW50LkhJRERFTik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJztcbiAgICAgIHZhciB0cmFuc2l0aW9uRHVyYXRpb24gPSBVdGlsLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO1xuICAgICAgJCh0aGlzLl9lbGVtZW50KS5vbmUoVXRpbC5UUkFOU0lUSU9OX0VORCwgY29tcGxldGUpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHRyYW5zaXRpb25EdXJhdGlvbik7XG4gICAgfTtcblxuICAgIF9wcm90by5zZXRUcmFuc2l0aW9uaW5nID0gZnVuY3Rpb24gc2V0VHJhbnNpdGlvbmluZyhpc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGlzVHJhbnNpdGlvbmluZztcbiAgICB9O1xuXG4gICAgX3Byb3RvLmRpc3Bvc2UgPSBmdW5jdGlvbiBkaXNwb3NlKCkge1xuICAgICAgJC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsIERBVEFfS0VZKTtcbiAgICAgIHRoaXMuX2NvbmZpZyA9IG51bGw7XG4gICAgICB0aGlzLl9wYXJlbnQgPSBudWxsO1xuICAgICAgdGhpcy5fZWxlbWVudCA9IG51bGw7XG4gICAgICB0aGlzLl90cmlnZ2VyQXJyYXkgPSBudWxsO1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gbnVsbDtcbiAgICB9IC8vIFByaXZhdGVcbiAgICA7XG5cbiAgICBfcHJvdG8uX2dldENvbmZpZyA9IGZ1bmN0aW9uIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgICBjb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBEZWZhdWx0LCBjb25maWcpO1xuICAgICAgY29uZmlnLnRvZ2dsZSA9IEJvb2xlYW4oY29uZmlnLnRvZ2dsZSk7IC8vIENvZXJjZSBzdHJpbmcgdmFsdWVzXG5cbiAgICAgIFV0aWwudHlwZUNoZWNrQ29uZmlnKE5BTUUsIGNvbmZpZywgRGVmYXVsdFR5cGUpO1xuICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXREaW1lbnNpb24gPSBmdW5jdGlvbiBfZ2V0RGltZW5zaW9uKCkge1xuICAgICAgdmFyIGhhc1dpZHRoID0gJCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhEaW1lbnNpb24uV0lEVEgpO1xuICAgICAgcmV0dXJuIGhhc1dpZHRoID8gRGltZW5zaW9uLldJRFRIIDogRGltZW5zaW9uLkhFSUdIVDtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXRQYXJlbnQgPSBmdW5jdGlvbiBfZ2V0UGFyZW50KCkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBwYXJlbnQ7XG5cbiAgICAgIGlmIChVdGlsLmlzRWxlbWVudCh0aGlzLl9jb25maWcucGFyZW50KSkge1xuICAgICAgICBwYXJlbnQgPSB0aGlzLl9jb25maWcucGFyZW50OyAvLyBJdCdzIGEgalF1ZXJ5IG9iamVjdFxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fY29uZmlnLnBhcmVudC5qcXVlcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgcGFyZW50ID0gdGhpcy5fY29uZmlnLnBhcmVudFswXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLl9jb25maWcucGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlbGVjdG9yID0gXCJbZGF0YS10b2dnbGU9XFxcImNvbGxhcHNlXFxcIl1bZGF0YS1wYXJlbnQ9XFxcIlwiICsgdGhpcy5fY29uZmlnLnBhcmVudCArIFwiXFxcIl1cIjtcbiAgICAgIHZhciBjaGlsZHJlbiA9IFtdLnNsaWNlLmNhbGwocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbiAgICAgICQoY2hpbGRyZW4pLmVhY2goZnVuY3Rpb24gKGksIGVsZW1lbnQpIHtcbiAgICAgICAgX3RoaXMzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoQ29sbGFwc2UuX2dldFRhcmdldEZyb21FbGVtZW50KGVsZW1lbnQpLCBbZWxlbWVudF0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGFyZW50O1xuICAgIH07XG5cbiAgICBfcHJvdG8uX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyA9IGZ1bmN0aW9uIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoZWxlbWVudCwgdHJpZ2dlckFycmF5KSB7XG4gICAgICB2YXIgaXNPcGVuID0gJChlbGVtZW50KS5oYXNDbGFzcyhDbGFzc05hbWUuU0hPVyk7XG5cbiAgICAgIGlmICh0cmlnZ2VyQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICQodHJpZ2dlckFycmF5KS50b2dnbGVDbGFzcyhDbGFzc05hbWUuQ09MTEFQU0VELCAhaXNPcGVuKS5hdHRyKCdhcmlhLWV4cGFuZGVkJywgaXNPcGVuKTtcbiAgICAgIH1cbiAgICB9IC8vIFN0YXRpY1xuICAgIDtcblxuICAgIENvbGxhcHNlLl9nZXRUYXJnZXRGcm9tRWxlbWVudCA9IGZ1bmN0aW9uIF9nZXRUYXJnZXRGcm9tRWxlbWVudChlbGVtZW50KSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSBVdGlsLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICByZXR1cm4gc2VsZWN0b3IgPyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSA6IG51bGw7XG4gICAgfTtcblxuICAgIENvbGxhcHNlLl9qUXVlcnlJbnRlcmZhY2UgPSBmdW5jdGlvbiBfalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgIHZhciBkYXRhID0gJHRoaXMuZGF0YShEQVRBX0tFWSk7XG5cbiAgICAgICAgdmFyIF9jb25maWcgPSBfb2JqZWN0U3ByZWFkKHt9LCBEZWZhdWx0LCAkdGhpcy5kYXRhKCksIHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnICYmIGNvbmZpZyA/IGNvbmZpZyA6IHt9KTtcblxuICAgICAgICBpZiAoIWRhdGEgJiYgX2NvbmZpZy50b2dnbGUgJiYgL3Nob3d8aGlkZS8udGVzdChjb25maWcpKSB7XG4gICAgICAgICAgX2NvbmZpZy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgIGRhdGEgPSBuZXcgQ29sbGFwc2UodGhpcywgX2NvbmZpZyk7XG4gICAgICAgICAgJHRoaXMuZGF0YShEQVRBX0tFWSwgZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJObyBtZXRob2QgbmFtZWQgXFxcIlwiICsgY29uZmlnICsgXCJcXFwiXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2NyZWF0ZUNsYXNzKENvbGxhcHNlLCBudWxsLCBbe1xuICAgICAga2V5OiBcIlZFUlNJT05cIixcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gVkVSU0lPTjtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiRGVmYXVsdFwiLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBEZWZhdWx0O1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBDb2xsYXBzZTtcbiAgfSgpO1xuICAvKipcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIERhdGEgQXBpIGltcGxlbWVudGF0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuXG4gICQoZG9jdW1lbnQpLm9uKEV2ZW50LkNMSUNLX0RBVEFfQVBJLCBTZWxlY3Rvci5EQVRBX1RPR0dMRSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gcHJldmVudERlZmF1bHQgb25seSBmb3IgPGE+IGVsZW1lbnRzICh3aGljaCBjaGFuZ2UgdGhlIFVSTCkgbm90IGluc2lkZSB0aGUgY29sbGFwc2libGUgZWxlbWVudFxuICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB2YXIgJHRyaWdnZXIgPSAkKHRoaXMpO1xuICAgIHZhciBzZWxlY3RvciA9IFV0aWwuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKTtcbiAgICB2YXIgc2VsZWN0b3JzID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG4gICAgJChzZWxlY3RvcnMpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICR0YXJnZXQgPSAkKHRoaXMpO1xuICAgICAgdmFyIGRhdGEgPSAkdGFyZ2V0LmRhdGEoREFUQV9LRVkpO1xuICAgICAgdmFyIGNvbmZpZyA9IGRhdGEgPyAndG9nZ2xlJyA6ICR0cmlnZ2VyLmRhdGEoKTtcblxuICAgICAgQ29sbGFwc2UuX2pRdWVyeUludGVyZmFjZS5jYWxsKCR0YXJnZXQsIGNvbmZpZyk7XG4gICAgfSk7XG4gIH0pO1xuICAvKipcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIGpRdWVyeVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgJC5mbltOQU1FXSA9IENvbGxhcHNlLl9qUXVlcnlJbnRlcmZhY2U7XG4gICQuZm5bTkFNRV0uQ29uc3RydWN0b3IgPSBDb2xsYXBzZTtcblxuICAkLmZuW05BTUVdLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbltOQU1FXSA9IEpRVUVSWV9OT19DT05GTElDVDtcbiAgICByZXR1cm4gQ29sbGFwc2UuX2pRdWVyeUludGVyZmFjZTtcbiAgfTtcblxuICByZXR1cm4gQ29sbGFwc2U7XG5cbn0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbGxhcHNlLmpzLm1hcFxuIiwiLyohXG4gICogQm9vdHN0cmFwIGRyb3Bkb3duLmpzIHY0LjMuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpXG4gICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSlcbiAgKi9cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSwgcmVxdWlyZSgncG9wcGVyLmpzJyksIHJlcXVpcmUoJy4vdXRpbC5qcycpKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2pxdWVyeScsICdwb3BwZXIuanMnLCAnLi91dGlsLmpzJ10sIGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuRHJvcGRvd24gPSBmYWN0b3J5KGdsb2JhbC5qUXVlcnksIGdsb2JhbC5Qb3BwZXIsIGdsb2JhbC5VdGlsKSk7XG59KHRoaXMsIGZ1bmN0aW9uICgkLCBQb3BwZXIsIFV0aWwpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICQgPSAkICYmICQuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHQnKSA/ICRbJ2RlZmF1bHQnXSA6ICQ7XG4gIFBvcHBlciA9IFBvcHBlciAmJiBQb3BwZXIuaGFzT3duUHJvcGVydHkoJ2RlZmF1bHQnKSA/IFBvcHBlclsnZGVmYXVsdCddIDogUG9wcGVyO1xuICBVdGlsID0gVXRpbCAmJiBVdGlsLmhhc093blByb3BlcnR5KCdkZWZhdWx0JykgPyBVdGlsWydkZWZhdWx0J10gOiBVdGlsO1xuXG4gIGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5IGluIG9iaikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuICAgICAgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgICBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgICB9KSk7XG4gICAgICB9XG5cbiAgICAgIG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29uc3RhbnRzXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuICB2YXIgTkFNRSA9ICdkcm9wZG93bic7XG4gIHZhciBWRVJTSU9OID0gJzQuMy4xJztcbiAgdmFyIERBVEFfS0VZID0gJ2JzLmRyb3Bkb3duJztcbiAgdmFyIEVWRU5UX0tFWSA9IFwiLlwiICsgREFUQV9LRVk7XG4gIHZhciBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJztcbiAgdmFyIEpRVUVSWV9OT19DT05GTElDVCA9ICQuZm5bTkFNRV07XG4gIHZhciBFU0NBUEVfS0VZQ09ERSA9IDI3OyAvLyBLZXlib2FyZEV2ZW50LndoaWNoIHZhbHVlIGZvciBFc2NhcGUgKEVzYykga2V5XG5cbiAgdmFyIFNQQUNFX0tFWUNPREUgPSAzMjsgLy8gS2V5Ym9hcmRFdmVudC53aGljaCB2YWx1ZSBmb3Igc3BhY2Uga2V5XG5cbiAgdmFyIFRBQl9LRVlDT0RFID0gOTsgLy8gS2V5Ym9hcmRFdmVudC53aGljaCB2YWx1ZSBmb3IgdGFiIGtleVxuXG4gIHZhciBBUlJPV19VUF9LRVlDT0RFID0gMzg7IC8vIEtleWJvYXJkRXZlbnQud2hpY2ggdmFsdWUgZm9yIHVwIGFycm93IGtleVxuXG4gIHZhciBBUlJPV19ET1dOX0tFWUNPREUgPSA0MDsgLy8gS2V5Ym9hcmRFdmVudC53aGljaCB2YWx1ZSBmb3IgZG93biBhcnJvdyBrZXlcblxuICB2YXIgUklHSFRfTU9VU0VfQlVUVE9OX1dISUNIID0gMzsgLy8gTW91c2VFdmVudC53aGljaCB2YWx1ZSBmb3IgdGhlIHJpZ2h0IGJ1dHRvbiAoYXNzdW1pbmcgYSByaWdodC1oYW5kZWQgbW91c2UpXG5cbiAgdmFyIFJFR0VYUF9LRVlET1dOID0gbmV3IFJlZ0V4cChBUlJPV19VUF9LRVlDT0RFICsgXCJ8XCIgKyBBUlJPV19ET1dOX0tFWUNPREUgKyBcInxcIiArIEVTQ0FQRV9LRVlDT0RFKTtcbiAgdmFyIEV2ZW50ID0ge1xuICAgIEhJREU6IFwiaGlkZVwiICsgRVZFTlRfS0VZLFxuICAgIEhJRERFTjogXCJoaWRkZW5cIiArIEVWRU5UX0tFWSxcbiAgICBTSE9XOiBcInNob3dcIiArIEVWRU5UX0tFWSxcbiAgICBTSE9XTjogXCJzaG93blwiICsgRVZFTlRfS0VZLFxuICAgIENMSUNLOiBcImNsaWNrXCIgKyBFVkVOVF9LRVksXG4gICAgQ0xJQ0tfREFUQV9BUEk6IFwiY2xpY2tcIiArIEVWRU5UX0tFWSArIERBVEFfQVBJX0tFWSxcbiAgICBLRVlET1dOX0RBVEFfQVBJOiBcImtleWRvd25cIiArIEVWRU5UX0tFWSArIERBVEFfQVBJX0tFWSxcbiAgICBLRVlVUF9EQVRBX0FQSTogXCJrZXl1cFwiICsgRVZFTlRfS0VZICsgREFUQV9BUElfS0VZXG4gIH07XG4gIHZhciBDbGFzc05hbWUgPSB7XG4gICAgRElTQUJMRUQ6ICdkaXNhYmxlZCcsXG4gICAgU0hPVzogJ3Nob3cnLFxuICAgIERST1BVUDogJ2Ryb3B1cCcsXG4gICAgRFJPUFJJR0hUOiAnZHJvcHJpZ2h0JyxcbiAgICBEUk9QTEVGVDogJ2Ryb3BsZWZ0JyxcbiAgICBNRU5VUklHSFQ6ICdkcm9wZG93bi1tZW51LXJpZ2h0JyxcbiAgICBNRU5VTEVGVDogJ2Ryb3Bkb3duLW1lbnUtbGVmdCcsXG4gICAgUE9TSVRJT05fU1RBVElDOiAncG9zaXRpb24tc3RhdGljJ1xuICB9O1xuICB2YXIgU2VsZWN0b3IgPSB7XG4gICAgREFUQV9UT0dHTEU6ICdbZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXScsXG4gICAgRk9STV9DSElMRDogJy5kcm9wZG93biBmb3JtJyxcbiAgICBNRU5VOiAnLmRyb3Bkb3duLW1lbnUnLFxuICAgIE5BVkJBUl9OQVY6ICcubmF2YmFyLW5hdicsXG4gICAgVklTSUJMRV9JVEVNUzogJy5kcm9wZG93bi1tZW51IC5kcm9wZG93bi1pdGVtOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJ1xuICB9O1xuICB2YXIgQXR0YWNobWVudE1hcCA9IHtcbiAgICBUT1A6ICd0b3Atc3RhcnQnLFxuICAgIFRPUEVORDogJ3RvcC1lbmQnLFxuICAgIEJPVFRPTTogJ2JvdHRvbS1zdGFydCcsXG4gICAgQk9UVE9NRU5EOiAnYm90dG9tLWVuZCcsXG4gICAgUklHSFQ6ICdyaWdodC1zdGFydCcsXG4gICAgUklHSFRFTkQ6ICdyaWdodC1lbmQnLFxuICAgIExFRlQ6ICdsZWZ0LXN0YXJ0JyxcbiAgICBMRUZURU5EOiAnbGVmdC1lbmQnXG4gIH07XG4gIHZhciBEZWZhdWx0ID0ge1xuICAgIG9mZnNldDogMCxcbiAgICBmbGlwOiB0cnVlLFxuICAgIGJvdW5kYXJ5OiAnc2Nyb2xsUGFyZW50JyxcbiAgICByZWZlcmVuY2U6ICd0b2dnbGUnLFxuICAgIGRpc3BsYXk6ICdkeW5hbWljJ1xuICB9O1xuICB2YXIgRGVmYXVsdFR5cGUgPSB7XG4gICAgb2Zmc2V0OiAnKG51bWJlcnxzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgICBmbGlwOiAnYm9vbGVhbicsXG4gICAgYm91bmRhcnk6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgICByZWZlcmVuY2U6ICcoc3RyaW5nfGVsZW1lbnQpJyxcbiAgICBkaXNwbGF5OiAnc3RyaW5nJ1xuICAgIC8qKlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIENsYXNzIERlZmluaXRpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKi9cblxuICB9O1xuXG4gIHZhciBEcm9wZG93biA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERyb3Bkb3duKGVsZW1lbnQsIGNvbmZpZykge1xuICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgICAgdGhpcy5fY29uZmlnID0gdGhpcy5fZ2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgICB0aGlzLl9tZW51ID0gdGhpcy5fZ2V0TWVudUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKCk7XG5cbiAgICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfSAvLyBHZXR0ZXJzXG5cblxuICAgIHZhciBfcHJvdG8gPSBEcm9wZG93bi5wcm90b3R5cGU7XG5cbiAgICAvLyBQdWJsaWNcbiAgICBfcHJvdG8udG9nZ2xlID0gZnVuY3Rpb24gdG9nZ2xlKCkge1xuICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuZGlzYWJsZWQgfHwgJCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcyhDbGFzc05hbWUuRElTQUJMRUQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudCA9IERyb3Bkb3duLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtcblxuICAgICAgdmFyIGlzQWN0aXZlID0gJCh0aGlzLl9tZW51KS5oYXNDbGFzcyhDbGFzc05hbWUuU0hPVyk7XG5cbiAgICAgIERyb3Bkb3duLl9jbGVhck1lbnVzKCk7XG5cbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50XG4gICAgICB9O1xuICAgICAgdmFyIHNob3dFdmVudCA9ICQuRXZlbnQoRXZlbnQuU0hPVywgcmVsYXRlZFRhcmdldCk7XG4gICAgICAkKHBhcmVudCkudHJpZ2dlcihzaG93RXZlbnQpO1xuXG4gICAgICBpZiAoc2hvd0V2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gRGlzYWJsZSB0b3RhbGx5IFBvcHBlci5qcyBmb3IgRHJvcGRvd24gaW4gTmF2YmFyXG5cblxuICAgICAgaWYgKCF0aGlzLl9pbk5hdmJhcikge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2hlY2sgZm9yIFBvcHBlciBkZXBlbmRlbmN5XG4gICAgICAgICAqIFBvcHBlciAtIGh0dHBzOi8vcG9wcGVyLmpzLm9yZ1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHR5cGVvZiBQb3BwZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXFwncyBkcm9wZG93bnMgcmVxdWlyZSBQb3BwZXIuanMgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZy8pJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdwYXJlbnQnKSB7XG4gICAgICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IHBhcmVudDtcbiAgICAgICAgfSBlbHNlIGlmIChVdGlsLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSkge1xuICAgICAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9jb25maWcucmVmZXJlbmNlOyAvLyBDaGVjayBpZiBpdCdzIGpRdWVyeSBlbGVtZW50XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UuanF1ZXJ5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2NvbmZpZy5yZWZlcmVuY2VbMF07XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIElmIGJvdW5kYXJ5IGlzIG5vdCBgc2Nyb2xsUGFyZW50YCwgdGhlbiBzZXQgcG9zaXRpb24gdG8gYHN0YXRpY2BcbiAgICAgICAgLy8gdG8gYWxsb3cgdGhlIG1lbnUgdG8gXCJlc2NhcGVcIiB0aGUgc2Nyb2xsIHBhcmVudCdzIGJvdW5kYXJpZXNcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2lzc3Vlcy8yNDI1MVxuXG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5ib3VuZGFyeSAhPT0gJ3Njcm9sbFBhcmVudCcpIHtcbiAgICAgICAgICAkKHBhcmVudCkuYWRkQ2xhc3MoQ2xhc3NOYW1lLlBPU0lUSU9OX1NUQVRJQyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wb3BwZXIgPSBuZXcgUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHRoaXMuX21lbnUsIHRoaXMuX2dldFBvcHBlckNvbmZpZygpKTtcbiAgICAgIH0gLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIGFkZCBleHRyYVxuICAgICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB0byB0aGUgYm9keSdzIGltbWVkaWF0ZSBjaGlsZHJlbjtcbiAgICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgICAvLyBodHRwczovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTQvMDIvbW91c2VfZXZlbnRfYnViLmh0bWxcblxuXG4gICAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICQocGFyZW50KS5jbG9zZXN0KFNlbGVjdG9yLk5BVkJBUl9OQVYpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAkKGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCkub24oJ21vdXNlb3ZlcicsIG51bGwsICQubm9vcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgJCh0aGlzLl9tZW51KS50b2dnbGVDbGFzcyhDbGFzc05hbWUuU0hPVyk7XG4gICAgICAkKHBhcmVudCkudG9nZ2xlQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpLnRyaWdnZXIoJC5FdmVudChFdmVudC5TSE9XTiwgcmVsYXRlZFRhcmdldCkpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uc2hvdyA9IGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICBpZiAodGhpcy5fZWxlbWVudC5kaXNhYmxlZCB8fCAkKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKENsYXNzTmFtZS5ESVNBQkxFRCkgfHwgJCh0aGlzLl9tZW51KS5oYXNDbGFzcyhDbGFzc05hbWUuU0hPVykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVsYXRlZFRhcmdldCA9IHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgICAgfTtcbiAgICAgIHZhciBzaG93RXZlbnQgPSAkLkV2ZW50KEV2ZW50LlNIT1csIHJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgICB2YXIgcGFyZW50ID0gRHJvcGRvd24uX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgICAkKHBhcmVudCkudHJpZ2dlcihzaG93RXZlbnQpO1xuXG4gICAgICBpZiAoc2hvd0V2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgJCh0aGlzLl9tZW51KS50b2dnbGVDbGFzcyhDbGFzc05hbWUuU0hPVyk7XG4gICAgICAkKHBhcmVudCkudG9nZ2xlQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpLnRyaWdnZXIoJC5FdmVudChFdmVudC5TSE9XTiwgcmVsYXRlZFRhcmdldCkpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uaGlkZSA9IGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgICBpZiAodGhpcy5fZWxlbWVudC5kaXNhYmxlZCB8fCAkKHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKENsYXNzTmFtZS5ESVNBQkxFRCkgfHwgISQodGhpcy5fbWVudSkuaGFzQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRoaXMuX2VsZW1lbnRcbiAgICAgIH07XG4gICAgICB2YXIgaGlkZUV2ZW50ID0gJC5FdmVudChFdmVudC5ISURFLCByZWxhdGVkVGFyZ2V0KTtcblxuICAgICAgdmFyIHBhcmVudCA9IERyb3Bkb3duLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtcblxuICAgICAgJChwYXJlbnQpLnRyaWdnZXIoaGlkZUV2ZW50KTtcblxuICAgICAgaWYgKGhpZGVFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICQodGhpcy5fbWVudSkudG9nZ2xlQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpO1xuICAgICAgJChwYXJlbnQpLnRvZ2dsZUNsYXNzKENsYXNzTmFtZS5TSE9XKS50cmlnZ2VyKCQuRXZlbnQoRXZlbnQuSElEREVOLCByZWxhdGVkVGFyZ2V0KSk7XG4gICAgfTtcblxuICAgIF9wcm90by5kaXNwb3NlID0gZnVuY3Rpb24gZGlzcG9zZSgpIHtcbiAgICAgICQucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LCBEQVRBX0tFWSk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLm9mZihFVkVOVF9LRVkpO1xuICAgICAgdGhpcy5fZWxlbWVudCA9IG51bGw7XG4gICAgICB0aGlzLl9tZW51ID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMuX3BvcHBlciAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuXG4gICAgICAgIHRoaXMuX3BvcHBlciA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9wcm90by51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgICB0aGlzLl9pbk5hdmJhciA9IHRoaXMuX2RldGVjdE5hdmJhcigpO1xuXG4gICAgICBpZiAodGhpcy5fcG9wcGVyICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0gLy8gUHJpdmF0ZVxuICAgIDtcblxuICAgIF9wcm90by5fYWRkRXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbiBfYWRkRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLm9uKEV2ZW50LkNMSUNLLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgX3RoaXMudG9nZ2xlKCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXRDb25maWcgPSBmdW5jdGlvbiBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgICAgY29uZmlnID0gX29iamVjdFNwcmVhZCh7fSwgdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LCAkKHRoaXMuX2VsZW1lbnQpLmRhdGEoKSwgY29uZmlnKTtcbiAgICAgIFV0aWwudHlwZUNoZWNrQ29uZmlnKE5BTUUsIGNvbmZpZywgdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0VHlwZSk7XG4gICAgICByZXR1cm4gY29uZmlnO1xuICAgIH07XG5cbiAgICBfcHJvdG8uX2dldE1lbnVFbGVtZW50ID0gZnVuY3Rpb24gX2dldE1lbnVFbGVtZW50KCkge1xuICAgICAgaWYgKCF0aGlzLl9tZW51KSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSBEcm9wZG93bi5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgIHRoaXMuX21lbnUgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihTZWxlY3Rvci5NRU5VKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fbWVudTtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXRQbGFjZW1lbnQgPSBmdW5jdGlvbiBfZ2V0UGxhY2VtZW50KCkge1xuICAgICAgdmFyICRwYXJlbnREcm9wZG93biA9ICQodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlKTtcbiAgICAgIHZhciBwbGFjZW1lbnQgPSBBdHRhY2htZW50TWFwLkJPVFRPTTsgLy8gSGFuZGxlIGRyb3B1cFxuXG4gICAgICBpZiAoJHBhcmVudERyb3Bkb3duLmhhc0NsYXNzKENsYXNzTmFtZS5EUk9QVVApKSB7XG4gICAgICAgIHBsYWNlbWVudCA9IEF0dGFjaG1lbnRNYXAuVE9QO1xuXG4gICAgICAgIGlmICgkKHRoaXMuX21lbnUpLmhhc0NsYXNzKENsYXNzTmFtZS5NRU5VUklHSFQpKSB7XG4gICAgICAgICAgcGxhY2VtZW50ID0gQXR0YWNobWVudE1hcC5UT1BFTkQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJHBhcmVudERyb3Bkb3duLmhhc0NsYXNzKENsYXNzTmFtZS5EUk9QUklHSFQpKSB7XG4gICAgICAgIHBsYWNlbWVudCA9IEF0dGFjaG1lbnRNYXAuUklHSFQ7XG4gICAgICB9IGVsc2UgaWYgKCRwYXJlbnREcm9wZG93bi5oYXNDbGFzcyhDbGFzc05hbWUuRFJPUExFRlQpKSB7XG4gICAgICAgIHBsYWNlbWVudCA9IEF0dGFjaG1lbnRNYXAuTEVGVDtcbiAgICAgIH0gZWxzZSBpZiAoJCh0aGlzLl9tZW51KS5oYXNDbGFzcyhDbGFzc05hbWUuTUVOVVJJR0hUKSkge1xuICAgICAgICBwbGFjZW1lbnQgPSBBdHRhY2htZW50TWFwLkJPVFRPTUVORDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBsYWNlbWVudDtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9kZXRlY3ROYXZiYXIgPSBmdW5jdGlvbiBfZGV0ZWN0TmF2YmFyKCkge1xuICAgICAgcmV0dXJuICQodGhpcy5fZWxlbWVudCkuY2xvc2VzdCgnLm5hdmJhcicpLmxlbmd0aCA+IDA7XG4gICAgfTtcblxuICAgIF9wcm90by5fZ2V0T2Zmc2V0ID0gZnVuY3Rpb24gX2dldE9mZnNldCgpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgb2Zmc2V0ID0ge307XG5cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5fY29uZmlnLm9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvZmZzZXQuZm4gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgIGRhdGEub2Zmc2V0cyA9IF9vYmplY3RTcHJlYWQoe30sIGRhdGEub2Zmc2V0cywgX3RoaXMyLl9jb25maWcub2Zmc2V0KGRhdGEub2Zmc2V0cywgX3RoaXMyLl9lbGVtZW50KSB8fCB7fSk7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvZmZzZXQub2Zmc2V0ID0gdGhpcy5fY29uZmlnLm9mZnNldDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXRQb3BwZXJDb25maWcgPSBmdW5jdGlvbiBfZ2V0UG9wcGVyQ29uZmlnKCkge1xuICAgICAgdmFyIHBvcHBlckNvbmZpZyA9IHtcbiAgICAgICAgcGxhY2VtZW50OiB0aGlzLl9nZXRQbGFjZW1lbnQoKSxcbiAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKSxcbiAgICAgICAgICBmbGlwOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0aGlzLl9jb25maWcuZmxpcFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJldmVudE92ZXJmbG93OiB7XG4gICAgICAgICAgICBib3VuZGFyaWVzRWxlbWVudDogdGhpcy5fY29uZmlnLmJvdW5kYXJ5XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIERpc2FibGUgUG9wcGVyLmpzIGlmIHdlIGhhdmUgYSBzdGF0aWMgZGlzcGxheVxuXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5fY29uZmlnLmRpc3BsYXkgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIHBvcHBlckNvbmZpZy5tb2RpZmllcnMuYXBwbHlTdHlsZSA9IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcG9wcGVyQ29uZmlnO1xuICAgIH0gLy8gU3RhdGljXG4gICAgO1xuXG4gICAgRHJvcGRvd24uX2pRdWVyeUludGVyZmFjZSA9IGZ1bmN0aW9uIF9qUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAkKHRoaXMpLmRhdGEoREFUQV9LRVkpO1xuXG4gICAgICAgIHZhciBfY29uZmlnID0gdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiBudWxsO1xuXG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgIGRhdGEgPSBuZXcgRHJvcGRvd24odGhpcywgX2NvbmZpZyk7XG4gICAgICAgICAgJCh0aGlzKS5kYXRhKERBVEFfS0VZLCBkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIG1ldGhvZCBuYW1lZCBcXFwiXCIgKyBjb25maWcgKyBcIlxcXCJcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBEcm9wZG93bi5fY2xlYXJNZW51cyA9IGZ1bmN0aW9uIF9jbGVhck1lbnVzKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQgJiYgKGV2ZW50LndoaWNoID09PSBSSUdIVF9NT1VTRV9CVVRUT05fV0hJQ0ggfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBldmVudC53aGljaCAhPT0gVEFCX0tFWUNPREUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHRvZ2dsZXMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU2VsZWN0b3IuREFUQV9UT0dHTEUpKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRvZ2dsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IERyb3Bkb3duLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0b2dnbGVzW2ldKTtcblxuICAgICAgICB2YXIgY29udGV4dCA9ICQodG9nZ2xlc1tpXSkuZGF0YShEQVRBX0tFWSk7XG4gICAgICAgIHZhciByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgICAgIHJlbGF0ZWRUYXJnZXQ6IHRvZ2dsZXNbaV1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIHJlbGF0ZWRUYXJnZXQuY2xpY2tFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZHJvcGRvd25NZW51ID0gY29udGV4dC5fbWVudTtcblxuICAgICAgICBpZiAoISQocGFyZW50KS5oYXNDbGFzcyhDbGFzc05hbWUuU0hPVykpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudCAmJiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LndoaWNoID09PSBUQUJfS0VZQ09ERSkgJiYgJC5jb250YWlucyhwYXJlbnQsIGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBoaWRlRXZlbnQgPSAkLkV2ZW50KEV2ZW50LkhJREUsIHJlbGF0ZWRUYXJnZXQpO1xuICAgICAgICAkKHBhcmVudCkudHJpZ2dlcihoaWRlRXZlbnQpO1xuXG4gICAgICAgIGlmIChoaWRlRXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyBJZiB0aGlzIGlzIGEgdG91Y2gtZW5hYmxlZCBkZXZpY2Ugd2UgcmVtb3ZlIHRoZSBleHRyYVxuICAgICAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuXG5cbiAgICAgICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgICAgICQoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oKS5vZmYoJ21vdXNlb3ZlcicsIG51bGwsICQubm9vcCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2dnbGVzW2ldLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgICAkKGRyb3Bkb3duTWVudSkucmVtb3ZlQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpO1xuICAgICAgICAkKHBhcmVudCkucmVtb3ZlQ2xhc3MoQ2xhc3NOYW1lLlNIT1cpLnRyaWdnZXIoJC5FdmVudChFdmVudC5ISURERU4sIHJlbGF0ZWRUYXJnZXQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRHJvcGRvd24uX2dldFBhcmVudEZyb21FbGVtZW50ID0gZnVuY3Rpb24gX2dldFBhcmVudEZyb21FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgIHZhciBwYXJlbnQ7XG4gICAgICB2YXIgc2VsZWN0b3IgPSBVdGlsLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcmVudCB8fCBlbGVtZW50LnBhcmVudE5vZGU7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIDtcblxuICAgIERyb3Bkb3duLl9kYXRhQXBpS2V5ZG93bkhhbmRsZXIgPSBmdW5jdGlvbiBfZGF0YUFwaUtleWRvd25IYW5kbGVyKGV2ZW50KSB7XG4gICAgICAvLyBJZiBub3QgaW5wdXQvdGV4dGFyZWE6XG4gICAgICAvLyAgLSBBbmQgbm90IGEga2V5IGluIFJFR0VYUF9LRVlET1dOID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICAgIC8vIElmIGlucHV0L3RleHRhcmVhOlxuICAgICAgLy8gIC0gSWYgc3BhY2Uga2V5ID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICAgIC8vICAtIElmIGtleSBpcyBvdGhlciB0aGFuIGVzY2FwZVxuICAgICAgLy8gICAgLSBJZiBrZXkgaXMgbm90IHVwIG9yIGRvd24gPT4gbm90IGEgZHJvcGRvd24gY29tbWFuZFxuICAgICAgLy8gICAgLSBJZiB0cmlnZ2VyIGluc2lkZSB0aGUgbWVudSA9PiBub3QgYSBkcm9wZG93biBjb21tYW5kXG4gICAgICBpZiAoL2lucHV0fHRleHRhcmVhL2kudGVzdChldmVudC50YXJnZXQudGFnTmFtZSkgPyBldmVudC53aGljaCA9PT0gU1BBQ0VfS0VZQ09ERSB8fCBldmVudC53aGljaCAhPT0gRVNDQVBFX0tFWUNPREUgJiYgKGV2ZW50LndoaWNoICE9PSBBUlJPV19ET1dOX0tFWUNPREUgJiYgZXZlbnQud2hpY2ggIT09IEFSUk9XX1VQX0tFWUNPREUgfHwgJChldmVudC50YXJnZXQpLmNsb3Nlc3QoU2VsZWN0b3IuTUVOVSkubGVuZ3RoKSA6ICFSRUdFWFBfS0VZRE9XTi50ZXN0KGV2ZW50LndoaWNoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgJCh0aGlzKS5oYXNDbGFzcyhDbGFzc05hbWUuRElTQUJMRUQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcmVudCA9IERyb3Bkb3duLl9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzKTtcblxuICAgICAgdmFyIGlzQWN0aXZlID0gJChwYXJlbnQpLmhhc0NsYXNzKENsYXNzTmFtZS5TSE9XKTtcblxuICAgICAgaWYgKCFpc0FjdGl2ZSB8fCBpc0FjdGl2ZSAmJiAoZXZlbnQud2hpY2ggPT09IEVTQ0FQRV9LRVlDT0RFIHx8IGV2ZW50LndoaWNoID09PSBTUEFDRV9LRVlDT0RFKSkge1xuICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IEVTQ0FQRV9LRVlDT0RFKSB7XG4gICAgICAgICAgdmFyIHRvZ2dsZSA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKFNlbGVjdG9yLkRBVEFfVE9HR0xFKTtcbiAgICAgICAgICAkKHRvZ2dsZSkudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQodGhpcykudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXRlbXMgPSBbXS5zbGljZS5jYWxsKHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKFNlbGVjdG9yLlZJU0lCTEVfSVRFTVMpKTtcblxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IGl0ZW1zLmluZGV4T2YoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgaWYgKGV2ZW50LndoaWNoID09PSBBUlJPV19VUF9LRVlDT0RFICYmIGluZGV4ID4gMCkge1xuICAgICAgICAvLyBVcFxuICAgICAgICBpbmRleC0tO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQud2hpY2ggPT09IEFSUk9XX0RPV05fS0VZQ09ERSAmJiBpbmRleCA8IGl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gRG93blxuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgaXRlbXNbaW5kZXhdLmZvY3VzKCk7XG4gICAgfTtcblxuICAgIF9jcmVhdGVDbGFzcyhEcm9wZG93biwgbnVsbCwgW3tcbiAgICAgIGtleTogXCJWRVJTSU9OXCIsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIFZFUlNJT047XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcIkRlZmF1bHRcIixcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gRGVmYXVsdDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiRGVmYXVsdFR5cGVcIixcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gRGVmYXVsdFR5cGU7XG4gICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIERyb3Bkb3duO1xuICB9KCk7XG4gIC8qKlxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogRGF0YSBBcGkgaW1wbGVtZW50YXRpb25cbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqL1xuXG5cbiAgJChkb2N1bWVudCkub24oRXZlbnQuS0VZRE9XTl9EQVRBX0FQSSwgU2VsZWN0b3IuREFUQV9UT0dHTEUsIERyb3Bkb3duLl9kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLm9uKEV2ZW50LktFWURPV05fREFUQV9BUEksIFNlbGVjdG9yLk1FTlUsIERyb3Bkb3duLl9kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLm9uKEV2ZW50LkNMSUNLX0RBVEFfQVBJICsgXCIgXCIgKyBFdmVudC5LRVlVUF9EQVRBX0FQSSwgRHJvcGRvd24uX2NsZWFyTWVudXMpLm9uKEV2ZW50LkNMSUNLX0RBVEFfQVBJLCBTZWxlY3Rvci5EQVRBX1RPR0dMRSwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIERyb3Bkb3duLl9qUXVlcnlJbnRlcmZhY2UuY2FsbCgkKHRoaXMpLCAndG9nZ2xlJyk7XG4gIH0pLm9uKEV2ZW50LkNMSUNLX0RBVEFfQVBJLCBTZWxlY3Rvci5GT1JNX0NISUxELCBmdW5jdGlvbiAoZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH0pO1xuICAvKipcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIGpRdWVyeVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICovXG5cbiAgJC5mbltOQU1FXSA9IERyb3Bkb3duLl9qUXVlcnlJbnRlcmZhY2U7XG4gICQuZm5bTkFNRV0uQ29uc3RydWN0b3IgPSBEcm9wZG93bjtcblxuICAkLmZuW05BTUVdLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgJC5mbltOQU1FXSA9IEpRVUVSWV9OT19DT05GTElDVDtcbiAgICByZXR1cm4gRHJvcGRvd24uX2pRdWVyeUludGVyZmFjZTtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd247XG5cbn0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRyb3Bkb3duLmpzLm1hcFxuIl19
@@ -0,0 +1,2 @@
1
+ /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2
+ !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=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,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},x=function(e){return null!=e&&e===e.window},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.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(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<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|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(m.childNodes),m.childNodes),t[m.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&&((e?e.ownerDocument||e:m)!==C&&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&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$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[k]=!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.namespaceURI,n=(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:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),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=k,!C.getElementsByName||!C.getElementsByName(k).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){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";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("!=",$)}),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},D=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===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,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]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[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){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{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=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(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<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.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 k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.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(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_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)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").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 Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.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(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.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?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.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=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.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,k.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)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.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"===k.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"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.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)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.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?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.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){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.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)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
@@ -0,0 +1,5 @@
1
+ /*
2
+ Copyright (C) Federico Zivolo 2019
3
+ Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
4
+ */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?pe:10===e?se:pe||se}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){var i=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||i;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],n=l(t,'top'),i=l(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function m(e,t){var o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+n+'Width'],10)}function h(e,t,o,n){return ee(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],r(10)?parseInt(o['offset'+e])+parseInt(n['margin'+('Height'===e?'Top':'Left')])+parseInt(n['margin'+('Height'===e?'Bottom':'Right')]):0)}function c(e){var t=e.body,o=e.documentElement,n=r(10)&&getComputedStyle(o);return{height:h('Height',t,o,n),width:h('Width',t,o,n)}}function g(e){return fe({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var o={};try{if(r(10)){o=e.getBoundingClientRect();var n=l(e,'top'),i=l(e,'left');o.top+=n,o.left+=i,o.bottom+=n,o.right+=i}else o=e.getBoundingClientRect()}catch(t){}var p={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},s='HTML'===e.nodeName?c(e.ownerDocument):{},d=s.width||e.clientWidth||p.right-p.left,a=s.height||e.clientHeight||p.bottom-p.top,f=e.offsetWidth-d,h=e.offsetHeight-a;if(f||h){var u=t(e);f-=m(u,'x'),h-=m(u,'y'),p.width-=f,p.height-=h}return g(p)}function b(e,o){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],p=r(10),s='HTML'===o.nodeName,d=u(e),a=u(o),l=n(e),m=t(o),h=parseFloat(m.borderTopWidth,10),c=parseFloat(m.borderLeftWidth,10);i&&s&&(a.top=ee(a.top,0),a.left=ee(a.left,0));var b=g({top:d.top-a.top-h,left:d.left-a.left-c,width:d.width,height:d.height});if(b.marginTop=0,b.marginLeft=0,!p&&s){var w=parseFloat(m.marginTop,10),y=parseFloat(m.marginLeft,10);b.top-=h-w,b.bottom-=h-w,b.left-=c-y,b.right-=c-y,b.marginTop=w,b.marginLeft=y}return(p&&!i?o.contains(l):o===l&&'BODY'!==l.nodeName)&&(b=f(b,o)),b}function w(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,n=b(e,o),i=ee(o.clientWidth,window.innerWidth||0),r=ee(o.clientHeight,window.innerHeight||0),p=t?0:l(o),s=t?0:l(o,'left'),d={top:p-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r};return g(d)}function y(e){var n=e.nodeName;if('BODY'===n||'HTML'===n)return!1;if('fixed'===t(e,'position'))return!0;var i=o(e);return!!i&&y(i)}function E(e){if(!e||!e.parentElement||r())return document.documentElement;for(var o=e.parentElement;o&&'none'===t(o,'transform');)o=o.parentElement;return o||document.documentElement}function v(e,t,i,r){var p=4<arguments.length&&void 0!==arguments[4]&&arguments[4],s={top:0,left:0},d=p?E(e):a(e,t);if('viewport'===r)s=w(d,p);else{var l;'scrollParent'===r?(l=n(o(t)),'BODY'===l.nodeName&&(l=e.ownerDocument.documentElement)):'window'===r?l=e.ownerDocument.documentElement:l=r;var f=b(l,d,p);if('HTML'===l.nodeName&&!y(d)){var m=c(e.ownerDocument),h=m.height,g=m.width;s.top+=f.top-f.marginTop,s.bottom=h+f.top,s.left+=f.left-f.marginLeft,s.right=g+f.left}else s=f}i=i||0;var u='number'==typeof i;return s.left+=u?i:i.left||0,s.top+=u?i:i.top||0,s.right-=u?i:i.right||0,s.bottom-=u?i:i.bottom||0,s}function x(e){var t=e.width,o=e.height;return t*o}function O(e,t,o,n,i){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=v(o,n,r,i),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return fe({key:e},s[e],{area:x(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,n=e.height;return t>=o.clientWidth&&n>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function L(e,t,o){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,i=n?E(t):a(t,o);return b(o,i,n)}function S(e){var t=e.ownerDocument.defaultView,o=t.getComputedStyle(e),n=parseFloat(o.marginTop||0)+parseFloat(o.marginBottom||0),i=parseFloat(o.marginLeft||0)+parseFloat(o.marginRight||0),r={width:e.offsetWidth+i,height:e.offsetHeight+n};return r}function T(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function C(e,t,o){o=o.split('-')[0];var n=S(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[d]/2-n[d]/2,i[s]=o===s?t[s]-n[a]:t[T(s)],i}function D(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function N(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var n=D(e,function(e){return e[t]===o});return e.indexOf(n)}function P(t,o,n){var i=void 0===n?t:t.slice(0,N(t,'name',n));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var n=t['function']||t.fn;t.enabled&&e(n)&&(o.offsets.popper=g(o.offsets.popper),o.offsets.reference=g(o.offsets.reference),o=n(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=C(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,n=e.enabled;return n&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function H(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function A(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||M(n(p.parentNode),t,o,i),i.push(p)}function F(e,t,o,i){o.updateBound=i,A(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return M(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}function R(e,t){return A(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function U(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=R(this.reference,this.state))}function Y(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function V(e,t){Object.keys(t).forEach(function(o){var n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&Y(t[o])&&(n='px'),e.style[o]=t[o]+n})}function j(e,t){Object.keys(t).forEach(function(o){var n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function q(e,t){var o=e.offsets,n=o.popper,i=o.reference,r=$,p=function(e){return e},s=r(i.width),d=r(n.width),a=-1!==['left','right'].indexOf(e.placement),l=-1!==e.placement.indexOf('-'),f=t?a||l||s%2==d%2?r:Z:p,m=t?r:p;return{left:f(1==s%2&&1==d%2&&!l&&t?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:f(n.right)}}function K(e,t,o){var n=D(e,function(e){var o=e.name;return o===t}),i=!!n&&e.some(function(e){return e.name===o&&e.enabled&&e.order<n.order});if(!i){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return i}function z(e){return'end'===e?'start':'start'===e?'end':e}function G(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=ce.indexOf(e),n=ce.slice(o+1).concat(ce.slice(0,o));return t?n.reverse():n}function _(e,t,o,n){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+i[1],p=i[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=n;}var d=g(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?ee(document.documentElement.clientHeight,window.innerHeight||0):ee(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function X(e,t,o,n){var i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(D(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,n){var i=(1===n?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return _(e,i,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,n){Y(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function J(e,t){var o,n=t.offset,i=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=i.split('-')[0];return o=Y(+n)?[+n,0]:X(n,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var Q=Math.min,Z=Math.floor,$=Math.round,ee=Math.max,te='undefined'!=typeof window&&'undefined'!=typeof document,oe=['Edge','Trident','Firefox'],ne=0,ie=0;ie<oe.length;ie+=1)if(te&&0<=navigator.userAgent.indexOf(oe[ie])){ne=1;break}var i=te&&window.Promise,re=i?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},ne))}},pe=te&&!!(window.MSInputMethodContext&&document.documentMode),se=te&&/MSIE 10/.test(navigator.userAgent),de=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},ae=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),le=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},fe=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},me=te&&/Firefox/i.test(navigator.userAgent),he=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ce=he.slice(3),ge={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ue=function(){function t(o,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};de(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=re(this.update.bind(this)),this.options=fe({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(fe({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=fe({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return fe({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return ae(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return H.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return U.call(this)}}]),t}();return ue.Utils=('undefined'==typeof window?global:window).PopperUtils,ue.placements=he,ue.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){var i=e.offsets,r=i.reference,p=i.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:le({},d,r[d]),end:le({},d,r[d]+r[a]-p[a])};e.offsets.popper=fe({},p,l[n])}return e}},offset:{order:200,enabled:!0,fn:J,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||p(e.instance.popper);e.instance.reference===o&&(o=p(o));var n=B('transform'),i=e.instance.popper.style,r=i.top,s=i.left,d=i[n];i.top='',i.left='',i[n]='';var a=v(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);i.top=r,i.left=s,i[n]=d,t.boundaries=a;var l=t.priority,f=e.offsets.popper,m={primary:function(e){var o=f[e];return f[e]<a[e]&&!t.escapeWithReference&&(o=ee(f[e],a[e])),le({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=f[o];return f[e]>a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(n[d])&&(e.offsets.popper[d]=r(n[d])-o[a]),o[d]>r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[c]-u)),d[m]+u>s[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)<f(l.right)||'top'===n&&f(a.bottom)>f(l.top)||'bottom'===n&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,n=t.y,i=e.offsets.popper,r=D(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===r?t.gpuAcceleration:r,l=p(e.instance.popper),f=u(l),m={position:i.position},h=q(e,2>window.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue});
5
+ //# sourceMappingURL=popper.min.js.map
@@ -0,0 +1,15 @@
1
+ {% extends "base.html" %}{% load i18n %}
2
+
3
+ {% block bodyid %}page404{% endblock %}
4
+ {% block bodyclass %}{% endblock %}
5
+ {% block headtitle %}{% trans "Permission denied!" %}{% endblock %}
6
+
7
+ {% block content %}
8
+ <h1 class="pagetitle">{% trans "Permission denied!" %}</h1>
9
+ <div id="content" class="clearfix">
10
+ {% blocktrans trimmed %}
11
+ <p>We're sorry but you are not permitted to access this page.</p>
12
+ {% endblocktrans %}
13
+ <p class="errorpage-back-link">{% trans 'Back to the <a href="/">home page</a>.' %}
14
+ </div><!-- /content -->
15
+ {% endblock %}
@@ -0,0 +1,15 @@
1
+ {% extends "base.html" %}{% load i18n %}
2
+
3
+ {% block bodyid %}page404{% endblock %}
4
+ {% block bodyclass %}{% endblock %}
5
+ {% block headtitle %}{% trans "Page not found!" %}{% endblock %}
6
+
7
+ {% block content %}
8
+ <h1 class="pagetitle">{% trans "Page not found!" %}</h1>
9
+ <div id="content" class="clearfix">
10
+ {% blocktrans trimmed %}
11
+ <p>We're sorry but the page you are looking for can't be found.</p>
12
+ {% endblocktrans %}
13
+ <p class="errorpage-back-link">{% trans 'Back to the <a href="/">home page</a>.' %}
14
+ </div><!-- /content -->
15
+ {% endblock %}