hexo-theme-shokax 0.0.1-alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-shoka +21 -0
  3. package/README.md +47 -0
  4. package/_config.yml +353 -0
  5. package/_images.yml +99 -0
  6. package/languages/README.md +19 -0
  7. package/languages/default.yml +1 -0
  8. package/languages/en.yml +151 -0
  9. package/languages/ja.yml +146 -0
  10. package/languages/zh-CN.yml +154 -0
  11. package/languages/zh-HK.yml +146 -0
  12. package/languages/zh-TW.yml +146 -0
  13. package/layout/_alternate/atom.ejs +30 -0
  14. package/layout/_alternate/json.ejs +16 -0
  15. package/layout/_alternate/rss.ejs +34 -0
  16. package/layout/_mixin/breadcrumb.pug +33 -0
  17. package/layout/_mixin/card.pug +37 -0
  18. package/layout/_mixin/comment.pug +10 -0
  19. package/layout/_mixin/postmeta.pug +30 -0
  20. package/layout/_mixin/segment.pug +32 -0
  21. package/layout/_mixin/sidebar.pug +36 -0
  22. package/layout/_mixin/widgets.pug +29 -0
  23. package/layout/_partials/footer.pug +61 -0
  24. package/layout/_partials/head/head.pug +54 -0
  25. package/layout/_partials/head/head_com.pug +17 -0
  26. package/layout/_partials/head/pwa.pug +17 -0
  27. package/layout/_partials/header.pug +19 -0
  28. package/layout/_partials/layout.pug +143 -0
  29. package/layout/_partials/loading.pug +13 -0
  30. package/layout/_partials/pagination.pug +4 -0
  31. package/layout/_partials/post/copyright.pug +20 -0
  32. package/layout/_partials/post/footer.pug +13 -0
  33. package/layout/_partials/post/nav.pug +13 -0
  34. package/layout/_partials/post/post.pug +26 -0
  35. package/layout/_partials/post/reward.pug +18 -0
  36. package/layout/_partials/sidebar/menu.pug +37 -0
  37. package/layout/_partials/sidebar/overview.pug +40 -0
  38. package/layout/_partials/third-party/baidu-analytics.pug +11 -0
  39. package/layout/_partials/third-party/clarity.pug +8 -0
  40. package/layout/_partials/third-party/qweather.pug +35 -0
  41. package/layout/archive.pug +31 -0
  42. package/layout/category.pug +66 -0
  43. package/layout/index.pug +33 -0
  44. package/layout/page.pug +56 -0
  45. package/layout/post.pug +35 -0
  46. package/layout/tag.pug +43 -0
  47. package/package.json +35 -0
  48. package/scripts/filters/locals.js +57 -0
  49. package/scripts/filters/post.js +23 -0
  50. package/scripts/generaters/archive.js +141 -0
  51. package/scripts/generaters/config.js +43 -0
  52. package/scripts/generaters/images.js +26 -0
  53. package/scripts/generaters/index.js +110 -0
  54. package/scripts/generaters/pages.js +19 -0
  55. package/scripts/generaters/script.js +81 -0
  56. package/scripts/helpers/asset.js +237 -0
  57. package/scripts/helpers/engine.js +183 -0
  58. package/scripts/helpers/list_categories.js +140 -0
  59. package/scripts/helpers/symbols_count_time.js +76 -0
  60. package/scripts/tags/links.js +86 -0
  61. package/scripts/tags/media.js +19 -0
  62. package/source/assets/404.png +0 -0
  63. package/source/assets/algolia_logo.svg +9 -0
  64. package/source/assets/apple-touch-icon.png +0 -0
  65. package/source/assets/beian.webp +0 -0
  66. package/source/assets/failure.ico +0 -0
  67. package/source/assets/favicon.ico +0 -0
  68. package/source/assets/logo.svg +16 -0
  69. package/source/assets/play_disc.png +0 -0
  70. package/source/assets/play_needle.png +0 -0
  71. package/source/assets/search.png +0 -0
  72. package/source/css/_colors.styl +207 -0
  73. package/source/css/_common/components/components.styl +6 -0
  74. package/source/css/_common/components/highlight/highlight.styl +353 -0
  75. package/source/css/_common/components/highlight/operation.styl +21 -0
  76. package/source/css/_common/components/pages/collapse.styl +119 -0
  77. package/source/css/_common/components/pages/home.styl +385 -0
  78. package/source/css/_common/components/pages/pages.styl +56 -0
  79. package/source/css/_common/components/pages/tag-cloud.styl +12 -0
  80. package/source/css/_common/components/post/breadcrumb.styl +39 -0
  81. package/source/css/_common/components/post/copyright.styl +41 -0
  82. package/source/css/_common/components/post/expand.styl +264 -0
  83. package/source/css/_common/components/post/footer.styl +11 -0
  84. package/source/css/_common/components/post/header.styl +79 -0
  85. package/source/css/_common/components/post/nav.styl +63 -0
  86. package/source/css/_common/components/post/post.styl +29 -0
  87. package/source/css/_common/components/post/reward.styl +50 -0
  88. package/source/css/_common/components/post/rtl.styl +12 -0
  89. package/source/css/_common/components/post/tags.styl +39 -0
  90. package/source/css/_common/components/tags/collapse.styl +72 -0
  91. package/source/css/_common/components/tags/container.styl +49 -0
  92. package/source/css/_common/components/tags/label.styl +12 -0
  93. package/source/css/_common/components/tags/links.styl +77 -0
  94. package/source/css/_common/components/tags/list.styl +131 -0
  95. package/source/css/_common/components/tags/note.styl +70 -0
  96. package/source/css/_common/components/tags/player.styl +361 -0
  97. package/source/css/_common/components/tags/quiz.styl +200 -0
  98. package/source/css/_common/components/tags/tabs.styl +83 -0
  99. package/source/css/_common/components/tags/tags.styl +9 -0
  100. package/source/css/_common/components/third-party/loading.styl +222 -0
  101. package/source/css/_common/components/third-party/mermaid/class.styl +90 -0
  102. package/source/css/_common/components/third-party/mermaid/flowchart.styl +72 -0
  103. package/source/css/_common/components/third-party/mermaid/gantt.styl +251 -0
  104. package/source/css/_common/components/third-party/mermaid/git.styl +7 -0
  105. package/source/css/_common/components/third-party/mermaid/mermaid.styl +37 -0
  106. package/source/css/_common/components/third-party/mermaid/pie.styl +9 -0
  107. package/source/css/_common/components/third-party/mermaid/sequence.styl +95 -0
  108. package/source/css/_common/components/third-party/mermaid/state.styl +130 -0
  109. package/source/css/_common/components/third-party/pace.styl +18 -0
  110. package/source/css/_common/components/third-party/search.styl +167 -0
  111. package/source/css/_common/components/third-party/theme.styl +151 -0
  112. package/source/css/_common/components/third-party/third-party.styl +22 -0
  113. package/source/css/_common/components/third-party/valine.styl +548 -0
  114. package/source/css/_common/components/third-party/widgets.styl +57 -0
  115. package/source/css/_common/outline/footer/footer.styl +69 -0
  116. package/source/css/_common/outline/header/brand.styl +77 -0
  117. package/source/css/_common/outline/header/header.styl +20 -0
  118. package/source/css/_common/outline/header/image.styl +79 -0
  119. package/source/css/_common/outline/header/menu.styl +117 -0
  120. package/source/css/_common/outline/header/nav.styl +81 -0
  121. package/source/css/_common/outline/header/right.styl +15 -0
  122. package/source/css/_common/outline/header/tool.styl +207 -0
  123. package/source/css/_common/outline/header/waves.styl +50 -0
  124. package/source/css/_common/outline/mobile.styl +46 -0
  125. package/source/css/_common/outline/outline.styl +78 -0
  126. package/source/css/_common/outline/sidebar/author.styl +59 -0
  127. package/source/css/_common/outline/sidebar/dimmer.styl +23 -0
  128. package/source/css/_common/outline/sidebar/menu.styl +63 -0
  129. package/source/css/_common/outline/sidebar/quick.styl +43 -0
  130. package/source/css/_common/outline/sidebar/related.styl +56 -0
  131. package/source/css/_common/outline/sidebar/sidebar.styl +75 -0
  132. package/source/css/_common/outline/sidebar/social.styl +69 -0
  133. package/source/css/_common/outline/sidebar/state.styl +37 -0
  134. package/source/css/_common/outline/sidebar/tab.styl +71 -0
  135. package/source/css/_common/outline/sidebar/toc.styl +47 -0
  136. package/source/css/_common/scaffolding/animate.styl +318 -0
  137. package/source/css/_common/scaffolding/base.styl +172 -0
  138. package/source/css/_common/scaffolding/buttons.styl +48 -0
  139. package/source/css/_common/scaffolding/divider.styl +36 -0
  140. package/source/css/_common/scaffolding/iconfont.styl +443 -0
  141. package/source/css/_common/scaffolding/normalize.styl +289 -0
  142. package/source/css/_common/scaffolding/pagination.styl +81 -0
  143. package/source/css/_common/scaffolding/ribbon.styl +38 -0
  144. package/source/css/_common/scaffolding/scaffolding.styl +14 -0
  145. package/source/css/_common/scaffolding/scrollbar.styl +37 -0
  146. package/source/css/_common/scaffolding/tables.styl +50 -0
  147. package/source/css/_common/scaffolding/tip.styl +19 -0
  148. package/source/css/_common/scaffolding/toggles.styl +59 -0
  149. package/source/css/_iconfont.styl +451 -0
  150. package/source/css/_mixins.styl +146 -0
  151. package/source/css/_variables.styl +89 -0
  152. package/source/css/app.styl +27 -0
  153. package/source/css/comment.styl +5 -0
  154. package/source/css/mermaid.styl +5 -0
  155. package/source/css/plugin.styl +174 -0
  156. package/source/css/twikoo.css +2002 -0
  157. package/source/js/_app/components.js +330 -0
  158. package/source/js/_app/global.js +317 -0
  159. package/source/js/_app/library.js +302 -0
  160. package/source/js/_app/page.js +623 -0
  161. package/source/js/_app/player.js +748 -0
  162. package/source/js/_app/vue.js +43 -0
