@konoui/mjimage 0.0.28 → 0.0.31

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 (55) hide show
  1. package/dist/mjs/index.d.ts +0 -1
  2. package/dist/mjs/index.js +0 -1
  3. package/dist/mjs/lib/calculator/calc.js +4 -6
  4. package/dist/mjs/lib/calculator/efficiency.js +2 -2
  5. package/dist/mjs/lib/controller/controller.js +19 -22
  6. package/dist/mjs/lib/controller/managers.js +2 -5
  7. package/dist/mjs/lib/controller/player-efficiency.js +3 -6
  8. package/dist/mjs/lib/controller/replay.js +3 -6
  9. package/dist/mjs/lib/controller/river.js +2 -5
  10. package/dist/mjs/lib/measure-text/index.js +2 -2
  11. package/dist/mjs/lib/myassert/index.d.ts +1 -0
  12. package/dist/mjs/lib/myassert/index.js +8 -0
  13. package/package.json +4 -45
  14. package/dist/mjs/lib/mjimage.d.ts +0 -11
  15. package/dist/mjs/lib/mjimage.js +0 -82
  16. package/dist/mjs/svg/_0.svg +0 -1
  17. package/dist/mjs/svg/m0.svg +0 -1
  18. package/dist/mjs/svg/m1.svg +0 -1
  19. package/dist/mjs/svg/m2.svg +0 -1
  20. package/dist/mjs/svg/m3.svg +0 -1
  21. package/dist/mjs/svg/m4.svg +0 -1
  22. package/dist/mjs/svg/m5.svg +0 -1
  23. package/dist/mjs/svg/m6.svg +0 -1
  24. package/dist/mjs/svg/m7.svg +0 -1
  25. package/dist/mjs/svg/m8.svg +0 -1
  26. package/dist/mjs/svg/m9.svg +0 -1
  27. package/dist/mjs/svg/p0.svg +0 -1
  28. package/dist/mjs/svg/p1.svg +0 -1
  29. package/dist/mjs/svg/p2.svg +0 -1
  30. package/dist/mjs/svg/p3.svg +0 -1
  31. package/dist/mjs/svg/p4.svg +0 -1
  32. package/dist/mjs/svg/p5.svg +0 -1
  33. package/dist/mjs/svg/p6.svg +0 -1
  34. package/dist/mjs/svg/p7.svg +0 -1
  35. package/dist/mjs/svg/p8.svg +0 -1
  36. package/dist/mjs/svg/p9.svg +0 -1
  37. package/dist/mjs/svg/s0.svg +0 -1
  38. package/dist/mjs/svg/s1.svg +0 -1
  39. package/dist/mjs/svg/s2.svg +0 -1
  40. package/dist/mjs/svg/s3.svg +0 -1
  41. package/dist/mjs/svg/s4.svg +0 -1
  42. package/dist/mjs/svg/s5.svg +0 -1
  43. package/dist/mjs/svg/s6.svg +0 -1
  44. package/dist/mjs/svg/s7.svg +0 -1
  45. package/dist/mjs/svg/s8.svg +0 -1
  46. package/dist/mjs/svg/s9.svg +0 -1
  47. package/dist/mjs/svg/stick100.svg +0 -1
  48. package/dist/mjs/svg/stick1000.svg +0 -1
  49. package/dist/mjs/svg/z1.svg +0 -1
  50. package/dist/mjs/svg/z2.svg +0 -1
  51. package/dist/mjs/svg/z3.svg +0 -1
  52. package/dist/mjs/svg/z4.svg +0 -1
  53. package/dist/mjs/svg/z5.svg +0 -1
  54. package/dist/mjs/svg/z6.svg +0 -1
  55. package/dist/mjs/svg/z7.svg +0 -1
@@ -1,4 +1,3 @@
1
- export * from "./lib/mjimage";
2
1
  export * from "./lib/measure-text/";
3
2
  export * from "./lib/core/";
4
3
  export * from "./lib/table/";
package/dist/mjs/index.js CHANGED
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./lib/mjimage"), exports);
18
17
  __exportStar(require("./lib/measure-text/"), exports);
19
18
  __exportStar(require("./lib/core/"), exports);
20
19
  __exportStar(require("./lib/table/"), exports);
@@ -24,6 +24,7 @@ exports.DoubleCalculator = exports.deserializeWinResult = exports.N19 = exports.
24
24
  var constants_1 = require("../core/constants");
25
25
  var helper_1 = require("./helper");
26
26
  var parser_1 = require("../core/parser");
