nadesiko3 3.3.83 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3core",
3
- "version": "3.3.82",
3
+ "version": "3.4.1",
4
4
  "description": "Japanese Programming Language Nadesiko v3 core",
5
5
  "main": "index.mjs",
6
6
  "type": "module",
@@ -1,8 +1,8 @@
1
1
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
2
2
  const coreVersion = {
3
- version: '3.3.82',
3
+ version: '3.4.1',
4
4
  major: 3,
5
- minor: 3,
6
- patch: 82
5
+ minor: 4,
6
+ patch: 1
7
7
  };
8
8
  export default coreVersion;
@@ -11,9 +11,9 @@ export interface NakoCoreVersion {
11
11
  }
12
12
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
13
13
  const coreVersion: NakoCoreVersion = {
14
- version: '3.3.82',
14
+ version: '3.4.1',
15
15
  major: 3,
16
- minor: 3,
17
- patch: 82
16
+ minor: 4,
17
+ patch: 1
18
18
  }
19
19
  export default coreVersion
@@ -6,6 +6,7 @@ const kanakanji = /^[\u3005\u4E00-\u9FCF_a-zA-Z0-9ァ-ヶー\u2460-\u24FF\u2776-
6
6
  const hira = /^[ぁ-ん]/;
7
7
  const allHiragana = /^[ぁ-ん]+$/;
8
8
  const wordHasIjoIka = /^.+(以上|以下|超|未満)$/;
9
+ const wordSpecial = /^(かつ|または)/;
9
10
  const errorRead = (ch) => {
10
11
  return function () { throw new Error('突然の『' + ch + '』があります。'); };
11
12
  };
@@ -148,12 +149,18 @@ function cbWordParser(src, isTrimOkurigana = true) {
148
149
  let res = '';
149
150
  let josi = '';
150
151
  while (src !== '') {
152
+ // 1文字以上のとき
151
153
  if (res.length > 0) {
154
+ // 「かつ」「または」なら分割する
155
+ const jsw = wordSpecial.exec(src);
156
+ if (jsw) {
157
+ break;
158
+ }
152
159
  // 助詞の判定
153
160
  const j = josiRE.exec(src);
154
161
  if (j) {
155
162
  josi = j[0].replace(/^\s+/, '');
156
- src = src.substr(j[0].length);
163
+ src = src.substring(j[0].length);
157
164
  // 助詞の直後にある「,」を飛ばす #877
158
165
  if (src.charAt(0) === ',') {
159
166
  src = src.substr(1);
@@ -165,18 +172,19 @@ function cbWordParser(src, isTrimOkurigana = true) {
165
172
  const m = kanakanji.exec(src);
166
173
  if (m) {
167
174
  res += m[0];
168
- src = src.substr(m[0].length);
175
+ src = src.substring(m[0].length);
169
176
  continue;
170
177
  }
171
178
  // ひらがな?
172
179
  const h = hira.test(src);
173
180
  if (h) {
174
181
  res += src.charAt(0);
175
- src = src.substr(1);
182
+ src = src.substring(1);
176
183
  continue;
177
184
  }
178
185
  break; // other chars
179
186
  }
187
+ // --- 単語分割における特殊ルール ---
180
188
  // 「間」の特殊ルール (#831)
181
189
  // 「等しい間」や「一致する間」なら「間」をsrcに戻す。ただし「システム時間」はそのままにする。
182
190
  if (/[ぁ-ん]間$/.test(res)) {
@@ -188,12 +196,13 @@ function cbWordParser(src, isTrimOkurigana = true) {
188
196
  if (ii) {
189
197
  src = ii[1] + josi + src;
190
198
  josi = '';
191
- res = res.substr(0, res.length - ii[1].length);
199
+ res = res.substring(0, res.length - ii[1].length);
192
200
  }
193
201
  // 助詞「こと」「である」「です」などは「**すること」のように使うので削除 #936 #939 #974
194
202
  if (removeJosiMap[josi]) {
195
203
  josi = '';
196
204
  }
205
+ // 送り仮名の省略ルール
197
206
  // 漢字カタカナ英語から始まる語句 --- 送り仮名を省略
198
207
  if (isTrimOkurigana) {
199
208
  res = trimOkurigana(res);
@@ -8,6 +8,7 @@ const kanakanji = /^[\u3005\u4E00-\u9FCF_a-zA-Z0-9ァ-ヶー\u2460-\u24FF\u2776-
8
8
  const hira = /^[ぁ-ん]/
9
9
  const allHiragana = /^[ぁ-ん]+$/
10
10
  const wordHasIjoIka = /^.+(以上|以下|超|未満)$/
11
+ const wordSpecial = /^(かつ|または)/
11
12
  const errorRead = (ch: string): any => {
12
13
  return function () { throw new Error('突然の『' + ch + '』があります。') }
13
14
  }
@@ -164,12 +165,16 @@ function cbWordParser (src: string, isTrimOkurigana = true): NakoLexParseResult
164
165
  let res = ''
165
166
  let josi = ''
166
167
  while (src !== '') {
168
+ // 1文字以上のとき
167
169
  if (res.length > 0) {
170
+ // 「かつ」「または」なら分割する
171
+ const jsw = wordSpecial.exec(src)
172
+ if (jsw) { break }
168
173
  // 助詞の判定
169
174
  const j = josiRE.exec(src)
170
175
  if (j) {
171
176
  josi = j[0].replace(/^\s+/, '')
172
- src = src.substr(j[0].length)
177
+ src = src.substring(j[0].length)
173
178
  // 助詞の直後にある「,」を飛ばす #877
174
179
  if (src.charAt(0) === ',') { src = src.substr(1) }
175
180
  break
@@ -179,18 +184,19 @@ function cbWordParser (src: string, isTrimOkurigana = true): NakoLexParseResult
179
184
  const m = kanakanji.exec(src)
180
185
  if (m) {
181
186
  res += m[0]
182
- src = src.substr(m[0].length)
187
+ src = src.substring(m[0].length)
183
188
  continue
184
189
  }
185
190
  // ひらがな?
186
191
  const h = hira.test(src)
187
192
  if (h) {
188
193
  res += src.charAt(0)
189
- src = src.substr(1)
194
+ src = src.substring(1)
190
195
  continue
191
196
  }
192
197
  break // other chars
193
198
  }
199
+ // --- 単語分割における特殊ルール ---
194
200
  // 「間」の特殊ルール (#831)
195
201
  // 「等しい間」や「一致する間」なら「間」をsrcに戻す。ただし「システム時間」はそのままにする。
196
202
  if (/[ぁ-ん]間$/.test(res)) {
@@ -202,11 +208,12 @@ function cbWordParser (src: string, isTrimOkurigana = true): NakoLexParseResult
202
208
  if (ii) {
203
209
  src = ii[1] + josi + src
204
210
  josi = ''
205
- res = res.substr(0, res.length - ii[1].length)
211
+ res = res.substring(0, res.length - ii[1].length)
206
212
  }
207
213
  // 助詞「こと」「である」「です」などは「**すること」のように使うので削除 #936 #939 #974
208
214
  if (removeJosiMap[josi]) { josi = '' }
209
215
 
216
+ // 送り仮名の省略ルール
210
217
  // 漢字カタカナ英語から始まる語句 --- 送り仮名を省略
211
218
  if (isTrimOkurigana) {
212
219
  res = trimOkurigana(res)
@@ -463,7 +463,7 @@ export default {
463
463
  },
464
464
  '範囲内': { // @VがAからBの範囲内か // @はんいない
465
465
  type: 'func',
466
- josi: [['が'], ['から'], ['の','までの']],
466
+ josi: [['が'], ['から'], ['の', 'までの']],
467
467
  pure: true,
468
468
  fn: function (v: any, a: any, b: any) {
469
469
  return (a <= v) && (v <= b)
@@ -0,0 +1,26 @@
1
+ /* eslint-disable no-undef */
2
+ import assert from 'assert'
3
+ import { NakoCompiler } from '../src/nako3.mjs'
4
+
5
+ describe('or_test.js', async () => {
6
+ const cmp = async (/** @type {string} */ code, /** @type {string} */ res) => {
7
+ const nako = new NakoCompiler()
8
+ assert.strictEqual((await nako.runAsync(code)).log, res)
9
+ }
10
+ it('『または』がうまく動いてない #1379', async () => {
11
+ await cmp('(0||0)を表示', '0')
12
+ await cmp('(0または0)を表示', '0')
13
+ await cmp('(0または1)を表示', '1')
14
+ await cmp('ゼロ=0;(ゼロ||ゼロ)を表示', '0')
15
+ await cmp('ゼロ=0;(ゼロまたはゼロ)を表示', '0')
16
+ await cmp('ゼロ=0;イチ=1;(ゼロまたはイチ)を表示', '1')
17
+ })
18
+ it('『かつ』がうまく動いてない #1379', async () => {
19
+ await cmp('(0かつ0)を表示', '0')
20
+ await cmp('(1かつ1)を表示', '1')
21
+ await cmp('ゼロ=0;イチ=1;(ゼロかつゼロ)を表示', '0')
22
+ await cmp('ゼロ=0;イチ=1;(ゼロかつイチ)を表示', '0')
23
+ await cmp('ゼロ=0;イチ=1;(ゼロかつゼロ)を表示', '0')
24
+ await cmp('ゼロ=0;イチ=1;(イチかつイチ)を表示', '1')
25
+ })
26
+ })
@@ -0,0 +1,30 @@
1
+ /* eslint-disable no-undef */
2
+ import assert from 'assert'
3
+ import { NakoCompiler } from '../src/nako3.mjs'
4
+
5
+ describe('or_test.js', async () => {
6
+ const cmp = async (/** @type {string} */ code, /** @type {string} */ res) => {
7
+ const nako = new NakoCompiler()
8
+ assert.strictEqual((await nako.runAsync(code)).log, res)
9
+ }
10
+ it('『または』がうまく動いてない #1379', async () => {
11
+ await cmp('(0||0)を表示', '0')
12
+ await cmp('(0または0)を表示', '0')
13
+ await cmp('(0または1)を表示', '1')
14
+ await cmp('ゼロ=0;(ゼロ||ゼロ)を表示', '0')
15
+ await cmp('ゼロ=0;(ゼロまたはゼロ)を表示', '0')
16
+ await cmp('ゼロ=0;イチ=1;(ゼロまたはイチ)を表示', '1')
17
+ })
18
+ it('『かつ』がうまく動いてない #1379', async () => {
19
+ await cmp('(0かつ0)を表示', '0')
20
+ await cmp('(1かつ1)を表示', '1')
21
+ await cmp('ゼロ=0;イチ=1;(ゼロかつゼロ)を表示', '0')
22
+ await cmp('ゼロ=0;イチ=1;(ゼロかつイチ)を表示', '0')
23
+ await cmp('ゼロ=0;イチ=1;(ゼロかつゼロ)を表示', '0')
24
+ await cmp('ゼロ=0;イチ=1;(イチかつイチ)を表示', '1')
25
+ })
26
+ it('『または』が動かない #1379', async () => {
27
+ await cmp('条件イははい。条件ロはいいえ。もし、条件イまたは条件ロならば「AAA」と表示。', 'AAA')
28
+ await cmp('条件イははい。条件ロははい。もし、条件イかつ条件ロならば「BBB」と表示。', 'BBB')
29
+ })
30
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.3.83",
3
+ "version": "3.4.1",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
package/release/_hash.txt CHANGED
@@ -9,10 +9,10 @@ editor.js:
9
9
  sha256(base64): AKs71TgblihDpp84UJZwzLbQRH4uHuwj7ZJMfMPZK8k=
10
10
  sha512(base64): K9Hp76NUQnMlUeuV++HHrbnhlJpUH0lOXb6kewFf4VWqA7Cs7udcyiXAYZBZDDGZHEGfyHhU4TjPoivEKsikVQ==
11
11
  nako_gen_async.js:
12
- md5(hex): 54370beeb81641625d56b9c6eb790f3e
13
- sha256(hex): c96a0f126c6c4e1e6ae17923304a123b2b4c967983f6979c855d9ff49c924cc3
14
- sha256(base64): yWoPEmxsTh5q4XkjMEoSOytMlnmD9pechV2f9JySTMM=
15
- sha512(base64): m+SmnCg2ooA9zro2tIx4ZEyVISiw6oK7DZvTvCbQYEhNxIZHpUoe4cOdOWhueA6nrPahbSP0S0eRo70dUBNOPg==
12
+ md5(hex): fe5a301a302834cf168ea1b52ea1114a
13
+ sha256(hex): 3934d0e8c6fd8241f175640a895a07eec122c52bd579882f3770de518c4bf638
14
+ sha256(base64): OTTQ6Mb9gkHxdWQKiVoH7sEixSvVeYgvN3DeUYxL9jg=
15
+ sha512(base64): DZsoBWxek3lqI3AWSHDHDh8roGBwkjUxNFBYfMw/9P9pBDZle12XW64UHCY9Bs9ToDV9aMqn92oI57n1j2J6rA==
16
16
  plugin_caniuse.js:
17
17
  md5(hex): 95a7a5c98a92a46b6435e577daba3241
18
18
  sha256(hex): 57638b3979be70b45ab8085861f6b2ece43200bd6aa92765d73caf76b9e6fea9
@@ -54,17 +54,17 @@ plugin_weykturtle3d.js:
54
54
  sha256(base64): ND/1JqYrFVGTIPYsbBk+tScnF8RVzgYPM0/E2aE8GRw=
55
55
  sha512(base64): T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==
56
56
  version.js:
57
- md5(hex): 0a41f5aa2a24979cd2b4f52265542820
58
- sha256(hex): 83b482248402b5dbb04bf71365b4433c07c4a305983697ca7fc3f70593172402
59
- sha256(base64): g7SCJIQCtduwS/cTZbRDPAfEowWYNpfKf8P3BZMXJAI=
60
- sha512(base64): LnBDfrfkwPssYPKsKUeEu+ChdHDe8vSyMKcxIgY1DnCYFWcq4OMLns2Cpvrd3TRpV6LNd7Zvsk5ovgsTVGCK0A==
57
+ md5(hex): 8593908cb66e37f89a5c653b5baea398
58
+ sha256(hex): 61520bc06672ab62082211f93bc8ba87908e22a8e294c33677a25002e0206403
59
+ sha256(base64): YVILwGZyq2IIIhH5O8i6h5COIqjilMM2d6JQAuAgZAM=
60
+ sha512(base64): 6HnPJpnGj+vucUs4ktOTQL0sw5yL23IgOT9LJMruPOmF7mKcLE+xDA4D/fDVeY9szTt1PB2mlMc/+Q6MVG7pwg==
61
61
  wnako3.js:
62
- md5(hex): baeb8f4966df6246262c0dc4c2f5673d
63
- sha256(hex): f480846ebd693a77133b18c47100f7cc48641b6fc9b46e1e57c2bd44f14afcab
64
- sha256(base64): 9ICEbr1pOncTOxjEcQD3zEhkG2/JtG4eV8K9RPFK/Ks=
65
- sha512(base64): 66dB501XPBEj4uhGaoaIWLv1NhmBOK8tQqTXeOwoOz0VvfFtihHUIQASfxZHK7qNglTIxsMderf8gkAjXSXVLw==
62
+ md5(hex): 67df3591c0c30d500e576e6a6feba498
63
+ sha256(hex): 593374d615993d322871308aa6f437f7db83a8883049e212706dd9568bac2d1a
64
+ sha256(base64): WTN01hWZPTIocTCKpvQ399uDqIgwSeIScG3ZVousLRo=
65
+ sha512(base64): ZsWFnKhQ7uXqi7Bv9kdeAKznuLIu9Il3F9J+BYq2OubEaJCPIyY0aL0seYjX1jLIqtpgJMzLo1gBLxyDb9YJVw==
66
66
  wnako3webworker.js:
67
- md5(hex): a804b0849cc1b2f2b86c33339ad0bd61
68
- sha256(hex): 593b6414fb14b476bb23161c99c0a9c04be092e6eb2c3585f1d995f14c56211d
69
- sha256(base64): WTtkFPsUtHa7IxYcmcCpwEvgkubrLDWF8dmV8UxWIR0=
70
- sha512(base64): /CxzB9m+bP0E4XeRGIx5DQ5qvHFtCZbWe0pP/SXu4RGd4kWEI+RkuZlztozjVAyzvlvoh4F1ffiaoS6rfuoIyA==
67
+ md5(hex): 090c10d08907019b43e0730d462d7960
68
+ sha256(hex): f2fd033e345e8ade4ca8c6bc648099e34605667ee7f2969c69c8943d73a1271a
69
+ sha256(base64): 8v0DPjReit5MqMa8ZICZ40YFZn7n8pacaciUPXOhJxo=
70
+ sha512(base64): OLJg7uNBJWVntCWlebkTG5JB7HQnXQBNbbuHK41vgdS3mMO8YzfPLJ3HMbqqtJwZzk0xLwa5U6k5g3gvhxT6XA==
@@ -1,14 +1,14 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/command.json.js" integrity="sha512-SJzO+9IGCegE/L5x7MinvtrYbFHNZO2qt+bYsscZN0FKL6ADBXZp4GzFD0D7Xd7jNcw8vr4X4TkEsuyYGHLBrQ==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/editor.js" integrity="sha512-K9Hp76NUQnMlUeuV++HHrbnhlJpUH0lOXb6kewFf4VWqA7Cs7udcyiXAYZBZDDGZHEGfyHhU4TjPoivEKsikVQ==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/nako_gen_async.js" integrity="sha512-m+SmnCg2ooA9zro2tIx4ZEyVISiw6oK7DZvTvCbQYEhNxIZHpUoe4cOdOWhueA6nrPahbSP0S0eRo70dUBNOPg==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_markup.js" integrity="sha512-pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_turtle.js" integrity="sha512-ADtegZGlBz0Uk7DKn2zzkVUaA7cdVCRbyc4iOGwEFmXdx0KtzYKumgKIHQiniH3AdGMBhgGf6WZI3y7xcLoFmw==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/version.js" integrity="sha512-LnBDfrfkwPssYPKsKUeEu+ChdHDe8vSyMKcxIgY1DnCYFWcq4OMLns2Cpvrd3TRpV6LNd7Zvsk5ovgsTVGCK0A==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/wnako3.js" integrity="sha512-66dB501XPBEj4uhGaoaIWLv1NhmBOK8tQqTXeOwoOz0VvfFtihHUIQASfxZHK7qNglTIxsMderf8gkAjXSXVLw==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.83&f=release/wnako3webworker.js" integrity="sha512-/CxzB9m+bP0E4XeRGIx5DQ5qvHFtCZbWe0pP/SXu4RGd4kWEI+RkuZlztozjVAyzvlvoh4F1ffiaoS6rfuoIyA==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/command.json.js" integrity="sha512-SJzO+9IGCegE/L5x7MinvtrYbFHNZO2qt+bYsscZN0FKL6ADBXZp4GzFD0D7Xd7jNcw8vr4X4TkEsuyYGHLBrQ==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/editor.js" integrity="sha512-K9Hp76NUQnMlUeuV++HHrbnhlJpUH0lOXb6kewFf4VWqA7Cs7udcyiXAYZBZDDGZHEGfyHhU4TjPoivEKsikVQ==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/nako_gen_async.js" integrity="sha512-DZsoBWxek3lqI3AWSHDHDh8roGBwkjUxNFBYfMw/9P9pBDZle12XW64UHCY9Bs9ToDV9aMqn92oI57n1j2J6rA==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_markup.js" integrity="sha512-pvb+QYO9LMUH055nPJJ5QaWyEYR3wDkHHilV5LLNyxObs7enlHGiF7Jt3Csd93JTdJ3n9hxFbTqWa1QuzVmTfQ==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_turtle.js" integrity="sha512-ADtegZGlBz0Uk7DKn2zzkVUaA7cdVCRbyc4iOGwEFmXdx0KtzYKumgKIHQiniH3AdGMBhgGf6WZI3y7xcLoFmw==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/version.js" integrity="sha512-6HnPJpnGj+vucUs4ktOTQL0sw5yL23IgOT9LJMruPOmF7mKcLE+xDA4D/fDVeY9szTt1PB2mlMc/+Q6MVG7pwg==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/wnako3.js" integrity="sha512-ZsWFnKhQ7uXqi7Bv9kdeAKznuLIu9Il3F9J+BYq2OubEaJCPIyY0aL0seYjX1jLIqtpgJMzLo1gBLxyDb9YJVw==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.4.1&f=release/wnako3webworker.js" integrity="sha512-OLJg7uNBJWVntCWlebkTG5JB7HQnXQBNbbuHK41vgdS3mMO8YzfPLJ3HMbqqtJwZzk0xLwa5U6k5g3gvhxT6XA==" crossorigin="anonymous"></script>