@@ -0,0 +1,385 @@
1
+ $item {
2
+ position: relative;
3
+ color: inherit;
4
+ width: calc(50% - 2rem);
5
+ min-width: calc(50% - 2rem);
6
+ height: 14rem;
7
+ margin: 1rem;
8
+ opacity: 0;
9
+
10
+ &.show {
11
+ @extend .slide-up-big-in;
12
+ content-visibility: auto;
13
+ contain-intrinsic-size: 250px;
14
+ opacity: 1;
15
+ }
16
+
17
+ +mobile() {
18
+ width: calc(100% - 1rem) !important;
19
+ min-width: calc(100% - 1rem) !important;
20
+ margin: 1rem .5rem !important;
21
+ }
22
+ }
23
+
24
+ .index.wrap {
25
+ .btn {
26
+ position: absolute;
27
+ bottom: 0;
28
+ right: 0;
29
+ padding: .3rem 1rem;
30
+ border-radius: 1rem 0;
31
+ color: var(--grey-0);
32
+ background-image: linear-gradient(to right, var(--color-pink) 0, var(--color-orange) 100%);
33
+
34
+ &::before {
35
+ position: absolute;
36
+ display: block;
37
+ content: '';
38
+ height: calc(100% - 1rem);
39
+ width: calc(100% - 1rem);
40
+ border-radius: 5rem;
41
+ left: .5rem;
42
+ top: .8rem;
43
+ box-shadow: 0 0 .6rem .6rem var(--color-pink-a3);
44
+ background-color: var(--color-pink-a3);
45
+ }
46
+
47
+ &:hover {
48
+ transform: translateZ(2.5rem);
49
+ }
50
+
51
+ &:hover::before {
52
+ transform: translateZ(-2.5rem);
53
+ }
54
+ }
55
+
56
+ .active .btn {
57
+ transform-style: preserve-3d;
58
+ transform: translateZ(2rem);
59
+ backface-visibility: hidden;
60
+
61
+ &::before {
62
+ transform-style: preserve-3d;
63
+ transform: translateZ(-2rem);
64
+ backface-visibility: hidden;
65
+ }
66
+ }
67
+
68
+ .meta {
69
+ font-size: $font-size-smaller;
70
+ color: var(--grey-5);
71
+
72
+ .ic {
73
+ margin-right: .0625rem;
74
+ }
75
+
76
+ .item + .item {
77
+ margin-left: .625rem;
78
+ }
79
+
80
+ &.footer {
81
+ position: absolute;
82
+ bottom: .5rem;
83
+ max-width: calc(100% - 7rem);
84
+ white-space: nowrap;
85
+ overflow: hidden;
86
+ text-overflow: ellipsis;
87
+ justify-content: flex-start;
88
+
89
+ span {
90
+ margin-right: .5rem;
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ .cards {
97
+ display: flex;
98
+ margin: 0 auto;
99
+ align-items: center;
100
+ flex-wrap: wrap;
101
+ justify-content: space-between;
102
+
103
+ &.hide .item {
104
+ display: none;
105
+ }
106
+
107
+ .item {
108
+
109
+ @extend $item;
110
+ perspective: 62.5rem;
111
+ &.show {
112
+ display: block !important;
113
+ }
114
+
115
+ .cover,
116
+ .info {
117
+ position: absolute;
118
+ the-flex();
119
+ border-radius: .375rem;
120
+ height: 100%;
121
+ width: 100%;
122
+ backface-visibility: hidden;
123
+ transform-style: preserve-3d;
124
+ transition: ease-in-out 600ms;
125
+ }
126
+
127
+ .cover {
128
+ background-position: center;
129
+ background-size: cover;
130
+ padding: .5rem 1rem;
131
+ font-size: $font-size-medium;
132
+ color: var(--header-text-color);
133
+ overflow: hidden;
134
+ transform: rotateY(0deg);
135
+ background-image: unquote(hexo-config('index.cover'));
136
+
137
+ .title {
138
+ margin: 0;
139
+ white-space: normal;
140
+ text-align: center;
141
+ }
142
+
143
+ &::before {
144
+ position: absolute;
145
+ display: block;
146
+ content: '';
147
+ top: 0;
148
+ left: 0;
149
+ right: 0;
150
+ bottom: 0;
151
+ background-image: linear-gradient(135deg, #434343 0%, black 100%);
152
+ opacity: .25;
153
+ z-index: $zindex-0;
154
+ }
155
+
156
+ span {
157
+ font-size: $font-size-smallest;
158
+ position: absolute;
159
+ right: .9375rem;
160
+ top: .625rem;
161
+ padding: 0 .3125rem;
162
+ border-radius: .3125rem;
163
+ box-shadow: 0 0 .3125rem .0625rem rgba(0,0,0,.6);
164
+ background: rgba(0,0,0,.5);
165
+ }
166
+ }
167
+
168
+
169
+ .info {
170
+ background-color: var(--grey-0);
171
+ transform: rotateY(-180deg);
172
+ padding: 1rem 1.5rem 4rem;
173
+ justify-content: space-between;
174
+
175
+ +mobile() {
176
+ padding: 1rem 1rem 4rem;
177
+ }
178
+
179
+ .ribbon {
180
+ left: -2.5rem;
181
+ margin-bottom: .8rem;
182
+ max-width: calc(100% + 2rem);
183
+ +mobile() {
184
+ left: -2rem;
185
+ }
186
+ }
187
+ }
188
+
189
+ &:nth-child(even) .info {
190
+ transform: rotateY(180deg);
191
+ }
192
+
193
+ &.active {
194
+ .cover {
195
+ transform: rotateY(180deg);
196
+ }
197
+
198
+ .info {
199
+ transform: rotateY(0deg);
200
+ box-shadow: 0 0 2rem var(--box-bg-shadow);
201
+ }
202
+ }
203
+
204
+ &:nth-child(even).active {
205
+ .cover {
206
+ transform: rotateY(-180deg);
207
+ }
208
+ }
209
+
210
+ .title {
211
+ .ic {
212
+ font-size: 80%;
213
+ }
214
+ }
215
+
216
+ ul.posts {
217
+ display: flex;
218
+ flex-wrap: wrap;
219
+ justify-content: space-between;
220
+ align-content: baseline;
221
+ min-height: 5rem;
222
+ overflow: hidden;
223
+
224
+ li {
225
+ width: 45%;
226
+ overflow: hidden;
227
+ white-space: nowrap;
228
+ text-overflow: ellipsis;
229
+ color: var(--primary-color);
230
+ }
231
+ }
232
+ }
233
+ }
234
+
235
+ .segments {
236
+ the-flex();
237
+
238
+ > .item {
239
+ @extend $item;
240
+
241
+ display: flex;
242
+ border-radius: .625rem;
243
+
244
+ width: calc(100% - 2rem);
245
+ min-width: calc(100% - 2rem);
246
+
247
+ shadow-box(false);
248
+ the-transition();
249
+
250
+
251
+ +mobile() {
252
+ flex-direction: column;
253
+ height: fit-content;
254
+ max-height: fit-content;
255
+ }
256
+
257
+ &:hover {
258
+ box-shadow: 0 0 2rem var(--box-bg-shadow);
259
+
260
+ .cover img {
261
+ transform: scale(1.05) rotate(1deg);
262
+ }
263
+ }
264
+ }
265
+
266
+ .cover {
267
+ width: 50%;
268
+ margin-right: 1.5rem;
269
+ clip-path: polygon(0 0, 92% 0%, 100% 100%, 0% 100%);
270
+ border-radius: .625rem 0 0 .625rem;
271
+ overflow: hidden;
272
+
273
+ +mobile() {
274
+ width: 100%;
275
+ height: 14rem;
276
+ margin: auto;
277
+ clip-path: polygon(0 0, 100% 0, 100% 92%, 0 100%);
278
+ border-radius: .625rem .625rem 0 0;
279
+ }
280
+
281
+ img {
282
+ object-fit: cover;
283
+ width: 100%;
284
+ height: 100%;
285
+ the-transition();
286
+ }
287
+ }
288
+
289
+ .info {
290
+ position: relative;
291
+ width: 50%;
292
+ padding: 1rem 1.5rem 3rem 0;
293
+ perspective: 62.5rem;
294
+
295
+ +mobile() {
296
+ width: 100%;
297
+ height: 14rem;
298
+ padding: 0 1rem 3rem;
299
+ }
300
+
301
+ .meta {
302
+ display: flex;
303
+ justify-content: flex-end;
304
+ margin: 0;
305
+
306
+ +mobile() {
307
+ .item:not(:first-child) {
308
+ display: none;
309
+ }
310
+ }
311
+ }
312
+
313
+ h3 {
314
+ text-overflow: ellipsis;
315
+ overflow: hidden;
316
+ white-space: nowrap;
317
+ margin: .625rem 0;
318
+ color: var(--primary-color);
319
+ }
320
+
321
+ .excerpt {
322
+ overflow: hidden;
323
+ font-size: $font-size-small;
324
+ max-height: 5rem;
325
+ display: -webkit-box;
326
+ -webkit-box-orient: vertical;
327
+ -webkit-line-clamp: 3;
328
+ text-overflow: ellipsis;
329
+ }
330
+
331
+ }
332
+
333
+
334
+ > .item:nth-child(even) {
335
+ flex-direction: row-reverse;
336
+
337
+ +mobile() {
338
+ flex-direction: column;
339
+ }
340
+
341
+ .cover {
342
+ margin-right: auto;
343
+ margin-left: 1.5rem;
344
+ clip-path: polygon(0 0%, 100% 0%, 100% 100%, 8% 100%);
345
+ border-radius: 0 .625rem .625rem 0;
346
+
347
+ +mobile() {
348
+ width: 100%;
349
+ margin: auto;
350
+ clip-path: polygon(0 0,100% 0,100% 100%,0 92%);
351
+ border-radius: .625rem .625rem 0 0;
352
+ }
353
+ }
354
+
355
+ .info {
356
+ padding: 1rem 0 3rem 1.5rem;
357
+
358
+ +mobile() {
359
+ padding: 0 1rem 3rem;
360
+ }
361
+
362
+ .meta {
363
+ justify-content: flex-start;
364
+ }
365
+ }
366
+
367
+ .btn {
368
+ left: 0;
369
+ right: auto;
370
+ border-radius: 0 1rem;
371
+ background-image: linear-gradient(to right, var(--color-orange) 0, var(--color-pink) 100%);
372
+ }
373
+
374
+ .meta.footer {
375
+ right: .5rem;
376
+ justify-content: flex-start;
377
+ }
378
+
379
+ &:hover {
380
+ .cover img {
381
+ transform: scale(1.05) rotate(-1deg);
382
+ }
383
+ }
384
+ }
385
+ }
@@ -0,0 +1,56 @@
1
+ // Page specific styles
2
+
3
+ @import 'home';
4
+ @import 'collapse';
5
+ @import 'tag-cloud';
6
+
7
+ .page {
8
+ .notfound {
9
+ width: 18.75rem;
10
+ height: 22.625rem;
11
+ background: url("../images/404.png") no-repeat center bottom;
12
+ text-align: center;
13
+ margin: 6.25rem auto;
14
+ }
15
+
16
+ .anchor::before {
17
+ font-family-icons();
18
+ color: var(--grey-4);
19
+ position: absolute;
20
+ left: -1.5625rem;
21
+ margin-top: .25rem;
22
+ visibility: visible;
23
+
24
+ +mobile-small() {
25
+ left: -.1875rem;
26
+ }
27
+ }
28
+
29
+ .body h1 .anchor::before {
30
+ @extend .i-sakura:before;
31
+ @extend .rotate;
32
+ font-size: $font-size-small;
33
+ margin-top: .15rem;
34
+ color: pink;
35
+ left: -1.875rem;
36
+
37
+ +mobile-small() {
38
+ left: -.3125rem;
39
+ }
40
+ }
41
+
42
+ .body h2 .anchor::before {
43
+ @extend .i-heartbeat:before;
44
+ @extend .beat;
45
+ font-size: $font-size-smaller;
46
+ color: var(--color-pink);
47
+ }
48
+
49
+ .body h3 .anchor::before {
50
+ @extend .i-star:before;
51
+ @extend .flash;
52
+ font-size: $font-size-smallest;
53
+ color: var(--color-orange);
54
+ }
55
+
56
+ }
@@ -0,0 +1,12 @@
1
+ .tag.cloud {
2
+ text-align: center;
3
+
4
+ a {
5
+ display: inline-block;
6
+ margin: .625rem;
7
+
8
+ &:hover {
9
+ color: var(--primary-color) !important;
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,39 @@
1
+ .breadcrumb {
2
+ display: inline-flex;
3
+ font-size: $font-size-smaller;
4
+ align-items: center;
5
+ margin: 1.25rem 0;
6
+ flex-wrap: wrap;
7
+
8
+ .ic {
9
+ margin: 0 .125rem;
10
+ color: var(--grey-4);
11
+
12
+ &:nth-child(1) {
13
+ margin-left: 0;
14
+ margin-right: .3125rem;
15
+ }
16
+ }
17
+
18
+ span {
19
+ white-space: pre;
20
+ }
21
+
22
+ span.current {
23
+ background-color: var(--color-red-a1);
24
+ border-radius: .625rem;
25
+ padding: 0 .625rem;
26
+ the-transition();
27
+
28
+ span {
29
+ white-space: normal;
30
+ }
31
+ a {
32
+ color: var(--primary-color);
33
+ }
34
+
35
+ &:hover {
36
+ background-color: var(--color-red-a3);
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,41 @@
1
+ #copyright {
2
+ background: var(--grey-2);
3
+ padding: 1rem 2rem;
4
+ position: relative;
5
+ font-size: $font-size-smallest;
6
+ border-radius: .625rem;
7
+ color: var(--grey-6);
8
+
9
+ li {
10
+ &::before {
11
+ font-family-icons()
12
+ color: var(--grey-5);
13
+ margin-right: .3125rem;
14
+ font-size: 1.1rem;
15
+ line-height: .75rem;
16
+ vertical-align: -.0667rem;
17
+ }
18
+ }
19
+
20
+ .author::before {
21
+ @extend .i-person:before;
22
+ }
23
+
24
+ .link::before {
25
+ @extend .i-link-circle:before;
26
+ }
27
+
28
+ .license::before {
29
+ @extend .i-share:before;
30
+ }
31
+ // &::before {
32
+ // content: "";
33
+ // position: absolute;
34
+ // width: .3125rem;
35
+ // height: 100%;
36
+ // left: -.3125rem;
37
+ // top: 0rem;
38
+ // background: var(--primary-color);
39
+ // border-radius: .375rem;
40
+ // }
41
+ }