27
+ var myassert_1 = require("../myassert");
27
28
  var Hand = (function () {
28
29
  function Hand(input, allowBackBlock) {
29
30
  var _a;
@@ -88,13 +89,10 @@ var Hand = (function () {
88
89
  if (this.drawn != null) {
89
90
  var drawn_1 = this.drawn;
90
91
  var idx = tiles.findIndex(function (t) { return t.equals(drawn_1); });
91
- if (idx < 0)
92
- throw new Error("[debug] hand has drawn: ".concat(this.drawn, " but no tile in hands: ").concat(tiles.join("")));
93
- else
94
- tiles[idx] = tiles[idx].clone({ add: constants_1.OPERATOR.TSUMO });
92
+ (0, myassert_1.assert)(idx >= 0, "hand has drawn: ".concat(this.drawn, " but no tile in hands: ").concat(tiles.join("")));
93
+ tiles[idx] = tiles[idx].clone({ add: constants_1.OPERATOR.TSUMO });
95
94
  }
96
- if (tiles.length < 1)
97
- throw new Error("[debug] no tiles in hand ".concat(tiles.length, ", called: ").concat(this.called, ", data: ").concat(JSON.stringify(this.data, null, 2)));
95
+ (0, myassert_1.assert)(tiles.length > 0, "no tiles in hand ".concat(tiles.length, ", called: ").concat(this.called, ", data: ").concat(JSON.stringify(this.data, null, 2)));
98
96
  return tiles;
99
97
  },
100
98
  enumerable: false,
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Efficiency = void 0;
4
4
  var core_1 = require("../core");
5
+ var myassert_1 = require("../myassert");
5
6
  var calc_1 = require("./calc");
6
7
  var Efficiency = (function () {
7
8
  function Efficiency() {
8
9
  }
9
10
  Efficiency.calcCandidates = function (hand, choices) {
10
- if (choices.length == 0)
11
- throw new Error("[debug] choices to discard is zero");
11
+ (0, myassert_1.assert)(choices.length > 0, "choices to discard is zero");
12
12
  var ret = [];
13
13
  for (var _i = 0, choices_1 = choices; _i < choices_1.length; _i++) {
14
14
  var t = choices_1[_i];
@@ -34,13 +34,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
34
  }
35
35
  return to.concat(ar || Array.prototype.slice.call(from));
36
36
  };
37
- var __importDefault = (this && this.__importDefault) || function (mod) {
38
- return (mod && mod.__esModule) ? mod : { "default": mod };
39
- };
40
37
  Object.defineProperty(exports, "__esModule", { value: true });
41
38
  exports.Observer = exports.BaseActor = exports.ActorHand = exports.Controller = void 0;
42
- var assert_1 = __importDefault(require("assert"));
43
39
  var xstate_1 = require("xstate");
40
+ var myassert_1 = require("../myassert");
44
41
  var core_1 = require("../core/");
45
42
  var calculator_1 = require("../calculator");
46
43
  var parser_1 = require("../core/parser");
@@ -159,7 +156,7 @@ var Controller = (function () {
159
156
  var e = selected.events[0];
160
157
  switch (selected.type) {
161
158
  case "RON":
162
- (0, assert_1.default)(e.choices.RON, "ron choice is none");
159
+ (0, myassert_1.assert)(e.choices.RON, "ron choice is none");
163
160
  this.actor.send({
164
161
  type: selected.type,
165
162
  iam: e.wind,
@@ -171,7 +168,7 @@ var Controller = (function () {
171
168
  });
172
169
  break;
173
170
  case "DAI_KAN":
174
- (0, assert_1.default)(e.choices.DAI_KAN, "daikan choice is none");
171
+ (0, myassert_1.assert)(e.choices.DAI_KAN, "daikan choice is none");
175
172
  this.actor.send({
176
173
  type: selected.type,
177
174
  iam: e.wind,
@@ -181,8 +178,8 @@ var Controller = (function () {
181
178
  case "CHI":
182
179
  case "PON":
183
180
  var c = e.choices[selected.type];
184
- (0, assert_1.default)(c, "".concat(selected.type, " choice is none"));
185
- (0, assert_1.default)(selected.events.length == 1, "found more than one selected: ".concat(JSON.stringify(selected, null, 2)));
181
+ (0, myassert_1.assert)(c, "".concat(selected.type, " choice is none"));
182
+ (0, myassert_1.assert)(selected.events.length == 1, "found more than one selected: ".concat(JSON.stringify(selected, null, 2)));
186
183
  this.actor.send({
187
184
  type: selected.type,
188
185
  iam: e.wind,
@@ -192,12 +189,12 @@ var Controller = (function () {
192
189
  }
193
190
  else if (sample.type == "CHOICE_AFTER_DRAWN") {
194
191
  var selected = (0, events_1.prioritizeDrawnEvents)(events);
195
- (0, assert_1.default)(selected.events.length == 1, "found more than one selected: ".concat(JSON.stringify(selected, null, 2)));
192
+ (0, myassert_1.assert)(selected.events.length == 1, "found more than one selected: ".concat(JSON.stringify(selected, null, 2)));
196
193
  var e = selected.events[0];
197
194
  var w = e.wind;
198
195
  switch (selected.type) {
199
196
  case "TSUMO":
200
- (0, assert_1.default)(e.choices.TSUMO, "tsumo choice is none");
197
+ (0, myassert_1.assert)(e.choices.TSUMO, "tsumo choice is none");
201
198
  this.actor.send({
202
199
  type: selected.type,
203
200
  ret: (0, calculator_1.deserializeWinResult)(e.choices.TSUMO),
@@ -207,7 +204,7 @@ var Controller = (function () {
207
204
  break;
208
205
  case "REACH":
209
206
  var candidates = e.choices[selected.type];
210
- (0, assert_1.default)(candidates, "".concat(selected.type, " candidates is none"));
207
+ (0, myassert_1.assert)(candidates, "".concat(selected.type, " candidates is none"));
211
208
  this.actor.send({
212
209
  type: selected.type,
213
210
  tile: parser_1.Tile.from(candidates[0].tile),
@@ -216,7 +213,7 @@ var Controller = (function () {
216
213
  break;
217
214
  case "DISCARD":
218
215
  var tiles = e.choices[selected.type];
219
- (0, assert_1.default)(tiles, "".concat(selected.type, " choice is none"));
216
+ (0, myassert_1.assert)(tiles, "".concat(selected.type, " choice is none"));
220
217
  this.actor.send({
221
218
  type: selected.type,
222
219
  tile: parser_1.Tile.from(tiles[0]).clone({ remove: core_1.OPERATOR.TSUMO }),
@@ -225,7 +222,7 @@ var Controller = (function () {
225
222
  break;
226
223
  case "AN_KAN": {
227
224
  var choices = e.choices[selected.type];
228
- (0, assert_1.default)(choices, "".concat(selected.type, " choice is none"));
225
+ (0, myassert_1.assert)(choices, "".concat(selected.type, " choice is none"));
229
226
  this.actor.send({
230
227
  type: selected.type,
231
228
  block: parser_1.BlockAnKan.from(choices[0]),
@@ -235,7 +232,7 @@ var Controller = (function () {
235
232
  }
236
233
  case "SHO_KAN": {
237
234
  var choices = e.choices[selected.type];
238
- (0, assert_1.default)(choices, "".concat(selected.type, " choice is none"));
235
+ (0, myassert_1.assert)(choices, "".concat(selected.type, " choice is none"));
239
236
  this.actor.send({
240
237
  type: selected.type,
241
238
  block: parser_1.Block.from(choices[0]),
@@ -249,10 +246,10 @@ var Controller = (function () {
249
246
  }
250
247
  }
251
248
  else if (sample.type == "CHOICE_AFTER_CALLED") {
252
- (0, assert_1.default)(sample.choices.DISCARD, "discard candidate tile is none: ".concat(JSON.stringify(sample, null, 2), " ").concat(this.hand(sample.wind).toString()));
249
+ (0, myassert_1.assert)(sample.choices.DISCARD, "discard candidate tile is none: ".concat(JSON.stringify(sample, null, 2), " ").concat(this.hand(sample.wind).toString()));
253
250
  var w = sample.wind;
254
251
  var t = parser_1.Tile.from(sample.choices.DISCARD[0]);
255
- (0, assert_1.default)(t != null, "undefined tile ".concat(this.hand(w).toString()));
252
+ (0, myassert_1.assert)(t != null, "undefined tile ".concat(this.hand(w).toString()));
256
253
  this.actor.send({ type: "DISCARD", tile: t, iam: w });
257
254
  }
258
255
  else if (sample.type == "CHOICE_FOR_CHAN_KAN") {
@@ -265,7 +262,7 @@ var Controller = (function () {
265
262
  return;
266
263
  }
267
264
  var e = selected[0];
268
- (0, assert_1.default)(e.choices.RON, "ron choice is none");
265
+ (0, myassert_1.assert)(e.choices.RON, "ron choice is none");
269
266
  this.actor.send({
270
267
  type: "RON",
271
268
  iam: e.wind,
@@ -336,7 +333,7 @@ var Controller = (function () {
336
333
  ? this.wall.blindDoraMarkers
337
334
  : undefined;
338
335
  var final = new calculator_1.DoubleCalculator(hand, __assign(__assign({}, ret.boardContext), { sticks: this.placeManager.sticks, blindDoraMarkers: blindDoraMarkers })).calc([ret.hand]);
339
- (0, assert_1.default)(final);
336
+ (0, myassert_1.assert)(final);
340
337
  return final;
341
338
  };
342
339
  Controller.prototype.doWin = function (w, t, params) {
@@ -526,7 +523,7 @@ var Controller = (function () {
526
523
  }
527
524
  var tiles = this.cannotDiscardTile(called);
528
525
  var ret = hand.filter(function (v) { return !tiles.some(function (t) { return v.equals(t, true); }); });
529
- (0, assert_1.default)(ret.length > 0, "no tiles to discard. hand: ".concat(this.hand(w), ", suji: ").concat(tiles, ", block-chi: ").concat(called));
526
+ (0, myassert_1.assert)(ret.length > 0, "no tiles to discard. hand: ".concat(this.hand(w), ", suji: ").concat(tiles, ", block-chi: ").concat(called));
530
527
  return ret;
531
528
  };
532
529
  Controller.prototype.cannotDiscardTile = function (called) {
@@ -568,7 +565,7 @@ var Controller = (function () {
568
565
  return false;
569
566
  for (var _b = 0, blocks_1 = blocks; _b < blocks_1.length; _b++) {
570
567
  var b = blocks_1[_b];
571
- (0, assert_1.default)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 0, "h op ".concat(b.toString()));
568
+ (0, myassert_1.assert)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 0, "h op ".concat(b.toString()));
572
569
  }
573
570
  return blocks;
574
571
  };
@@ -596,7 +593,7 @@ var Controller = (function () {
596
593
  return false;
597
594
  for (var _a = 0, blocks_2 = blocks; _a < blocks_2.length; _a++) {
598
595
  var b = blocks_2[_a];
599
- (0, assert_1.default)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 2, "h op ".concat(b.toString()));
596
+ (0, myassert_1.assert)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 2, "h op ".concat(b.toString()));
600
597
  }
601
598
  return blocks;
602
599
  };
@@ -625,7 +622,7 @@ var Controller = (function () {
625
622
  var rt = b.tiles[ridx].clone({ n: 0 });
626
623
  b = b.clone({ replace: { idx: ridx, tile: rt } });
627
624
  }
628
- (0, assert_1.default)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 1, "h op ".concat(b.toString()));
625
+ (0, myassert_1.assert)(b.tiles.filter(function (t) { return t.has(core_1.OPERATOR.HORIZONTAL); }).length == 1, "h op ".concat(b.toString()));
629
626
  return b;
630
627
  };
631
628
  Controller.prototype.canDrawnGame = function (w) {
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.Counter = exports.prevWind = exports.nextWind = exports.prevRound = exports.nextRound = exports.PlaceManager = exports.ScoreManager = void 0;
7
4
  exports.shuffle = shuffle;
8
- var assert_1 = __importDefault(require("assert"));
5
+ var myassert_1 = require("../myassert");
9
6
  var constants_1 = require("../core/constants");
10
7
  var calculator_1 = require("../calculator");
11
8
  var parser_1 = require("../core/parser");
@@ -68,7 +65,7 @@ var PlaceManager = (function () {
68
65
  };
69
66
  PlaceManager.prototype.decrementReachStick = function () {
70
67
  this.sticks.reach--;
71
- (0, assert_1.default)(this.sticks.reach >= 0);
68
+ (0, myassert_1.assert)(this.sticks.reach >= 0);
72
69
  };
73
70
  PlaceManager.prototype.resetDeadStick = function () {
74
71
  this.sticks.dead = 0;
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.RiskRank = exports.PlayerEfficiency = void 0;
7
- var assert_1 = __importDefault(require("assert"));
4
+ var myassert_1 = require("../myassert");
8
5
  var constants_1 = require("../core/constants");
9
6
  var parser_1 = require("../core/parser");
10
7
  var weight = function (t, doras) {
@@ -44,7 +41,7 @@ var PlayerEfficiency = (function () {
44
41
  return playerCandidates;
45
42
  };
46
43
  PlayerEfficiency.selectMinPriority = function (c, playerCandidates, doras) {
47
- (0, assert_1.default)(playerCandidates.length > 0);
44
+ (0, myassert_1.assert)(playerCandidates.length > 0);
48
45
  var min = 0;
49
46
  var idx = 0;
50
47
  for (var i = 0; i < playerCandidates.length; i++) {
@@ -92,7 +89,7 @@ var RiskRank = (function () {
92
89
  function RiskRank() {
93
90
  }
94
91
  RiskRank.selectTile = function (c, targetUsers, tiles) {
95
- (0, assert_1.default)(targetUsers.length > 0 && tiles.length > 0);
92
+ (0, myassert_1.assert)(targetUsers.length > 0 && tiles.length > 0);
96
93
  var ret = tiles[0];
97
94
  var min = Number.POSITIVE_INFINITY;
98
95
  for (var _i = 0, tiles_1 = tiles; _i < tiles_1.length; _i++) {
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.Replayer = void 0;
7
- var assert_1 = __importDefault(require("assert"));
4
+ var myassert_1 = require("../myassert");
8
5
  var _1 = require("./");
9
6
  var Replayer = (function () {
10
7
  function Replayer(v) {
@@ -13,12 +10,12 @@ var Replayer = (function () {
13
10
  this.histories = JSON.parse(v);
14
11
  }
15
12
  Replayer.prototype.next = function () {
16
- (0, assert_1.default)(this.index < this.histories.length);
13
+ (0, myassert_1.assert)(this.index < this.histories.length);
17
14
  this.index++;
18
15
  };
19
16
  Replayer.prototype.prev = function () {
20
17
  this.index--;
21
- (0, assert_1.default)(this.index < 0);
18
+ (0, myassert_1.assert)(this.index < 0);
22
19
  };
23
20
  Replayer.prototype.start = function () {
24
21
  var c = _1.Controller.load(this.histories[this.index]);
@@ -8,12 +8,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
8
  }
9
9
  return to.concat(ar || Array.prototype.slice.call(from));
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.River = void 0;
16
- var assert_1 = __importDefault(require("assert"));
13
+ var myassert_1 = require("../myassert");
17
14
  var River = (function () {
18
15
  function River() {
19
16
  this.m = [];
@@ -24,7 +21,7 @@ var River = (function () {
24
21
  Object.defineProperty(River.prototype, "lastTile", {
25
22
  get: function () {
26
23
  var last = this.m.at(-1);
27
- (0, assert_1.default)(last != null, "lastTile is null(".concat(last, "). river: ").concat(JSON.stringify(this.m, null, 2)));
24
+ (0, myassert_1.assert)(last != null, "lastTile is null(".concat(last, "). river: ").concat(JSON.stringify(this.m, null, 2)));
28
25
  return last;
29
26
  },
30
27
  enumerable: false,
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MeasureText = void 0;
4
4
  var constants_1 = require("../core/constants");
5
+ var myassert_1 = require("../myassert");
5
6
  var MeasureText = (function () {
6
7
  function MeasureText(strText, numText) {
7
8
  if (strText === void 0) { strText = "東"; }
@@ -11,8 +12,7 @@ var MeasureText = (function () {
11
12
  this.measure = function (str, fontStr) {
12
13
  if (_this.ctx == null) {
13
14
  _this.ctx = document.createElement("canvas").getContext("2d");
14
- if (_this.ctx == null)
15
- throw new Error("[debug] context is null");
15
+ (0, myassert_1.assert)(_this.ctx, "context is null");
16
16
  }
17
17
  var ctx = _this.ctx;
18
18
  ctx.font = fontStr;
@@ -0,0 +1 @@
1
+ export declare function assert(condition: any, message?: string): asserts condition;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assert = assert;
4
+ function assert(condition, message) {
5
+ if (!condition) {
6
+ throw new Error(message);
7
+ }
8
+ }
package/package.json CHANGED
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "name": "@konoui/mjimage",
3
- "version": "0.0.28",
3
+ "version": "0.0.31",
4
4
  "description": "Generates Mahjong tiles in SVG format.",
5
5
  "author": "konoui",
6
6
  "license": "MIT",
7
7
  "repository": "github.com/konoui/mjimage",
8
- "sideEffects": [
9
- "./src/global.ts"
10
- ],
8
+ "sideEffects": false,
11
9
  "keywords": [
12
10
  "mahjong"
13
11
  ],
@@ -15,22 +13,15 @@
15
13
  "access": "public"
16
14
  },
17
15
  "scripts": {
18
- "start": "parcel",
19
- "build": "parcel build",
20
- "dev": "parcel src/index.html",
21
16
  "test": "jest",
22
17
  "cmd": "ts-node ./src/cmd/index.ts",
23
- "svg-sprite": "svg-sprite -C svg-sprite.config.json -shape-transform-svgo svg-sprite.config.json static/svg/*.svg",
24
18
  "tsc": "tsc --declaration --outDir ./dist/mjs",
25
- "prepublishOnly": "rm -rf ./dist && npm run tsc && cp -rf ./static/svg ./dist/mjs/svg/",
26
- "deploy": "./scripts/sync.sh personal",
27
- "analyze": "parcel build --reporter @parcel/reporter-bundle-analyzer"
19
+ "prepublishOnly": "rm -rf ./dist && npm run tsc"
28
20
  },
29
21
  "types": "dist/mjs/index.d.ts",
30
22
  "files": [
31
23
  "dist/",
32
- "!**/__tests__/",
33
- "!dist/mjs/global.*"
24
+ "!**/__tests__/"
34
25
  ],
35
26
  "exports": {
36
27
  ".": "./dist/mjs/index.js",
@@ -39,43 +30,11 @@
39
30
  "./table": "./dist/mjs/lib/table/index.js",
40
31
  "./calculator": "./dist/mjs/lib/calculator/index.js"
41
32
  },
42
- "targets": {
43
- "global": {
44
- "source": "src/global.ts",
45
- "context": "browser",
46
- "includeNodeModules": true,
47
- "isLibrary": false,
48
- "optimize": true,
49
- "distDir": "./dist/browser/",
50
- "engines": {
51
- "browsers": "> 0.5%, last 2 versions, not dead"
52
- }
53
- },
54
- "module": {}
55
- },
56
- "alias": {},
57
- "staticFiles": [
58
- {
59
- "staticPath": "static/svg",
60
- "staticOutPath": "svg"
61
- },
62
- {
63
- "staticPath": "static/webp",
64
- "staticOutPath": "webp"
65
- }
66
- ],
67
33
  "devDependencies": {
68
- "@parcel/reporter-bundle-analyzer": "^2.12.0",
69
- "@parcel/transformer-inline-string": "^2.9.3",
70
- "@parcel/transformer-typescript-tsc": "^2.9.3",
71
- "@parcel/validator-typescript": "^2.9.3",
72
34
  "@types/jest": "^29.5.5",
73
35
  "@types/js-yaml": "^4.0.9",
74
36
  "@types/svgdom": "^0.1.0",
75
- "assert": "^2.1.0",
76
37
  "buffer": "^6.0.3",
77
- "parcel": "^2.12.0",
78
- "parcel-reporter-static-files-copy": "^1.5.2",
79
38
  "process": "^0.11.10",
80
39
  "svg-sprite": "^2.0.2",
81
40
  "svgdom": "0.1.14",
@@ -1,11 +0,0 @@
1
- import { ImageHelperConfig } from "./image";
2
- interface InitializeConfig extends Omit<ImageHelperConfig, "scale"> {
3
- querySelector?: string | string[];
4
- scale?: number;
5
- tableScale?: number;
6
- responsive?: boolean;
7
- }
8
- export declare class mjimage {
9
- static initialize: (props?: InitializeConfig) => void;
10
- }
11
- export {};
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.mjimage = void 0;
15
- var core_1 = require("./core");
16
- var image_1 = require("./image");
17
- var measure_text_1 = require("./measure-text");
18
- var table_1 = require("./table");
19
- var svg_js_1 = require("@svgdotjs/svg.js");
20
- var defaultQuerySelector = ".mjimage";
21
- var defaultScale = 1.6;
22
- var defaultResponsive = false;
23
- var defaultSvgSprite = false;
24
- var tableRegex = /^\s*table/;
25
- var minPaiHeight = Math.min(core_1.TILE_CONTEXT.WIDTH, core_1.TILE_CONTEXT.HEIGHT);
26
- var calculateScale = function (scale, textHeight) {
27
- return (textHeight / minPaiHeight) * scale;
28
- };
29
- var mjimage = (function () {
30
- function mjimage() {
31
- }
32
- mjimage.initialize = function (props) {
33
- var _a, _b, _c, _d, _e;
34
- if (props === void 0) { props = {}; }
35
- console.debug("initializing....");
36
- var querySelector = (_a = props.querySelector) !== null && _a !== void 0 ? _a : defaultQuerySelector;
37
- var handScale = (_b = props.scale) !== null && _b !== void 0 ? _b : defaultScale;
38
- var tableScale = (_c = props.tableScale) !== null && _c !== void 0 ? _c : handScale;
39
- var responsive = (_d = props.responsive) !== null && _d !== void 0 ? _d : defaultResponsive;
40
- var svgSprite = (_e = props.svgSprite) !== null && _e !== void 0 ? _e : defaultSvgSprite;
41
- if (typeof querySelector === "string")
42
- querySelector = [querySelector];
43
- var mtext = new measure_text_1.MeasureText();
44
- querySelector.forEach(function (qs) {
45
- console.debug("try to find", qs);
46
- var targets = document.querySelectorAll(qs);
47
- for (var i = 0; i < targets.length; i++) {
48
- var target = targets[i];
49
- var input = target.textContent || "";
50
- if (input == "") {
51
- console.debug("skip due to not input");
52
- continue;
53
- }
54
- console.debug("found", input);
55
- target.textContent = "";
56
- var style = window.getComputedStyle(target, null);
57
- var fontSize = parseFloat(style.getPropertyValue("font-size"));
58
- var textHeight = fontSize;
59
- var svg = (0, svg_js_1.SVG)();
60
- try {
61
- if (tableRegex.test(input)) {
62
- var scale = calculateScale(tableScale, textHeight);
63
- var fontCtx = mtext.measureTableFontContext(scale);
64
- (0, table_1.drawTable)(svg, input, __assign(__assign({}, props), { svgSprite: svgSprite, scale: scale }), fontCtx, { responsive: responsive });
65
- }
66
- else {
67
- var scale = calculateScale(handScale, textHeight);
68
- var blocks = new core_1.Parser(input).parse();
69
- (0, image_1.drawBlocks)(svg, blocks, __assign(__assign({}, props), { svgSprite: svgSprite, scale: scale }), { responsive: responsive });
70
- }
71
- svg.addTo(target);
72
- }
73
- catch (e) {
74
- target.textContent = input;
75
- console.error("encounter unexpected error:", e);
76
- }
77
- }
78
- });
79
- };
80
- return mjimage;
81
- }());
82
- exports.mjimage = mjimage;
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" version="1.2" viewBox="0 0 66 90"><path fill="#c73" d="M0 0h66v90H0z"/></svg>
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" version="1.2" viewBox="0 0 66 90"><path fill="#eaa" d="M23 10h1v1h-1zm1 0h1v1h-1zm2 1h1v1h-1zm13 0h1v1h-1zm-6 2h1v1h-1zm9 9h1v1h-1zm-10 1h1v1h-1zm-12 7h1v1h-1zm18 0h1v1h-1zm-4 2h1v1h-1zm2 0h1v1h-1zm-7 1h1v1h-1zm0 11h1v1h-1zm13 1h1v1h-1zm-20 6h1v1h-1zm10 0h1v1h-1zm-5 12h1v1h-1zm3 4h1v1h-1zm6 7h1v1h-1zm3 0h1v1h-1z"/><path fill="#d88" d="M21 11h1v1h-1zm2 0h1v1h-1zm1 0h1v1h-1zm18 0h1v1h-1zm-5 1h1v1h-1zm-2 1h1v1h-1zm-14 1h1v1h-1zm-1 3h1v1h-1zm13 4h1v1h-1zm4 1h1v1h-1zm-6 7h1v1h-1zm7 2h1v1h-1zm4 1h1v1h-1zM32 55h1v1h-1zm-5 5h1v1h-1zm1 1h1v1h-1z"/><path fill="#a12" d="M41 12h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm-18 1h1v1h-1zm-1 1h1v1h-1zm7 0h1v1h-1zm5 0h1v1h-1zm-13 1h1v1h-1zm11 0h1v1h-1zm-12 2h1v1h-1zm12 0h1v1h-1zm2 1h1v1h-1zm-15 1h1v1h-1zm15 0h1v1h-1zm-1 4h1v1h-1zm-1 1h1v1h-1zm6 0h1v1h-1zm-9 1h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm7 0h1v1h-1zm1 0h1v1h-1zm0 1h1v1h-1zm0 1h1v1h-1zm-8 1h1v1h-1zm8 0h1v1h-1zm-8 1h1v1h-1zm8 0h1v1h-1zm-10 4h1v1h-1zm4 0h1v1h-1zm-14 2h1v1h-1zm1 0h1v1h-1zm27 0h1v1h-1zM21 54h1v1h-1zm2 4h1v1h-1zm22 8h1v1h-1zm-25 7h1v1h-1z"/><path fill="#b34" d="M44 12h1v1h-1zm-9 3h1v1h-1zM20 34h1v1h-1zm11 13h1v1h-1zM19 70h1v1h-1z"/><path fill="#999" d="M0 3h1v1H0zm65 0h1v1h-1zM0 4h1v1H0zm65 0h1v1h-1zM3 88h1v1H3zm59 0h1v1h-1z"/><path fill="#c55" d="M24 12h1v1h-1zm18 11h1v1h-1zm-22 1h1v1h-1zm11 6h1v1h-1z"/><path fill="#daa" d="M36 24h1v1h-1zm-16 2h1v1h-1zm0 1h1v1h-1zm16 33h1v1h-1zm-15 8h1v1h-1z"/><path fill="#923" d="M34 27h1v1h-1zm-19 1h1v1h-1zm9 19h1v1h-1zm14 8h1v1h-1zm-1 2h1v1h-1z"/><path fill="#902" d="M32 47h1v1h-1zM22 75h1v1h-1z"/><path fill="#e99" d="M40 11h1v1h-1zM26 44h1v1h-1zm11 5h1v1h-1zm-2 4h1v1h-1zm-7 4h1v1h-1zm13 7h1v1h-1zm-22 1h1v1h-1zm1 0h1v1h-1zm7 3h1v1h-1z"/><path fill="#933" d="M33 15h1v1h-1zm11 19h1v1h-1zM25 61h1v1h-1z"/><path fill="#c88" d="M20 25h1v1h-1zm23 0h1v1h-1zm9 12h1v1h-1z"/><path fill="#b02" d="M38 44h1v1h-1zm-14 2h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm13 5h1v1h-1zm-3 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-15 1h1v1h-1zm1 0h1v1h-1zm14 0h1v1h-1zm-14 1h1v1h-1zm4 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm1 0h1v2h-1zm-7 1h1v1h-1zm6 0h1v1h-1zm7 0h1v1h-1zm-12 2h1v1h-1zm6 0h1v1h-1zm1 0h1v1h-1zm3 0h1v1h-1zm-9 1h1v1h-1zm4 0h1v1h-1zm0 2h1v1h-1zm0 3h1v1h-1zm-5 1h1v1h-1zm5 0h1v1h-1zm-8 1h1v1h-1zm7 0h1v1h-1zm14 0h1v1h-1zm2 0h1v1h-1zm-25 1h1v1h-1zm24 0h1v1h-1zm-14 1h1v1h-1zm6 0h1v1h-1zm8 0h1v1h-1zm-23 1h1v1h-1zm0 1h1v1h-1zm22 0h1v1h-1zm-22 1h1v1h-1zm22 0h1v1h-1zm-22 1h1v1h-1zm1 1h1v1h-1zm20 1h1v1h-1z"/><path fill="#dab" d="M41 46h1v1h-1zm-18 2h1v1h-1z"/><path fill="#b56" d="M26 14h1v1h-1zm6 12h1v1h-1zm12 43h1v1h-1zm-24 5h1v1h-1zm16 2h1v1h-1z"/><path fill="#b23" d="M22 15h1v1h-1zm-1 2h1v1h-1zm14 4h1v1h-1zm-1 2h1v1h-1zm7 1h1v1h-1zm-20 1h1v1h-1zm-5 1h1v1h-1zm6 0h1v1h-1zm11 4h1v1h-1zm7 0h1v1h-1zm-19 1h1v1h-1zm0 2h1v1h-1zm4 19h1v1h-1zm5 12h1v1h-1z"/><path fill="#d45" d="M36 40h1v1h-1zm-4 4h1v1h-1zm-6 1h1v1h-1zm4 5h1v1h-1zm6 0h1v1h-1zm3 0h1v1h-1zm-6 4h1v1h-1zm-5 9h1v1h-1zm4 0h1v1h-1zm2 0h1v1h-1zm-9 1h1v1h-1zm17 0h1v1h-1zm-25 2h1v1h-1zm18 1h1v1h-1zm0 7h1v1h-1zm5 0h1v1h-1zm-3 1h1v1h-1z"/><path fill="#c13" d="M39 44h1v1h-1zm-11 1h1v1h-1zm0 6h1v1h-1zm-5 2h1v1h-1zm6 0h1v1h-1zm6 4h1v1h-1zm-12 8h1v1h-1zm18 5h1v1h-1z"/><path fill="#a34" d="M42 27h1v1h-1zm-22 8h1v1h-1zm6 25h1v1h-1zm16 14h1v1h-1z"/><path fill="#fdd" d="M41 10h1v1h-1zm-6 2h1v1h-1zm-7 1h1v1h-1zm5 5h1v1h-1zm-15 3h1v1h-1zm-1 2h1v1h-1zm10 0h1v1h-1zm-4 4h1v1h-1zm0 1h1v1h-1zm0 2h1v1h-1zm0 1h1v1h-1zm0 1h1v1h-1zm21 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm-22 1h1v1h-1zm3 0h1v1h-1zm6 5h1v1h-1zm-9 4h1v1h-1zm10 9h1v1h-1zm-1 2h1v1h-1zm-1 4h1v1h-1zm1 0h1v1h-1zm-7 6h1v1h-1zm-4 1h1v1h-1zm11 0h1v1h-1zm5 0h1v1h-1zm-6 2h1v1h-1zm-6 2h1v1h-1zm11 0h1v1h-1zm0 6h1v1h-1z"/><path fill="#d99" d="M41 11h1v1h-1zm-7 2h1v1h-1zm-1 7h1v1h-1zm7 2h1v1h-1zm1 0h1v1h-1zm2 1h1v1h-1zm-15 2h1v1h-1zm-15 4h1v1h-1zm1 0h1v1h-1zm6 2h1v1h-1zm27 2h1v1h-1zm3 1h1v1h-1zm-26 1h1v1h-1zm2 26h1v1h-1zm-7 10h1v1h-1z"/><path fill="#b12" d="M22 12h1v1h-1zm18 0h1v1h-1zm-18 1h1v1h-1zm1 0h1v2h-1zm1 0h1v1h-1zm13 0h1v1h-1zm-5 1h1v1h-1zm-10 2h1v1h-1zm13 0h1v1h-1zm1 1h1v1h-1zm-15 1h1v1h-1zm13 0h1v1h-1zm0 1h2v1h-2zm-14 1h1v1h-1zm0 1h1v1h-1zm22 3h1v1h-1zm-21 2h1v1h-1zm19 0h1v1h-1zm-19 1h1v1h-1zm1 0h1v1h-1zm18 0h1v1h-1zm-19 1h1v1h-1zm1 0h1v2h-1zm10 0h1v1h-1zm7 0h1v1h-1zm1 0h1v1h-1zm-19 1h1v1h-1zm18 0h1v1h-1zm1 0h1v1h-1zm-18 1h1v1h-1zm19 0h1v1h-1zm-3 2h1v1h-1zm5 1h1v1h-1zm-22 1h2v1h-2zm8 0h1v1h-1zm18 0h1v1h-1zM32 45h1v1h-1zm-4 7h1v1h-1zm3 3h1v1h-1zm-3 10h1v1h-1z"/><path fill="#c77" d="M29 14h1v1h-1zm8 4h1v1h-1zm2 7h1v1h-1zm-5 3h1v1h-1zm8 0h1v1h-1zM21 55h1v1h-1z"/><path fill="#caa" d="M39 14h1v1h-1zM16 28h1v1h-1zm33 9h1v1h-1zm-28 1h1v1h-1z"/><path fill="#944" d="M24 17h1v1h-1z"/><path fill="#ddd" d="M3 0h1v1H3zm1 0h1v1H4zm1 0h56v1H5zm56 0h1v1h-1zm1 0h1v1h-1zM2 1h1v1H2zm61 0h1v1h-1zM1 6h1v1H1zm63 0h1v1h-1zM1 7h1v1H1zm63 0h1v1h-1zM1 8h1v1H1zm63 0h1v1h-1zM1 9h1v73H1zm63 0h1v73h-1zM1 82h1v1H1zm63 0h1v1h-1zM1 83h1v1H1zm63 0h1v1h-1zM2 84h1v1H2zm61 0h1v1h-1zM3 85h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h2v1H7zm50 0h2v1h-2zm2 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1z"/><path fill="#d89" d="M22 10h1v1h-1zm21 1h1v1h-1zm-1 35h1v1h-1zm4 19h1v1h-1z"/><path fill="#fde" d="M25 33h1v1h-1zm7 10h1v1h-1zm3 9h1v1h-1zm-1 3h1v1h-1zM20 75h1v1h-1z"/><path fill="#a67" d="M43 34h1v1h-1z"/><path fill="#c89" d="M39 24h1v1h-1zM27 71h1v1h-1zm15 4h1v1h-1z"/><path fill="#b66" d="M18 26h1v1h-1z"/><path fill="#a44" d="M39 45h1v1h-1zM18 68h1v1h-1zm18 3h1v1h-1z"/><path fill="#c33" d="M35 14h1v1h-1zm-15 4h1v1h-1zm14 3h1v1h-1zm-14 1h1v1h-1zm-1 1h1v1h-1zm1 0h1v1h-1zm19 7h1v1h-1zm-17 2h1v1h-1zm10 0h1v1h-1z"/><path fill="#b44" d="M37 17h1v1h-1z"/><path fill="#912" d="M34 16h1v1h-1zm6 29h1v1h-1zm-1 8h1v1h-1zm-17 3h1v1h-1zm10 12h1v1h-1zm2 0h1v1h-1zm-13 7h1v1h-1z"/><path fill="#dbb" d="M23 19h1v1h-1zm19 10h1v1h-1zm-7 5h1v1h-1zm6 0h1v1h-1zm-7 12h1v1h-1zm-1 1h1v1h-1z"/><path fill="#d66" d="M17 24h1v1h-1zm34 11h1v1h-1zm-16 5h1v1h-1zm-16 6h1v1h-1zm10 4h1v1h-1zm-6 2h1v1h-1zm15 23h1v1h-1z"/><path fill="#955" d="M33 34h1v1h-1z"/><path fill="#a02" d="M20 47h1v1h-1z"/><path fill="#945" d="M22 48h1v1h-1z"/><path fill="#ccc" d="M1 0h1v1H1zm1 0h1v1H2zm61 0h1v1h-1zm1 0h1v1h-1zM1 2h1v1H1zm63 0h1v1h-1zM1 84h1v1H1zm63 0h1v1h-1zM2 85h1v1H2zm61 0h1v1h-1zM4 86h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h52v1H7zm52 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1z"/><path fill="#c44" d="M23 12h1v1h-1zm16 0h1v1h-1zm-5 2h1v1h-1zm-13 1h1v1h-1zm-2 7h1v1h-1zm15 0h1v1h-1zm-16 1h1v1h-1zm22 0h1v1h-1zm-25 4h1v1h-1zm15 6h1v1h-1zm14 0h1v1h-1z"/><path fill="#711" d="M39 13h1v1h-1zm1 0h1v1h-1zm-2 20h1v1h-1zm1 0h2v1h-2zm2 0h1v1h-1zm-10 1h1v1h-1zm16 1h1v1h-1zm2 1h1v1h-1zm-27 1h1v1h-1z"/><path fill="#c56" d="M19 20h1v1h-1zm19 2h1v1h-1zm-5 1h1v1h-1zm-4 1h1v1h-1zm3 0h1v1h-1zm-12 9h1v1h-1zm28 1h1v1h-1zM27 47h1v1h-1zm0 1h1v1h-1zm0 4h1v1h-1z"/><path fill="#934" d="M21 48h1v1h-1zm3 12h1v1h-1zm-2 16h1v1h-1zm19 1h1v1h-1z"/><path fill="#c45" d="M22 11h1v1h-1zm9 20h1v1h-1zm1 0h1v1h-1zm9 0h1v1h-1zm-10 1h1v1h-1zm-7 2h1v1h-1zm4 0h1v1h-1zm-6 40h1v1h-1zm13 1h1v1h-1z"/><path fill="#c34" d="M25 12h1v1h-1zm1 0h1v1h-1zm-7 9h1v1h-1zm9 3h1v1h-1zm5 0h1v1h-1zm-1 6h1v1h-1zm3 11h1v1h-1zm1 0h1v1h-1zm4 3h1v1h-1zm-13 1h1v1h-1zm3 0h1v1h-1zm1 5h1v1h-1zm4 0h1v1h-1zm-6 1h1v1h-1zm7 0h1v1h-1zm-6 2h1v1h-1zm-4 2h1v1h-1zm5 8h1v1h-1zm9 0h1v1h-1zm3 2h1v1h-1zm1 0h1v1h-1zm-26 1h1v1h-1zm2 0h1v1h-1zm8 1h1v1h-1zm1 0h1v1h-1zm3 0h1v1h-1zm2 0h1v1h-1zm7 1h1v1h-1zm-15 1h1v1h-1zm-5 1h1v1h-1zm19 3h1v1h-1z"/><path fill="#911" d="M38 13h1v1h-1zm-13 1h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm-1 2h1v1h-1zm-1 2h1v1h-1zm15 3h1v1h-1zm-18 2h1v1h-1zm11 0h1v1h-1zm1 0h1v1h-1zm4 0h1v1h-1zm-17 1h1v1h-1zm16 0h1v1h-1zm1 0h1v1h-1zm8 0h1v1h-1zm-26 1h1v1h-1zm17 0h1v1h-1zm6 5h1v1h-1zm1 0h1v1h-1zm-8 1h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm2 0h1v1h-1zm6 0h1v1h-1zm-12 1h1v1h-1zm16 0h1v1h-1zm-21 1h1v1h-1zm1 0h1v1h-1zm25 1h1v1h-1z"/><path fill="#822" d="M37 14h1v1h-1zm-14 4h1v1h-1zm6 17h1v1h-1z"/><path fill="#811" d="M25 15h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm-1 2h1v1h-1zm15 14h1v1h-1zm8 1h1v1h-1zm-18 1h1v1h-1zm1 0h1v1h-1zm20 0h1v1h-1zm-27 1h1v1h-1zm1 0h1v1h-1zm28 0h1v1h-1zm-29 1h1v1h-1z"/><path fill="#722" d="M32 34h1v1h-1zm16 2h1v1h-1z"/><path fill="#d67" d="M38 12h1v1h-1zm-2 9h1v1h-1zm-9 13h1v1h-1zm4 10h1v1h-1zm0 1h1v1h-1zm-4 4h1v1h-1zm3 0h1v1h-1zm7 1h1v1h-1zm1 0h1v1h-1zm2 1h1v1h-1zm-16 4h1v1h-1zm4 1h1v1h-1zm2 6h1v1h-1zm11 1h1v1h-1zm-7 3h1v1h-1zm2 1h1v1h-1zm-15 2h1v1h-1z"/><path fill="#a66" d="M42 13h1v1h-1zm-4 1h1v1h-1zm0 31h1v1h-1zm1 33h1v1h-1z"/><path fill="#b78" d="M35 70h1v1h-1z"/><g fill="#fff"><path d="M4 1h1v1H4zm1 0h1v1H5zm1 0h54v1H6zm54 0h1v1h-1zm1 0h1v1h-1zM3 2h1v1H3zm1 0h1v1H4zm1 0h56v1H5zm56 0h1v1h-1zm1 0h1v1h-1zM2 3h1v1H2zm1 0h1v1H3zm1 0h2v1H4zm2 0h54v1H6zm54 0h2v1h-2zm2 0h1v1h-1zm1 0h1v1h-1zM2 4h1v2H2zm1 0h1v3H3zm1 0h1v1H4zm1 0h56v6H5zm56 0h1v1h-1zm1 0h1v3h-1zm1 0h1v2h-1z"/><path d="M4 5h58v2H4zM3 7h1v1H3zm1 0h1v1H4zm57 0h1v1h-1zm1 0h1v1h-1zM3 8h1v73H3zm1 0h1v73H4zm57 0h1v74h-1zm1 0h1v73h-1zM5 10h15v8H5zm21 0h1v1h-1zm1 0h12v1H27zm12 0h1v1h-1zm4 0h18v1H43zm-23 1h1v4h-1zm7 0h10v1H27zm18 0h16v1H45zm-18 1h7v1h-7zm7 0h1v1h-1zm12 0h15v20H46zm-19 1h1v10h-1z"/><path d="M41 14h20v7H41zm-21 1h1v1h-1zm8 0h2v8h-2zm2 0h1v1h-1zm7 0h1v1h-1z"/><path d="M38 15h23v6H38zm-12 1h7v7h-7zm7 0h1v1h-1zm-8 1h1v1h-1zm8 0h1v1h-1zM5 18h14v3H5zm14 0h1v1h-1z"/><path d="M25 18h8v5h-8z"/><path d="M24 19h9v4h-9z"/><path d="M23 20h10v3H23zm14 0h1v1h-1zM5 21h13v2H5zm17 0h1v1h-1zm15 0h1v1h-1zm1 0h1v1h-1zm4 0h1v1h-1zm1 0h18v1H43z"/><path d="M22 22h11v1H22zm21 0h1v1h-1zm1 0h17v2H44zM5 23h12v1H5zm17 0h5v1h-5zm7 0h1v1h-1zm1 0h1v1h-1zM5 24h11v2H5zm11 0h1v1h-1zm7 0h4v2h-4zm14 0h1v1h-1zm1 0h1v4h-1zm7 0h16v8H45zm-18 1h1v8h-1z"/><path d="M36 25h3v3h-3zm8 0h17v7H44zM5 26h10v1H5zm14 0h1v1h-1zm5 0h4v7h-4zm4 0h1v1h-1zM5 27h9v1H5zm9 0h1v1h-1zm4 0h1v1h-1zm1 0h1v19h-1zm9 0h3v4h-3zm3 0h1v1h-1zm4 0h1v1h-1z"/><path d="M43 27h18v5H43zM5 28h8v54H5zm8 0h1v1h-1zm4 0h3v18h-3zm18 0h3v4h-3zm-20 1h1v1h-1z"/><path d="M16 29h4v17h-4z"/><path d="M13 30h7v16h-7zm21 0h1v1h-1zm-6 1h2v2h-2zm6 0h4v1h-4zm8 0h19v1H42zm6 1h1v1h-1zm1 0h12v1H49zm1 1h1v1h-1zm1 0h10v1H51zm-13 1h1v1h-1zm13 0h1v1h-1zm1 0h9v1h-9zm-20 1h1v1h-1zm1 0h12v3H33zm19 0h1v1h-1zm1 0h8v47h-8zm-30 1h1v2h-1zm1 0h1v1h-1zm5 0h1v1h-1z"/><path d="M30 36h17v2H30z"/><path d="M24 37h24v1H24zm24 0h1v1h-1zm-28 1h1v8h-1zm3 0h1v1h-1zm1 0h7v4h-7zm10 0h1v1h-1zm1 0h1v1h-1zm1 0h25v1H36z"/><path d="M21 39h11v2H21zm16 0h24v1H37zm-5 1h1v1h-1zm5 0h1v1h-1zm1 0h23v3H38zm-17 1h1v5h-1zm1 0h1v1h-1zm9 0h2v2h-2zm6 0h1v1h-1zm-15 1h1v1h-1z"/><path d="M25 42h8v1h-8zm12 0h24v1H37zm-15 1h1v2h-1zm4 0h1v1h-1zm1 0h5v1h-5zm14 0h1v1h-1zm1 0h19v2H42zm-19 1h1v1h-1zm-1 1h1v1h-1zm21 0h18v17H43zm-30 1h4v38h-4zm16 0h1v1h-1zm1 0h1v1h-1zm5 0h5v1h-5zm5 0h1v1h-1zm-23 1h1v18h-1zm1 0h1v1h-1zm10 0h2v2h-2zm2 0h1v1h-1zm4 0h3v1h-3zm3 0h1v1h-1z"/><path d="M38 47h23v1H38zm-20 1h2v16h-2zm6 0h1v1h-1zm9 0h3v1h-3zm3 0h1v1h-1zm3 0h1v1h-1zm1 0h21v1H40zm-20 1h5v1h-5zm8 0h1v1h-1zm4 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm6 0h1v1h-1zm1 0h20v13H41zm-21 1h2v1h-2zm2 0h1v1h-1zm1 0h3v1h-3zm-3 1h1v1h-1zm15 0h1v1h-1zm-3 1h3v1h-3zm-7 1h3v1h-3zm9 0h1v1h-1zm6 0h1v1h-1zm-15 1h1v1h-1zm1 0h1v1h-1z"/><path d="M40 54h21v8H40zm-20 1h1v9h-1zm19 0h1v1h-1zm-14 1h1v1h-1zm1 0h1v1h-1zm6 0h2v1h-2z"/><path d="M39 56h22v6H39zm-18 1h1v7h-1zm5 0h2v1h-2zm12 0h1v1h-1z"/><path d="M38 58h23v4H38zm-16 1h1v5h-1zm15 0h1v1h-1zm-14 1h1v1h-1zm8 0h1v1h-1zm1 0h1v3h-1zm1 0h1v1h-1z"/><path d="M37 60h24v2H37zm-14 1h1v3h-1zm4 0h1v2h-1zm4 0h4v2h-4z"/><path d="M36 61h25v1H36zm-12 1h1v2h-1zm1 0h1v1h-1zm1 0h1v1h-1zm9 0h3v1h-3zm3 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm2 0h1v1h-1zm1 0h17v1H44zm-19 1h1v1h-1zm20 0h1v1h-1zm1 0h15v1H46zm-28 1h1v1h-1zm2 0h1v1h-1zm1 0h1v1h-1zm14 0h1v1h-1zm1 0h1v1h-1zm11 0h14v18H47zm-16 1h1v1h-1zm4 0h6v1h-6zm6 0h1v1h-1zm-16 1h2v2h-2zm2 0h1v1h-1zm4 0h1v1h-1zm5 0h1v1h-1zm1 0h4v1h-4zm-15 1h1v1h-1z"/><path d="M23 67h4v1h-4zm14 0h1v1h-1zm1 0h3v2h-3zm8 0h15v15H46zm-29 1h1v1h-1zm5 0h1v3h-1zm1 0h1v1h-1zm-6 1h1v15h-1zm16 0h1v4h-1zm5 0h2v3h-2z"/><path d="M45 69h16v13H45zm-27 1h1v14h-1zm5 0h1v5h-1zm7 0h1v1h-1zm1 0h4v3h-4zm-7 1h1v1h-1zm4 0h1v1h-1z"/><path d="M29 71h6v2h-6zm6 0h1v1h-1zm9 0h1v1h-1z"/><path d="M24 72h12v1H24zm12 0h1v1h-1zm1 0h2v2h-2zm2 0h1v1h-1zm5 0h17v10H44zm-25 1h1v1h-1zm5 0h9v11h-9zm11 0h1v1h-1z"/><path d="M36 73h3v1h-3zm-17 1h1v10h-1zm14 0h1v10h-1zm5 0h1v1h-1zm5 0h18v8H43zm-20 1h1v1h-1zm11 0h1v1h-1zm-14 1h1v8h-1zm14 0h1v8h-1zm1 0h1v1h-1z"/><path d="M21 77h15v7H21zm15 0h1v1h-1zm6 0h19v5H42zm-6 1h2v6h-2z"/><path d="M38 79h23v3H38zM3 81h1v1H3zm1 0h1v2H4zm58 0h1v1h-1zM3 82h1v1H3zm2 0h1v1H5zm1 0h54v1H6zm54 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zM3 83h1v1H3zm1 0h1v1H4zm1 0h1v1H5zm1 0h1v1H6zm1 0h52v1H7zm52 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zM5 84h1v1H5zm1 0h1v1H6zm1 0h1v1H7zm1 0h50v1H8zm50 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1z"/></g><path fill="#b22" d="M22 14h1v1h-1zm8 0h1v1h-1zm5 3h1v1h-1zm0 1h1v1h-1zm-15 1h1v1h-1zm14 1h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm-1 2h1v1h-1zm-17 2h1v1h-1zm1 0h1v1h-1zm24 0h1v1h-1zm-26 1h1v1h-1zm22 2h1v1h-1zm-7 2h1v1h-1zm-11 1h1v1h-1zm1 1h1v1h-1zm18 0h1v1h-1z"/><path fill="#b67" d="M17 27h1v1h-1zm8 21h1v1h-1z"/><path fill="#e88" d="M33 42h1v1h-1zm-9 1h1v1h-1zm9 22h1v1h-1z"/><path fill="#d56" d="M33 39h1v1h-1zm0 1h1v1h-1zm1 0h1v1h-1zm-1 3h1v1h-1zm-9 2h1v1h-1zm1 0h1v1h-1zm-7 1h1v1h-1zm4 0h1v1h-1zm3 5h1v1h-1zm-4 1h1v1h-1zm9 0h1v1h-1zm5 2h1v1h-1zm-4 2h1v1h-1zm3 1h1v1h-1zm-6 1h1v1h-1zm5 5h1v1h-1zm-11 2h1v1h-1zm10 0h1v1h-1zm-13 1h1v1h-1zm14 0h1v1h-1zm7 5h1v1h-1zm-1 4h1v1h-1z"/><path fill="#c24" d="M30 61h1v1h-1zm-1 1h1v1h-1zm0 1h1v1h-1zm-1 5h1v1h-1zm-4 1h1v1h-1z"/><path fill="#c66" d="M21 10h1v1h-1zm15 3h1v1h-1zm5 10h1v1h-1zm-19 2h1v1h-1zm23 8h1v1h-1zm-20 1h1v1h-1zm3 26h1v1h-1z"/><path fill="#b55" d="M21 21h1v1h-1zm-7 7h1v1h-1zm9 38h1v1h-1z"/><path fill="#c67" d="M38 23h1v1h-1zm14 13h1v1h-1zM24 70h1v1h-1z"/><path fill="#edd" d="M23 29h1v1h-1zm13 5h1v1h-1zm4 0h1v1h-1zm5 1h1v1h-1zm-25 2h1v1h-1zm23 36h1v1h-1zm-20 3h1v1h-1zm19 0h1v1h-1z"/><path fill="#a77" d="M46 35h1v1h-1zm-21 1h1v1h-1zm2 0h1v1h-1z"/><path fill="#e89" d="M32 39h1v1h-1zm2 0h1v1h-1zm1 0h1v1h-1zm1 3h1v1h-1zm-11 2h1v1h-1zm5 0h1v1h-1zm8 5h1v1h-1zm-7 2h1v1h-1zm1 2h1v1h-1zm10 10h1v1h-1zm-18 1h1v1h-1zm11 2h1v1h-1zm-4 1h1v1h-1z"/><path fill="#ecc" d="M38 11h1v1h-1zm-17 1h1v2h-1zm8 1h1v1h-1zm1 0h1v1h-1zm-2 1h1v1h-1zm-2 1h1v1h-1zm10 0h1v1h-1zm-16 1h1v1h-1zm17 3h1v1h-1zm2 2h1v1h-1zm2 0h1v1h-1zm-19 3h1v1h-1zm5 0h1v1h-1zm8 2h1v1h-1zm-4 2h1v1h-1zm12 4h1v1h-1zm-20 1h1v1h-1zm5 0h1v1h-1zm21 0h1v1h-1zm-26 1h1v1h-1zm-3 14h1v1h-1zm19 16h1v1h-1zm-12 1h1v1h-1zm-3 1h1v1h-1zm17 0h1v1h-1zm-20 1h1v1h-1zm-3 2h1v1h-1zm3 7h1v1h-1z"/><path fill="#eab" d="M19 19h1v1h-1zm16 13h1v1h-1zM23 43h1v1h-1zm4 7h1v1h-1zm-4 1h1v1h-1zm9 13h1v1h-1zm-2 1h1v1h-1zm7 4h1v1h-1z"/><path fill="#a23" d="M43 71h1v1h-1z"/><path fill="#ede" d="M38 78h1v1h-1z"/><path fill="#922" d="M35 24h1v1h-1zm-2 35h1v1h-1z"/><path fill="#d9a" d="M19 25h1v1h-1zm21 27h1v1h-1zm-2 4h1v1h-1zm-12 9h1v1h-1zm-9 2h1v1h-1z"/><path fill="#ecd" d="M28 46h1v1h-1zm3 0h1v1h-1zM19 72h1v1h-1z"/><path fill="#666" d="M0 88h1v1H0zm1 0h1v1H1zm63 0h1v1h-1zm1 0h1v1h-1zM1 89h1v1H1zm1 0h1v1H2zm1 0h1v1H3zm1 0h58v1H4zm58 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1z"/><path fill="#b88" d="M43 13h1v1h-1zm-21 7h1v1h-1zm13 5h1v1h-1zm-1 9h1v1h-1zm16 3h1v1h-1zm1 0h1v1h-1zm-16 8h1v1h-1zm1 0h1v1h-1zm-5 24h1v1h-1z"/><path fill="#b45" d="M39 26h1v1h-1zM27 46h1v1h-1zm-1 6h1v1h-1zm5 7h1v1h-1zm-6 6h1v1h-1z"/><path fill="#fee" d="M20 10h1v1h-1zm20 0h1v1h-1zm2 0h1v1h-1zm-5 1h1v1h-1zm7 0h1v1h-1zm1 1h1v1h-1zm-5 2h1v1h-1zm-19 8h1v1h-1zm7 1h1v1h-1zm3 0h1v1h-1zm13 1h1v1h-1zm-29 2h1v1h-1zm8 0h1v1h-1zm20 0h1v1h-1zm-5 2h1v1h-1zm4 2h1v1h-1zm-12 1h1v1h-1zm17 1h1v1h-1zm-21 1h1v1h-1zm11 1h1v1h-1zm2 0h1v1h-1zm-16 1h1v1h-1zm8 3h1v1h-1zm-8 3h1v1h-1zm-6 5h1v1h-1zm8 3h1v1h-1zm10 0h1v1h-1zm-14 2h1v1h-1zm10 1h1v1h-1zm-7 1h1v1h-1zm-4 1h1v1h-1zm14 0h1v1h-1zm-1 1h1v1h-1zm-12 1h1v1h-1zm6 0h1v1h-1zm-1 2h1v1h-1zm-2 3h1v1h-1zm11 0h1v1h-1zm7 1h1v1h-1zm-23 2h1v1h-1zm15 0h1v1h-1zm3 0h1v1h-1zm9 0h1v1h-1zm-29 1h1v1h-1zm29 1h1v1h-1zm-19 1h1v1h-1zm-3 1h1v1h-1zm1 0h1v1h-1zm20 0h1v1h-1zm-13 1h1v1h-1zm8 0h1v1h-1zm-18 2h1v1h-1zm15 0h1v1h-1zm-4 2h1v1h-1z"/><path fill="#bbb" d="M0 1h1v1H0zm1 0h1v1H1zm63 0h1v1h-1zm1 0h1v1h-1zM1 85h1v1H1zm63 0h1v1h-1zM2 86h1v1H2zm1 0h1v1H3zm59 0h1v1h-1zm1 0h1v1h-1z"/><path fill="#b33" d="M33 14h1v1h-1zm-12 2h1v1h-1zm15 0h1v1h-1zm3 7h1v1h-1zm-18 1h1v1h-1zm18 7h1v1h-1zm-18 1h1v1h-1zm20 0h1v1h-1zm-19 1h1v1h-1zm28 2h1v1h-1z"/><path fill="#fcd" d="M25 55h1v1h-1zm9 10h1v1h-1zm-11 4h1v1h-1z"/><path fill="#c23" d="M34 41h1v1h-1zm0 1h1v1h-1zm1 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm-10 2h1v1h-1zm8 2h1v1h-1zm-5 1h1v1h-1zm6 1h1v1h-1zm2 0h1v1h-1zm3 1h2v1h-2zm-13 1h1v1h-1zm-2 1h1v1h-1zm8 1h1v1h-1zm6 0h1v1h-1zm-1 1h1v1h-1zm-11 1h1v1h-1zm11 0h1v1h-1zm-9 3h1v1h-1zm1 0h1v1h-1zm3 4h1v1h-1zm5 0h1v1h-1zm4 0h1v1h-1zm-13 1h1v1h-1zm14 8h1v1h-1zm0 3h1v1h-1z"/><path fill="#a01" d="M34 44h1v1h-1zm3 0h1v1h-1zm4 1h1v1h-1zm-20 2h1v1h-1zm18 5h1v1h-1zm-1 1h1v1h-1zm-16 2h1v1h-1zm15 0h1v1h-1zm-14 2h1v1h-1zm13 0h1v1h-1zm-1 1h1v1h-1zm-5 1h1v1h-1zm-1 1h1v1h-1zm1 0h1v1h-1zm-8 6h1v1h-1zm-4 1h1v1h-1zm2 0h1v1h-1zm0 1h1v1h-1zm10 0h1v1h-1zm-2 1h1v1h-1zm8 0h1v1h-1zm7 0h1v1h-1zm-1 3h1v1h-1zm0 1h1v1h-1zm-21 1h1v1h-1zm20 1h1v1h-1zm-3 1h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1z"/><path fill="#b89" d="M29 70h1v1h-1z"/><path fill="#888" d="M0 5h1v1H0zm65 0h1v1h-1zM0 6h1v1H0zm65 0h1v1h-1zM0 7h1v1H0zm65 0h1v1h-1zM0 8h1v73H0zm65 0h1v73h-1zM0 81h1v2H0zm65 0h1v2h-1zM0 83h1v1H0zm65 0h1v1h-1zM1 87h1v1H1zm63 0h1v1h-1zM2 88h1v1H2zm61 0h1v1h-1z"/><path fill="#a22" d="M26 13h1v1h-1zm6 14h1v1h-1z"/><path fill="#ebc" d="M31 13h1v1h-1zm3 16h1v1h-1zm4 0h1v1h-1zm2 14h1v1h-1zm-17 2h1v1h-1zm10 6h1v1h-1zm-13 1h1v1h-1zm4 2h1v1h-1zm1 3h1v1h-1zm19 13h1v1h-1zm-10 3h1v1h-1z"/><path fill="#c99" d="M44 13h1v1h-1zM29 26h1v1h-1zm13 8h1v1h-1zm-3 20h1v1h-1zm-2 4h1v1h-1zm-14 1h1v1h-1zm2 12h1v1h-1zm12 6h1v1h-1z"/><path fill="#a33" d="M37 23h1v1h-1z"/><path fill="#c12" d="M29 45h1v1h-1zm4 5h1v1h-1zm-7 1h1v1h-1zm3 1h1v1h-1zm7 1h1v1h-1zm-7 1h1v1h-1zm2 0h1v1h-1zm1 0h1v1h-1zm4 1h1v1h-1zm-12 2h1v1h-1zm6 0h1v1h-1zm-1 1h1v1h-1zm7 5h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm4 2h1v1h-1zm-13 1h1v1h-1zm4 1h1v1h-1zm9 0h1v1h-1zm0 1h1v1h-1zm-1 1h1v1h-1zm0 2h1v1h-1zm0 1h1v1h-1zm-5 3h1v1h-1z"/><path fill="#844" d="M26 36h1v1h-1z"/><path fill="#a55" d="M26 71h1v1h-1z"/><path fill="#dcc" d="M31 15h1v1h-1zm0 11h1v1h-1zm0 9h1v1h-1zm-3 1h1v1h-1zm19 0h1v1h-1zM34 69h1v1h-1z"/><path fill="#833" d="M22 38h1v1h-1z"/><path fill="#812" d="M25 47h1v1h-1zm11 12h1v1h-1zm-6 10h1v1h-1zm-2 1h1v1h-1z"/><path fill="#a56" d="M32 59h1v1h-1zm1 9h1v1h-1z"/><path fill="#701" d="M35 59h1v2h-1zm3 18h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm0 1h1v1h-1z"/><path fill="#c9a" d="M41 78h1v1h-1z"/><path fill="#801" d="M34 45h1v1h-1zm-1 1h1v1h-1zm-10 1h1v1h-1zm11 12h1v1h-1zm-9 1h1v1h-1zm4 9h1v1h-1zm6 0h1v1h-1zm-8 1h1v1h-1zm9 0h1v1h-1z"/><path fill="#eee" d="M3 1h1v1H3zm59 0h1v1h-1zM2 2h1v1H2zm61 0h1v1h-1zM1 3h1v1H1zm63 0h1v1h-1zM1 4h1v1H1zm63 0h1v1h-1zM1 5h1v1H1zm63 0h1v1h-1zM2 6h1v1H2zm61 0h1v1h-1zM2 7h1v1H2zm61 0h1v1h-1zM2 8h1v74H2zm61 0h1v74h-1zM24 18h1v1h-1zM2 82h1v1H2zm61 0h1v1h-1zM2 83h1v1H2zm61 0h1v1h-1zM3 84h1v1H3zm1 0h1v1H4zm57 0h1v1h-1zm1 0h1v1h-1zM9 85h48v1H9z"/><path fill="#aaa" d="M0 2h1v1H0zm65 0h1v1h-1zM1 86h1v1H1zm63 0h1v1h-1zM2 87h1v1H2zm1 0h1v1H3zm1 0h1v1H4zm1 0h56v1H5zm56 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zM4 88h1v1H4zm1 0h56v1H5zm56 0h1v1h-1z"/><path fill="#d78" d="M18 22h1v1h-1zm15 9h1v1h-1zm-13 1h1v1h-1zm13 0h1v1h-1zm13 1h1v1h-1zm-23 9h1v1h-1zm13 1h1v1h-1zm-12 1h1v1h-1zm17 0h1v1h-1zm-21 2h1v1h-1zm1 0h1v1h-1zm7 4h1v1h-1zm2 1h1v1h-1zm-8 1h1v1h-1zm-2 1h1v1h-1zm11 4h1v1h-1zm-6 1h1v1h-1zm3 4h1v1h-1zm3 2h1v1h-1zm12 0h1v1h-1zm1 0h1v1h-1zm1 0h1v1h-1zm-24 1h1v1h-1zm20 2h1v1h-1zm-19 6h1v1h-1z"/><path fill="#fcc" d="M36 39h1v1h-1zm-9 5h1v1h-1zm1 0h1v1h-1zm3 5h1v1h-1zm-4 9h1v1h-1zm17 5h1v1h-1zm-5 10h1v1h-1z"/><path fill="#c02" d="M35 43h1v1h-1zm-8 8h1v1h-1zm10 1h1v1h-1zm-16 1h1v1h-1zm8 4h1v1h-1zm3 1h1v1h-1zm1 0h1v1h-1zm-5 1h1v1h-1zm-1 5h1v1h-1zm1 0h1v1h-1zm17 1h1v1h-1zm-2 1h1v1h-1zm-7 2h1v1h-1zm-9 1h1v1h-1zm15 0h1v1h-1zm-21 2h1v2h-1zm20 2h1v1h-1z"/><path fill="#901" d="M35 44h1v1h-1zm1 0h1v1h-1zm-3 1h1v1h-1zm-1 1h1v1h-1zm-10 1h1v1h-1zm4 0h1v1h-1zm0 1h1v1h-1zm12 6h1v1h-1zm-1 2h1v1h-1zm-1 2h1v1h-1zm-12 1h1v1h-1zm20 8h1v1h-1zm-25 1h1v1h-1zm12 0h1v1h-1zm13 0h1v1h-1zm-25 1h1v1h-1zm6 1h1v1h-1zm1 0h1v1h-1zm17 0h1v1h-1zm-6 6h1v1h-1zm4 0h1v1h-1z"/><path fill="#d77" d="M25 11h1v1h-1zm8 11h1v1h-1zm3 0h1v1h-1zm3 0h1v1h-1zm-9 2h1v1h-1zm1 0h1v1h-1zm6 8h1v1h-1zm-11 2h1v1h-1zm23 0h1v1h-1zM34 74h1v1h-1z"/><path fill="#b77" d="M32 15h1v1h-1zm-7 1h1v1h-1zm5 10h1v1h-1zm0 9h1v1h-1zm-10 1h1v1h-1zm17 9h1v1h-1zm-3 15h1v1h-1z"/><path fill="#c35" d="M31 53h1v1h-1zm-3 1h1v1h-1zm-3 15h1v1h-1z"/><path fill="#a11" d="M42 25h1v1h-1z"/><path fill="#c78" d="M19 47h1v1h-1zm3 10h1v1h-1zm23 10h1v1h-1zm-2 5h1v1h-1z"/><path fill="#fef" d="M26 50h1v1h-1zm-4 8h1v1h-1z"/><path fill="#ebb" d="M25 10h1v1h-1zm11 2h1v1h-1zm-4 1h1v1h-1zm13 0h1v1h-1zm-8 3h1v1h-1zm-4 3h1v1h-1zm7 2h1v1h-1zm-19 2h1v1h-1zm-5 2h1v1h-1zm4 3h1v1h-1zm0 1h1v1h-1zm10 3h1v1h-1zm2 6h1v1h-1zm-7 5h1v1h-1zm7 5h1v1h-1zm6 0h1v1h-1zm-9 1h1v1h-1zm7 0h1v1h-1zm4 1h1v1h-1zm-12 3h1v1h-1zm-1 1h1v1h-1zm-4 10h1v1h-1zm17 0h1v1h-1zm-10 2h1v1h-1zm7 4h1v1h-1zm-15 2h1v1h-1z"/><path fill="#834" d="M41 13h1v1h-1z"/><path fill="#e9a" d="M48 33h1v1h-1zm-15 8h1v1h-1zm4 2h1v1h-1zm1 0h2v1h-2zm-8 5h1v1h-1zm7 0h1v1h-1zm2 1h1v1h-1zm-15 2h1v1h-1zm10 5h1v1h-1zm9 7h1v1h-1zm-25 2h1v1h-1zm22 5h1v1h-1z"/><path fill="#777" d="M0 84h1v1H0zm65 0h1v1h-1zM0 85h1v1H0zm65 0h1v1h-1zM0 86h1v1H0zm65 0h1v1h-1zM0 87h1v1H0zm65 0h1v1h-1z"/></svg>