@vpmedia/phaser 1.82.0 → 1.83.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 (127) hide show
  1. package/README.md +2 -2
  2. package/coverage/{lcov-report/block-navigation.js → block-navigation.js} +1 -1
  3. package/coverage/index.html +236 -0
  4. package/coverage/{lcov-report/sorter.js → sorter.js} +21 -7
  5. package/coverage/{lcov-report/core → src}/index.html +23 -23
  6. package/coverage/src/index.js.html +241 -0
  7. package/coverage/src/phaser/core/animation.js.html +1450 -0
  8. package/coverage/src/phaser/core/animation_manager.js.html +1117 -0
  9. package/coverage/src/phaser/core/animation_parser.js.html +373 -0
  10. package/coverage/src/phaser/core/array_set.js.html +562 -0
  11. package/coverage/src/phaser/core/cache.js.html +2404 -0
  12. package/coverage/{lcov-report → src/phaser}/core/const.js.html +284 -284
  13. package/coverage/src/phaser/core/device.js.html +373 -0
  14. package/coverage/src/phaser/core/device_util.js.html +850 -0
  15. package/coverage/src/phaser/core/dom.js.html +1042 -0
  16. package/coverage/src/phaser/core/error_code.js.html +109 -0
  17. package/coverage/src/phaser/core/event_manager.js.html +1264 -0
  18. package/coverage/src/phaser/core/factory.js.html +436 -0
  19. package/coverage/src/phaser/core/frame.js.html +415 -0
  20. package/coverage/src/phaser/core/frame_data.js.html +478 -0
  21. package/coverage/src/phaser/core/frame_util.js.html +169 -0
  22. package/coverage/src/phaser/core/game.js.html +1075 -0
  23. package/coverage/src/phaser/core/index.html +731 -0
  24. package/coverage/src/phaser/core/input.js.html +1576 -0
  25. package/coverage/src/phaser/core/input_handler.js.html +2959 -0
  26. package/coverage/src/phaser/core/input_mouse.js.html +988 -0
  27. package/coverage/src/phaser/core/input_mspointer.js.html +754 -0
  28. package/coverage/src/phaser/core/input_pointer.js.html +1645 -0
  29. package/coverage/src/phaser/core/input_touch.js.html +643 -0
  30. package/coverage/src/phaser/core/loader.js.html +3676 -0
  31. package/coverage/src/phaser/core/loader_parser.js.html +397 -0
  32. package/coverage/src/phaser/core/raf.js.html +184 -0
  33. package/coverage/src/phaser/core/scale_manager.js.html +3082 -0
  34. package/coverage/src/phaser/core/scene.js.html +265 -0
  35. package/coverage/src/phaser/core/scene_manager.js.html +1030 -0
  36. package/coverage/src/phaser/core/signal.js.html +859 -0
  37. package/coverage/src/phaser/core/signal_binding.js.html +388 -0
  38. package/coverage/src/phaser/core/sound.js.html +1678 -0
  39. package/coverage/src/phaser/core/sound_manager.js.html +1594 -0
  40. package/coverage/src/phaser/core/sound_sprite.js.html +265 -0
  41. package/coverage/src/phaser/core/stage.js.html +505 -0
  42. package/coverage/src/phaser/core/time.js.html +829 -0
  43. package/coverage/src/phaser/core/timer.js.html +1231 -0
  44. package/coverage/src/phaser/core/timer_event.js.html +157 -0
  45. package/coverage/src/phaser/core/tween.js.html +1486 -0
  46. package/coverage/src/phaser/core/tween_data.js.html +976 -0
  47. package/coverage/src/phaser/core/tween_easing.js.html +1099 -0
  48. package/coverage/src/phaser/core/tween_manager.js.html +826 -0
  49. package/coverage/src/phaser/core/world.js.html +139 -0
  50. package/coverage/src/phaser/display/bitmap_text.js.html +1423 -0
  51. package/coverage/src/phaser/display/button.js.html +916 -0
  52. package/coverage/src/phaser/display/canvas/buffer.js.html +232 -0
  53. package/coverage/src/phaser/display/canvas/graphics.js.html +766 -0
  54. package/coverage/src/phaser/display/canvas/index.html +206 -0
  55. package/coverage/src/phaser/display/canvas/masker.js.html +184 -0
  56. package/coverage/src/phaser/display/canvas/pool.js.html +445 -0
  57. package/coverage/src/phaser/display/canvas/renderer.js.html +589 -0
  58. package/coverage/src/phaser/display/canvas/tinter.js.html +658 -0
  59. package/coverage/src/phaser/display/canvas/util.js.html +544 -0
  60. package/coverage/src/phaser/display/display_object.js.html +2494 -0
  61. package/coverage/src/phaser/display/graphics.js.html +2815 -0
  62. package/coverage/src/phaser/display/graphics_data.js.html +187 -0
  63. package/coverage/src/phaser/display/graphics_data_util.js.html +139 -0
  64. package/coverage/src/phaser/display/group.js.html +1000 -0
  65. package/coverage/src/phaser/display/image.js.html +1222 -0
  66. package/coverage/src/phaser/display/index.html +266 -0
  67. package/coverage/src/phaser/display/sprite_batch.js.html +121 -0
  68. package/coverage/src/phaser/display/sprite_util.js.html +883 -0
  69. package/coverage/src/phaser/display/text.js.html +4597 -0
  70. package/coverage/src/phaser/display/webgl/abstract_filter.js.html +157 -0
  71. package/coverage/src/phaser/display/webgl/base_texture.js.html +322 -0
  72. package/coverage/src/phaser/display/webgl/blend_manager.js.html +208 -0
  73. package/coverage/src/phaser/display/webgl/earcut.js.html +2137 -0
  74. package/coverage/src/phaser/display/webgl/earcut_node.js.html +160 -0
  75. package/coverage/src/phaser/display/webgl/fast_sprite_batch.js.html +877 -0
  76. package/coverage/src/phaser/display/webgl/filter_manager.js.html +271 -0
  77. package/coverage/src/phaser/display/webgl/filter_texture.js.html +298 -0
  78. package/coverage/src/phaser/display/webgl/graphics.js.html +1942 -0
  79. package/coverage/src/phaser/display/webgl/graphics_data.js.html +214 -0
  80. package/coverage/src/phaser/display/webgl/index.html +386 -0
  81. package/coverage/src/phaser/display/webgl/mask_manager.js.html +199 -0
  82. package/coverage/src/phaser/display/webgl/render_texture.js.html +406 -0
  83. package/coverage/src/phaser/display/webgl/renderer.js.html +1003 -0
  84. package/coverage/src/phaser/display/webgl/shader/complex.js.html +316 -0
  85. package/coverage/src/phaser/display/webgl/shader/fast.js.html +406 -0
  86. package/coverage/src/phaser/display/webgl/shader/index.html +176 -0
  87. package/coverage/src/phaser/display/webgl/shader/normal.js.html +826 -0
  88. package/coverage/src/phaser/display/webgl/shader/primitive.js.html +310 -0
  89. package/coverage/src/phaser/display/webgl/shader/strip.js.html +325 -0
  90. package/coverage/src/phaser/display/webgl/shader_manager.js.html +385 -0
  91. package/coverage/src/phaser/display/webgl/sprite_batch.js.html +1135 -0
  92. package/coverage/src/phaser/display/webgl/stencil_manager.js.html +655 -0
  93. package/coverage/src/phaser/display/webgl/texture.js.html +490 -0
  94. package/coverage/src/phaser/display/webgl/texture_util.js.html +169 -0
  95. package/coverage/src/phaser/display/webgl/util.js.html +451 -0
  96. package/coverage/{lcov-report → src/phaser}/geom/circle.js.html +252 -252
  97. package/coverage/{lcov-report → src/phaser}/geom/ellipse.js.html +79 -79
  98. package/coverage/{lcov-report → src/phaser}/geom/index.html +67 -67
  99. package/coverage/{lcov-report → src/phaser}/geom/line.js.html +287 -287
  100. package/coverage/{lcov-report → src/phaser}/geom/matrix.js.html +135 -135
  101. package/coverage/{lcov-report → src/phaser}/geom/point.js.html +251 -251
  102. package/coverage/{lcov-report → src/phaser}/geom/polygon.js.html +147 -147
  103. package/coverage/{lcov-report → src/phaser}/geom/rectangle.js.html +408 -408
  104. package/coverage/{lcov-report → src/phaser}/geom/rounded_rectangle.js.html +45 -45
  105. package/coverage/{lcov-report → src/phaser}/geom/util/circle.js.html +104 -104
  106. package/coverage/{lcov-report → src/phaser}/geom/util/ellipse.js.html +29 -29
  107. package/coverage/{lcov-report → src/phaser}/geom/util/index.html +76 -76
  108. package/coverage/{lcov-report → src/phaser}/geom/util/line.js.html +123 -123
  109. package/coverage/{lcov-report → src/phaser}/geom/util/matrix.js.html +45 -45
  110. package/coverage/{lcov-report → src/phaser}/geom/util/point.js.html +274 -274
  111. package/coverage/{lcov-report → src/phaser}/geom/util/polygon.js.html +21 -21
  112. package/coverage/{lcov-report → src/phaser}/geom/util/rectangle.js.html +218 -218
  113. package/coverage/{lcov-report → src/phaser}/geom/util/rounded_rectangle.js.html +21 -21
  114. package/coverage/{lcov-report → src/phaser}/util/index.html +28 -28
  115. package/coverage/{lcov-report → src/phaser}/util/math.js.html +283 -283
  116. package/eslint.config.js +5 -3
  117. package/package.json +21 -21
  118. package/pnpm-workspace.yaml +2 -0
  119. package/coverage/clover.xml +0 -1092
  120. package/coverage/coverage-final.json +0 -19
  121. package/coverage/lcov-report/index.html +0 -161
  122. package/coverage/lcov.info +0 -2179
  123. /package/coverage/{lcov-report/base.css → base.css} +0 -0
  124. /package/coverage/{lcov-report/favicon.png → favicon.png} +0 -0
  125. /package/coverage/{lcov-report/prettify.css → prettify.css} +0 -0
  126. /package/coverage/{lcov-report/prettify.js → prettify.js} +0 -0
  127. /package/coverage/{lcov-report/sort-arrow-sprite.png → sort-arrow-sprite.png} +0 -0
@@ -0,0 +1,883 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/phaser/display/sprite_util.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/phaser/display</a> sprite_util.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/260</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">0% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">0% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/260</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
333
+ <span class="cline-any cline-no">&nbsp;</span>
334
+ <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-no">&nbsp;</span>
338
+ <span class="cline-any cline-no">&nbsp;</span>
339
+ <span class="cline-any cline-no">&nbsp;</span>
340
+ <span class="cline-any cline-no">&nbsp;</span>
341
+ <span class="cline-any cline-no">&nbsp;</span>
342
+ <span class="cline-any cline-no">&nbsp;</span>
343
+ <span class="cline-any cline-no">&nbsp;</span>
344
+ <span class="cline-any cline-no">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-no">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
348
+ <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-no">&nbsp;</span>
350
+ <span class="cline-any cline-no">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-no">&nbsp;</span>
354
+ <span class="cline-any cline-no">&nbsp;</span>
355
+ <span class="cline-any cline-no">&nbsp;</span>
356
+ <span class="cline-any cline-no">&nbsp;</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
359
+ <span class="cline-any cline-no">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
362
+ <span class="cline-any cline-no">&nbsp;</span>
363
+ <span class="cline-any cline-no">&nbsp;</span>
364
+ <span class="cline-any cline-no">&nbsp;</span>
365
+ <span class="cline-any cline-no">&nbsp;</span>
366
+ <span class="cline-any cline-no">&nbsp;</span>
367
+ <span class="cline-any cline-no">&nbsp;</span>
368
+ <span class="cline-any cline-no">&nbsp;</span>
369
+ <span class="cline-any cline-no">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-no">&nbsp;</span>
372
+ <span class="cline-any cline-no">&nbsp;</span>
373
+ <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-no">&nbsp;</span>
375
+ <span class="cline-any cline-no">&nbsp;</span>
376
+ <span class="cline-any cline-no">&nbsp;</span>
377
+ <span class="cline-any cline-no">&nbsp;</span>
378
+ <span class="cline-any cline-no">&nbsp;</span>
379
+ <span class="cline-any cline-no">&nbsp;</span>
380
+ <span class="cline-any cline-no">&nbsp;</span>
381
+ <span class="cline-any cline-no">&nbsp;</span>
382
+ <span class="cline-any cline-no">&nbsp;</span>
383
+ <span class="cline-any cline-no">&nbsp;</span>
384
+ <span class="cline-any cline-no">&nbsp;</span>
385
+ <span class="cline-any cline-no">&nbsp;</span>
386
+ <span class="cline-any cline-no">&nbsp;</span>
387
+ <span class="cline-any cline-no">&nbsp;</span>
388
+ <span class="cline-any cline-no">&nbsp;</span>
389
+ <span class="cline-any cline-no">&nbsp;</span>
390
+ <span class="cline-any cline-no">&nbsp;</span>
391
+ <span class="cline-any cline-no">&nbsp;</span>
392
+ <span class="cline-any cline-no">&nbsp;</span>
393
+ <span class="cline-any cline-no">&nbsp;</span>
394
+ <span class="cline-any cline-no">&nbsp;</span>
395
+ <span class="cline-any cline-no">&nbsp;</span>
396
+ <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-no">&nbsp;</span>
398
+ <span class="cline-any cline-no">&nbsp;</span>
399
+ <span class="cline-any cline-no">&nbsp;</span>
400
+ <span class="cline-any cline-no">&nbsp;</span>
401
+ <span class="cline-any cline-no">&nbsp;</span>
402
+ <span class="cline-any cline-no">&nbsp;</span>
403
+ <span class="cline-any cline-no">&nbsp;</span>
404
+ <span class="cline-any cline-no">&nbsp;</span>
405
+ <span class="cline-any cline-no">&nbsp;</span>
406
+ <span class="cline-any cline-no">&nbsp;</span>
407
+ <span class="cline-any cline-no">&nbsp;</span>
408
+ <span class="cline-any cline-no">&nbsp;</span>
409
+ <span class="cline-any cline-no">&nbsp;</span>
410
+ <span class="cline-any cline-no">&nbsp;</span>
411
+ <span class="cline-any cline-no">&nbsp;</span>
412
+ <span class="cline-any cline-no">&nbsp;</span>
413
+ <span class="cline-any cline-no">&nbsp;</span>
414
+ <span class="cline-any cline-no">&nbsp;</span>
415
+ <span class="cline-any cline-no">&nbsp;</span>
416
+ <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-no">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-no">&nbsp;</span>
421
+ <span class="cline-any cline-no">&nbsp;</span>
422
+ <span class="cline-any cline-no">&nbsp;</span>
423
+ <span class="cline-any cline-no">&nbsp;</span>
424
+ <span class="cline-any cline-no">&nbsp;</span>
425
+ <span class="cline-any cline-no">&nbsp;</span>
426
+ <span class="cline-any cline-no">&nbsp;</span>
427
+ <span class="cline-any cline-no">&nbsp;</span>
428
+ <span class="cline-any cline-no">&nbsp;</span>
429
+ <span class="cline-any cline-no">&nbsp;</span>
430
+ <span class="cline-any cline-no">&nbsp;</span>
431
+ <span class="cline-any cline-no">&nbsp;</span>
432
+ <span class="cline-any cline-no">&nbsp;</span>
433
+ <span class="cline-any cline-no">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-no">&nbsp;</span>
436
+ <span class="cline-any cline-no">&nbsp;</span>
437
+ <span class="cline-any cline-no">&nbsp;</span>
438
+ <span class="cline-any cline-no">&nbsp;</span>
439
+ <span class="cline-any cline-no">&nbsp;</span>
440
+ <span class="cline-any cline-no">&nbsp;</span>
441
+ <span class="cline-any cline-no">&nbsp;</span>
442
+ <span class="cline-any cline-no">&nbsp;</span>
443
+ <span class="cline-any cline-no">&nbsp;</span>
444
+ <span class="cline-any cline-no">&nbsp;</span>
445
+ <span class="cline-any cline-no">&nbsp;</span>
446
+ <span class="cline-any cline-no">&nbsp;</span>
447
+ <span class="cline-any cline-no">&nbsp;</span>
448
+ <span class="cline-any cline-no">&nbsp;</span>
449
+ <span class="cline-any cline-no">&nbsp;</span>
450
+ <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-no">&nbsp;</span>
456
+ <span class="cline-any cline-no">&nbsp;</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
+ <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-no">&nbsp;</span>
461
+ <span class="cline-any cline-no">&nbsp;</span>
462
+ <span class="cline-any cline-no">&nbsp;</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-no">&nbsp;</span>
466
+ <span class="cline-any cline-no">&nbsp;</span>
467
+ <span class="cline-any cline-no">&nbsp;</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-no">&nbsp;</span>
470
+ <span class="cline-any cline-no">&nbsp;</span>
471
+ <span class="cline-any cline-no">&nbsp;</span>
472
+ <span class="cline-any cline-no">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-no">&nbsp;</span>
475
+ <span class="cline-any cline-no">&nbsp;</span>
476
+ <span class="cline-any cline-no">&nbsp;</span>
477
+ <span class="cline-any cline-no">&nbsp;</span>
478
+ <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-no">&nbsp;</span>
481
+ <span class="cline-any cline-no">&nbsp;</span>
482
+ <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-no">&nbsp;</span>
484
+ <span class="cline-any cline-no">&nbsp;</span>
485
+ <span class="cline-any cline-no">&nbsp;</span>
486
+ <span class="cline-any cline-no">&nbsp;</span>
487
+ <span class="cline-any cline-no">&nbsp;</span>
488
+ <span class="cline-any cline-no">&nbsp;</span>
489
+ <span class="cline-any cline-no">&nbsp;</span>
490
+ <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-no">&nbsp;</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
500
+ <span class="cline-any cline-no">&nbsp;</span>
501
+ <span class="cline-any cline-no">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
506
+ <span class="cline-any cline-no">&nbsp;</span>
507
+ <span class="cline-any cline-no">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-no">&nbsp;</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-no">&nbsp;</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-no">&nbsp;</span>
525
+ <span class="cline-any cline-no">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-no">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-no">&nbsp;</span>
532
+ <span class="cline-any cline-no">&nbsp;</span>
533
+ <span class="cline-any cline-no">&nbsp;</span>
534
+ <span class="cline-any cline-no">&nbsp;</span>
535
+ <span class="cline-any cline-no">&nbsp;</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-no">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-no">&nbsp;</span>
540
+ <span class="cline-any cline-no">&nbsp;</span>
541
+ <span class="cline-any cline-no">&nbsp;</span>
542
+ <span class="cline-any cline-no">&nbsp;</span>
543
+ <span class="cline-any cline-no">&nbsp;</span>
544
+ <span class="cline-any cline-no">&nbsp;</span>
545
+ <span class="cline-any cline-no">&nbsp;</span>
546
+ <span class="cline-any cline-no">&nbsp;</span>
547
+ <span class="cline-any cline-no">&nbsp;</span>
548
+ <span class="cline-any cline-no">&nbsp;</span>
549
+ <span class="cline-any cline-no">&nbsp;</span>
550
+ <span class="cline-any cline-no">&nbsp;</span>
551
+ <span class="cline-any cline-no">&nbsp;</span>
552
+ <span class="cline-any cline-no">&nbsp;</span>
553
+ <span class="cline-any cline-no">&nbsp;</span>
554
+ <span class="cline-any cline-no">&nbsp;</span>
555
+ <span class="cline-any cline-no">&nbsp;</span>
556
+ <span class="cline-any cline-no">&nbsp;</span>
557
+ <span class="cline-any cline-no">&nbsp;</span>
558
+ <span class="cline-any cline-no">&nbsp;</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
+ <span class="cline-any cline-no">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-no">&nbsp;</span>
564
+ <span class="cline-any cline-no">&nbsp;</span>
565
+ <span class="cline-any cline-no">&nbsp;</span>
566
+ <span class="cline-any cline-no">&nbsp;</span>
567
+ <span class="cline-any cline-no">&nbsp;</span>
568
+ <span class="cline-any cline-no">&nbsp;</span>
569
+ <span class="cline-any cline-no">&nbsp;</span>
570
+ <span class="cline-any cline-no">&nbsp;</span>
571
+ <span class="cline-any cline-no">&nbsp;</span>
572
+ <span class="cline-any cline-no">&nbsp;</span>
573
+ <span class="cline-any cline-no">&nbsp;</span>
574
+ <span class="cline-any cline-no">&nbsp;</span>
575
+ <span class="cline-any cline-no">&nbsp;</span>
576
+ <span class="cline-any cline-no">&nbsp;</span>
577
+ <span class="cline-any cline-no">&nbsp;</span>
578
+ <span class="cline-any cline-no">&nbsp;</span>
579
+ <span class="cline-any cline-no">&nbsp;</span>
580
+ <span class="cline-any cline-no">&nbsp;</span>
581
+ <span class="cline-any cline-no">&nbsp;</span>
582
+ <span class="cline-any cline-no">&nbsp;</span>
583
+ <span class="cline-any cline-no">&nbsp;</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
+ <span class="cline-any cline-no">&nbsp;</span>
588
+ <span class="cline-any cline-no">&nbsp;</span>
589
+ <span class="cline-any cline-no">&nbsp;</span>
590
+ <span class="cline-any cline-no">&nbsp;</span>
591
+ <span class="cline-any cline-no">&nbsp;</span>
592
+ <span class="cline-any cline-no">&nbsp;</span>
593
+ <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-no">&nbsp;</span>
595
+ <span class="cline-any cline-no">&nbsp;</span>
596
+ <span class="cline-any cline-no">&nbsp;</span>
597
+ <span class="cline-any cline-no">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { SCALE_LINEAR } from '../core/const.js';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
599
+ <span class="cstat-no" title="statement not covered" >import { getIdentityMatrix } from '../geom/util/matrix.js';</span>
600
+ <span class="cstat-no" title="statement not covered" >import { getTintedTexture } from './canvas/tinter.js';</span>
601
+ &nbsp;
602
+ <span class="cstat-no" title="statement not covered" >/**</span>
603
+ <span class="cstat-no" title="statement not covered" > * TBD.</span>
604
+ <span class="cstat-no" title="statement not covered" > * @param {import('./image.js').Image} target - TBD.</span>
605
+ <span class="cstat-no" title="statement not covered" > * @param {import('./webgl/texture.js').Texture} texture - TBD.</span>
606
+ <span class="cstat-no" title="statement not covered" > * @param {boolean} destroyBase - TBD.</span>
607
+ <span class="cstat-no" title="statement not covered" > */</span>
608
+ <span class="cstat-no" title="statement not covered" >export const setTexture = (target, texture, destroyBase = false) =&gt; {</span>
609
+ <span class="cstat-no" title="statement not covered" > if (destroyBase) {</span>
610
+ <span class="cstat-no" title="statement not covered" > target.texture.baseTexture.destroy();</span>
611
+ <span class="cstat-no" title="statement not covered" > }</span>
612
+ <span class="cstat-no" title="statement not covered" > target.texture.baseTexture.skipRender = false;</span>
613
+ <span class="cstat-no" title="statement not covered" > target.texture = texture;</span>
614
+ <span class="cstat-no" title="statement not covered" > target.texture.valid = true;</span>
615
+ <span class="cstat-no" title="statement not covered" > target.cachedTint = -1;</span>
616
+ <span class="cstat-no" title="statement not covered" >};</span>
617
+ &nbsp;
618
+ <span class="cstat-no" title="statement not covered" >/**</span>
619
+ <span class="cstat-no" title="statement not covered" > * TBD.</span>
620
+ <span class="cstat-no" title="statement not covered" > * @param {import('./image.js').Image} target - TBD.</span>
621
+ <span class="cstat-no" title="statement not covered" > * @param {object} matrix - TBD.</span>
622
+ <span class="cstat-no" title="statement not covered" > * @returns {import('../geom/rectangle.js').Rectangle} TBD.</span>
623
+ <span class="cstat-no" title="statement not covered" > */</span>
624
+ <span class="cstat-no" title="statement not covered" >export const getBounds = (target, matrix = null) =&gt; {</span>
625
+ <span class="cstat-no" title="statement not covered" > // TODO verify</span>
626
+ <span class="cstat-no" title="statement not covered" > if (target.currentBounds) {</span>
627
+ <span class="cstat-no" title="statement not covered" > return target.currentBounds;</span>
628
+ <span class="cstat-no" title="statement not covered" > }</span>
629
+ <span class="cstat-no" title="statement not covered" > const width = target.texture.frame.width;</span>
630
+ <span class="cstat-no" title="statement not covered" > const height = target.texture.frame.height;</span>
631
+ <span class="cstat-no" title="statement not covered" > let w0 = width * (1 - target.anchor.x);</span>
632
+ <span class="cstat-no" title="statement not covered" > let w1 = width * -target.anchor.x;</span>
633
+ <span class="cstat-no" title="statement not covered" > let h0 = height * (1 - target.anchor.y);</span>
634
+ <span class="cstat-no" title="statement not covered" > let h1 = height * -target.anchor.y;</span>
635
+ <span class="cstat-no" title="statement not covered" > const worldTransform = matrix || target.worldTransform;</span>
636
+ <span class="cstat-no" title="statement not covered" > let a = worldTransform.a;</span>
637
+ <span class="cstat-no" title="statement not covered" > const b = worldTransform.b;</span>
638
+ <span class="cstat-no" title="statement not covered" > const c = worldTransform.c;</span>
639
+ <span class="cstat-no" title="statement not covered" > let d = worldTransform.d;</span>
640
+ <span class="cstat-no" title="statement not covered" > const tx = worldTransform.tx;</span>
641
+ <span class="cstat-no" title="statement not covered" > const ty = worldTransform.ty;</span>
642
+ <span class="cstat-no" title="statement not covered" > let maxX = -Infinity;</span>
643
+ <span class="cstat-no" title="statement not covered" > let maxY = -Infinity;</span>
644
+ <span class="cstat-no" title="statement not covered" > let minX = Infinity;</span>
645
+ <span class="cstat-no" title="statement not covered" > let minY = Infinity;</span>
646
+ <span class="cstat-no" title="statement not covered" > if (b === 0 &amp;&amp; c === 0) {</span>
647
+ <span class="cstat-no" title="statement not covered" > // scale may be negative!</span>
648
+ <span class="cstat-no" title="statement not covered" > if (a &lt; 0) {</span>
649
+ <span class="cstat-no" title="statement not covered" > a *= -1;</span>
650
+ <span class="cstat-no" title="statement not covered" > const temp = w0;</span>
651
+ <span class="cstat-no" title="statement not covered" > w0 = -w1;</span>
652
+ <span class="cstat-no" title="statement not covered" > w1 = -temp;</span>
653
+ <span class="cstat-no" title="statement not covered" > }</span>
654
+ <span class="cstat-no" title="statement not covered" > if (d &lt; 0) {</span>
655
+ <span class="cstat-no" title="statement not covered" > d *= -1;</span>
656
+ <span class="cstat-no" title="statement not covered" > const temp = h0;</span>
657
+ <span class="cstat-no" title="statement not covered" > h0 = -h1;</span>
658
+ <span class="cstat-no" title="statement not covered" > h1 = -temp;</span>
659
+ <span class="cstat-no" title="statement not covered" > }</span>
660
+ <span class="cstat-no" title="statement not covered" > // this means there is no rotation going on right? RIGHT?</span>
661
+ <span class="cstat-no" title="statement not covered" > // if thats the case then we can avoid checking the bound values! yay</span>
662
+ <span class="cstat-no" title="statement not covered" > minX = a * w1 + tx;</span>
663
+ <span class="cstat-no" title="statement not covered" > maxX = a * w0 + tx;</span>
664
+ <span class="cstat-no" title="statement not covered" > minY = d * h1 + ty;</span>
665
+ <span class="cstat-no" title="statement not covered" > maxY = d * h0 + ty;</span>
666
+ <span class="cstat-no" title="statement not covered" > } else {</span>
667
+ <span class="cstat-no" title="statement not covered" > const x1 = a * w1 + c * h1 + tx;</span>
668
+ <span class="cstat-no" title="statement not covered" > const y1 = d * h1 + b * w1 + ty;</span>
669
+ <span class="cstat-no" title="statement not covered" > const x2 = a * w0 + c * h1 + tx;</span>
670
+ <span class="cstat-no" title="statement not covered" > const y2 = d * h1 + b * w0 + ty;</span>
671
+ <span class="cstat-no" title="statement not covered" > const x3 = a * w0 + c * h0 + tx;</span>
672
+ <span class="cstat-no" title="statement not covered" > const y3 = d * h0 + b * w0 + ty;</span>
673
+ <span class="cstat-no" title="statement not covered" > const x4 = a * w1 + c * h0 + tx;</span>
674
+ <span class="cstat-no" title="statement not covered" > const y4 = d * h0 + b * w1 + ty;</span>
675
+ <span class="cstat-no" title="statement not covered" > minX = x1 &lt; minX ? x1 : minX;</span>
676
+ <span class="cstat-no" title="statement not covered" > minX = x2 &lt; minX ? x2 : minX;</span>
677
+ <span class="cstat-no" title="statement not covered" > minX = x3 &lt; minX ? x3 : minX;</span>
678
+ <span class="cstat-no" title="statement not covered" > minX = x4 &lt; minX ? x4 : minX;</span>
679
+ <span class="cstat-no" title="statement not covered" > minY = y1 &lt; minY ? y1 : minY;</span>
680
+ <span class="cstat-no" title="statement not covered" > minY = y2 &lt; minY ? y2 : minY;</span>
681
+ <span class="cstat-no" title="statement not covered" > minY = y3 &lt; minY ? y3 : minY;</span>
682
+ <span class="cstat-no" title="statement not covered" > minY = y4 &lt; minY ? y4 : minY;</span>
683
+ <span class="cstat-no" title="statement not covered" > maxX = x1 &gt; maxX ? x1 : maxX;</span>
684
+ <span class="cstat-no" title="statement not covered" > maxX = x2 &gt; maxX ? x2 : maxX;</span>
685
+ <span class="cstat-no" title="statement not covered" > maxX = x3 &gt; maxX ? x3 : maxX;</span>
686
+ <span class="cstat-no" title="statement not covered" > maxX = x4 &gt; maxX ? x4 : maxX;</span>
687
+ <span class="cstat-no" title="statement not covered" > maxY = y1 &gt; maxY ? y1 : maxY;</span>
688
+ <span class="cstat-no" title="statement not covered" > maxY = y2 &gt; maxY ? y2 : maxY;</span>
689
+ <span class="cstat-no" title="statement not covered" > maxY = y3 &gt; maxY ? y3 : maxY;</span>
690
+ <span class="cstat-no" title="statement not covered" > maxY = y4 &gt; maxY ? y4 : maxY;</span>
691
+ <span class="cstat-no" title="statement not covered" > }</span>
692
+ <span class="cstat-no" title="statement not covered" > const bounds = target.cachedBounds;</span>
693
+ <span class="cstat-no" title="statement not covered" > bounds.x = minX;</span>
694
+ <span class="cstat-no" title="statement not covered" > bounds.width = maxX - minX;</span>
695
+ <span class="cstat-no" title="statement not covered" > bounds.y = minY;</span>
696
+ <span class="cstat-no" title="statement not covered" > bounds.height = maxY - minY;</span>
697
+ <span class="cstat-no" title="statement not covered" > target.currentBounds = bounds;</span>
698
+ <span class="cstat-no" title="statement not covered" > return bounds;</span>
699
+ <span class="cstat-no" title="statement not covered" >};</span>
700
+ &nbsp;
701
+ <span class="cstat-no" title="statement not covered" >/**</span>
702
+ <span class="cstat-no" title="statement not covered" > * TBD.</span>
703
+ <span class="cstat-no" title="statement not covered" > * @param {import('./image.js').Image} target - TBD.</span>
704
+ <span class="cstat-no" title="statement not covered" > * @returns {import('../geom/rectangle.js').Rectangle} TBD.</span>
705
+ <span class="cstat-no" title="statement not covered" > */</span>
706
+ <span class="cstat-no" title="statement not covered" >export const getLocalBounds = (target) =&gt; {</span>
707
+ <span class="cstat-no" title="statement not covered" > const matrixCache = target.worldTransform;</span>
708
+ <span class="cstat-no" title="statement not covered" > target.worldTransform = getIdentityMatrix();</span>
709
+ <span class="cstat-no" title="statement not covered" > let i;</span>
710
+ <span class="cstat-no" title="statement not covered" > for (i = 0; i &lt; target.children.length; i += 1) {</span>
711
+ <span class="cstat-no" title="statement not covered" > target.children[i].updateTransform();</span>
712
+ <span class="cstat-no" title="statement not covered" > }</span>
713
+ <span class="cstat-no" title="statement not covered" > const bounds = target.getBounds();</span>
714
+ <span class="cstat-no" title="statement not covered" > target.worldTransform = matrixCache;</span>
715
+ <span class="cstat-no" title="statement not covered" > for (i = 0; i &lt; target.children.length; i += 1) {</span>
716
+ <span class="cstat-no" title="statement not covered" > target.children[i].updateTransform();</span>
717
+ <span class="cstat-no" title="statement not covered" > }</span>
718
+ <span class="cstat-no" title="statement not covered" > return bounds;</span>
719
+ <span class="cstat-no" title="statement not covered" >};</span>
720
+ &nbsp;
721
+ <span class="cstat-no" title="statement not covered" >/**</span>
722
+ <span class="cstat-no" title="statement not covered" > * TBD.</span>
723
+ <span class="cstat-no" title="statement not covered" > * @param {import('./image.js').Image} target - TBD.</span>
724
+ <span class="cstat-no" title="statement not covered" > * @param {object} renderSession - TBD.</span>
725
+ <span class="cstat-no" title="statement not covered" > * @param {import('../geom/matrix.js').Matrix} matrix - TBD.</span>
726
+ <span class="cstat-no" title="statement not covered" > */</span>
727
+ <span class="cstat-no" title="statement not covered" >export const renderWebGL = (target, renderSession, matrix) =&gt; {</span>
728
+ <span class="cstat-no" title="statement not covered" > // if the sprite is not visible or the alpha is 0 then no need to render this element</span>
729
+ <span class="cstat-no" title="statement not covered" > if (!target.visible || target.alpha &lt;= 0 || !target.renderable) {</span>
730
+ <span class="cstat-no" title="statement not covered" > return;</span>
731
+ <span class="cstat-no" title="statement not covered" > }</span>
732
+ <span class="cstat-no" title="statement not covered" > // They provided an alternative rendering matrix, so use it</span>
733
+ <span class="cstat-no" title="statement not covered" > let wt = target.worldTransform;</span>
734
+ <span class="cstat-no" title="statement not covered" > if (matrix) {</span>
735
+ <span class="cstat-no" title="statement not covered" > wt = matrix;</span>
736
+ <span class="cstat-no" title="statement not covered" > }</span>
737
+ <span class="cstat-no" title="statement not covered" > // A quick check to see if this element has a mask or a filter.</span>
738
+ <span class="cstat-no" title="statement not covered" > if (target._mask || target._filters) {</span>
739
+ <span class="cstat-no" title="statement not covered" > const spriteBatch = renderSession.spriteBatch;</span>
740
+ <span class="cstat-no" title="statement not covered" > // push filter first as we need to ensure the stencil buffer is correct for any masking</span>
741
+ <span class="cstat-no" title="statement not covered" > if (target._filters) {</span>
742
+ <span class="cstat-no" title="statement not covered" > spriteBatch.flush();</span>
743
+ <span class="cstat-no" title="statement not covered" > renderSession.filterManager.pushFilter(target._filterBlock);</span>
744
+ <span class="cstat-no" title="statement not covered" > }</span>
745
+ <span class="cstat-no" title="statement not covered" > if (target._mask) {</span>
746
+ <span class="cstat-no" title="statement not covered" > spriteBatch.stop();</span>
747
+ <span class="cstat-no" title="statement not covered" > renderSession.maskManager.pushMask(target.mask, renderSession);</span>
748
+ <span class="cstat-no" title="statement not covered" > spriteBatch.start();</span>
749
+ <span class="cstat-no" title="statement not covered" > }</span>
750
+ <span class="cstat-no" title="statement not covered" > // add this sprite to the batch</span>
751
+ <span class="cstat-no" title="statement not covered" > spriteBatch.render(target);</span>
752
+ <span class="cstat-no" title="statement not covered" > // now loop through the children and make sure they get rendered</span>
753
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; target.children.length; i += 1) {</span>
754
+ <span class="cstat-no" title="statement not covered" > target.children[i].renderWebGL(renderSession);</span>
755
+ <span class="cstat-no" title="statement not covered" > }</span>
756
+ <span class="cstat-no" title="statement not covered" > // time to stop the sprite batch as either a mask element or a filter draw will happen next</span>
757
+ <span class="cstat-no" title="statement not covered" > spriteBatch.stop();</span>
758
+ <span class="cstat-no" title="statement not covered" > if (target._mask) renderSession.maskManager.popMask(target._mask, renderSession);</span>
759
+ <span class="cstat-no" title="statement not covered" > if (target._filters) renderSession.filterManager.popFilter();</span>
760
+ <span class="cstat-no" title="statement not covered" > spriteBatch.start();</span>
761
+ <span class="cstat-no" title="statement not covered" > } else {</span>
762
+ <span class="cstat-no" title="statement not covered" > renderSession.spriteBatch.render(target);</span>
763
+ <span class="cstat-no" title="statement not covered" > // Render children!</span>
764
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; target.children.length; i += 1) {</span>
765
+ <span class="cstat-no" title="statement not covered" > target.children[i].renderWebGL(renderSession, wt);</span>
766
+ <span class="cstat-no" title="statement not covered" > }</span>
767
+ <span class="cstat-no" title="statement not covered" > }</span>
768
+ <span class="cstat-no" title="statement not covered" >};</span>
769
+ &nbsp;
770
+ <span class="cstat-no" title="statement not covered" >/**</span>
771
+ <span class="cstat-no" title="statement not covered" > * TBD.</span>
772
+ <span class="cstat-no" title="statement not covered" > * @param {import('./image.js').Image} target - TBD.</span>
773
+ <span class="cstat-no" title="statement not covered" > * @param {object} renderSession - TBD.</span>
774
+ <span class="cstat-no" title="statement not covered" > * @param {import('../geom/matrix.js').Matrix} matrix - TBD.</span>
775
+ <span class="cstat-no" title="statement not covered" > */</span>
776
+ <span class="cstat-no" title="statement not covered" >export const renderCanvas = (target, renderSession, matrix) =&gt; {</span>
777
+ <span class="cstat-no" title="statement not covered" > // If the sprite is not visible or the alpha is 0 then no need to render this element</span>
778
+ <span class="cstat-no" title="statement not covered" > if (</span>
779
+ <span class="cstat-no" title="statement not covered" > !target.visible ||</span>
780
+ <span class="cstat-no" title="statement not covered" > target.alpha === 0 ||</span>
781
+ <span class="cstat-no" title="statement not covered" > !target.renderable ||</span>
782
+ <span class="cstat-no" title="statement not covered" > target.texture.crop.width &lt;= 0 ||</span>
783
+ <span class="cstat-no" title="statement not covered" > target.texture.crop.height &lt;= 0</span>
784
+ <span class="cstat-no" title="statement not covered" > ) {</span>
785
+ <span class="cstat-no" title="statement not covered" > return;</span>
786
+ <span class="cstat-no" title="statement not covered" > }</span>
787
+ <span class="cstat-no" title="statement not covered" > let wt = target.worldTransform;</span>
788
+ <span class="cstat-no" title="statement not covered" > // If they provided an alternative rendering matrix then use it</span>
789
+ <span class="cstat-no" title="statement not covered" > if (matrix) {</span>
790
+ <span class="cstat-no" title="statement not covered" > wt = matrix;</span>
791
+ <span class="cstat-no" title="statement not covered" > }</span>
792
+ <span class="cstat-no" title="statement not covered" > if (target.blendMode !== renderSession.currentBlendMode) {</span>
793
+ <span class="cstat-no" title="statement not covered" > renderSession.currentBlendMode = target.blendMode;</span>
794
+ <span class="cstat-no" title="statement not covered" > renderSession.context.globalCompositeOperation =</span>
795
+ <span class="cstat-no" title="statement not covered" > window.PhaserRegistry.blendModesCanvas[renderSession.currentBlendMode];</span>
796
+ <span class="cstat-no" title="statement not covered" > }</span>
797
+ <span class="cstat-no" title="statement not covered" > if (target._mask) {</span>
798
+ <span class="cstat-no" title="statement not covered" > renderSession.maskManager.pushMask(target._mask, renderSession);</span>
799
+ <span class="cstat-no" title="statement not covered" > }</span>
800
+ <span class="cstat-no" title="statement not covered" > // Ignore null sources</span>
801
+ <span class="cstat-no" title="statement not covered" > if (target.texture.valid) {</span>
802
+ <span class="cstat-no" title="statement not covered" > const resolution = target.texture.baseTexture.resolution / renderSession.resolution;</span>
803
+ <span class="cstat-no" title="statement not covered" > renderSession.context.globalAlpha = target.worldAlpha;</span>
804
+ &nbsp;
805
+ <span class="cstat-no" title="statement not covered" > // If smoothingEnabled is supported and we need to change the smoothing property for this texture</span>
806
+ <span class="cstat-no" title="statement not covered" > if (renderSession.smoothProperty &amp;&amp; renderSession.scaleMode !== target.texture.baseTexture.scaleMode) {</span>
807
+ <span class="cstat-no" title="statement not covered" > renderSession.scaleMode = target.texture.baseTexture.scaleMode;</span>
808
+ <span class="cstat-no" title="statement not covered" > renderSession.context[renderSession.smoothProperty] = renderSession.scaleMode === SCALE_LINEAR;</span>
809
+ <span class="cstat-no" title="statement not covered" > }</span>
810
+ <span class="cstat-no" title="statement not covered" > // If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions</span>
811
+ <span class="cstat-no" title="statement not covered" > let dx = target.texture.trim</span>
812
+ <span class="cstat-no" title="statement not covered" > ? target.texture.trim.x - target.anchor.x * target.texture.trim.width</span>
813
+ <span class="cstat-no" title="statement not covered" > : target.anchor.x * -target.texture.frame.width;</span>
814
+ <span class="cstat-no" title="statement not covered" > let dy = target.texture.trim</span>
815
+ <span class="cstat-no" title="statement not covered" > ? target.texture.trim.y - target.anchor.y * target.texture.trim.height</span>
816
+ <span class="cstat-no" title="statement not covered" > : target.anchor.y * -target.texture.frame.height;</span>
817
+ <span class="cstat-no" title="statement not covered" > const tx = wt.tx * renderSession.resolution + renderSession.shakeX;</span>
818
+ <span class="cstat-no" title="statement not covered" > const ty = wt.ty * renderSession.resolution + renderSession.shakeY;</span>
819
+ <span class="cstat-no" title="statement not covered" > // Allow for pixel rounding</span>
820
+ <span class="cstat-no" title="statement not covered" > if (renderSession.roundPixels) {</span>
821
+ <span class="cstat-no" title="statement not covered" > renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx | 0, ty | 0);</span>
822
+ <span class="cstat-no" title="statement not covered" > dx |= 0;</span>
823
+ <span class="cstat-no" title="statement not covered" > dy |= 0;</span>
824
+ <span class="cstat-no" title="statement not covered" > } else {</span>
825
+ <span class="cstat-no" title="statement not covered" > renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty);</span>
826
+ <span class="cstat-no" title="statement not covered" > }</span>
827
+ <span class="cstat-no" title="statement not covered" > let cw = target.texture.crop.width;</span>
828
+ <span class="cstat-no" title="statement not covered" > let ch = target.texture.crop.height;</span>
829
+ <span class="cstat-no" title="statement not covered" > dx /= resolution;</span>
830
+ <span class="cstat-no" title="statement not covered" > dy /= resolution;</span>
831
+ <span class="cstat-no" title="statement not covered" > if (target.tint !== 0xffffff) {</span>
832
+ <span class="cstat-no" title="statement not covered" > if (target.texture.requiresReTint || target.cachedTint !== target.tint) {</span>
833
+ <span class="cstat-no" title="statement not covered" > target.tintedTexture = getTintedTexture(target, target.tint);</span>
834
+ <span class="cstat-no" title="statement not covered" > target.cachedTint = target.tint;</span>
835
+ <span class="cstat-no" title="statement not covered" > target.texture.requiresReTint = false;</span>
836
+ <span class="cstat-no" title="statement not covered" > }</span>
837
+ <span class="cstat-no" title="statement not covered" > renderSession.context.drawImage(target.tintedTexture, 0, 0, cw, ch, dx, dy, cw / resolution, ch / resolution);</span>
838
+ <span class="cstat-no" title="statement not covered" > } else {</span>
839
+ <span class="cstat-no" title="statement not covered" > const cx = target.texture.crop.x;</span>
840
+ <span class="cstat-no" title="statement not covered" > const cy = target.texture.crop.y;</span>
841
+ <span class="cstat-no" title="statement not covered" > // https://github.com/photonstorm/phaser-ce/pull/61</span>
842
+ <span class="cstat-no" title="statement not covered" > cw = Math.floor(cw);</span>
843
+ <span class="cstat-no" title="statement not covered" > ch = Math.floor(ch);</span>
844
+ <span class="cstat-no" title="statement not covered" > renderSession.context.drawImage(</span>
845
+ <span class="cstat-no" title="statement not covered" > target.texture.baseTexture.source,</span>
846
+ <span class="cstat-no" title="statement not covered" > cx,</span>
847
+ <span class="cstat-no" title="statement not covered" > cy,</span>
848
+ <span class="cstat-no" title="statement not covered" > cw,</span>
849
+ <span class="cstat-no" title="statement not covered" > ch,</span>
850
+ <span class="cstat-no" title="statement not covered" > dx,</span>
851
+ <span class="cstat-no" title="statement not covered" > dy,</span>
852
+ <span class="cstat-no" title="statement not covered" > cw / resolution,</span>
853
+ <span class="cstat-no" title="statement not covered" > ch / resolution</span>
854
+ <span class="cstat-no" title="statement not covered" > );</span>
855
+ <span class="cstat-no" title="statement not covered" > }</span>
856
+ <span class="cstat-no" title="statement not covered" > }</span>
857
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; target.children.length; i += 1) {</span>
858
+ <span class="cstat-no" title="statement not covered" > target.children[i].renderCanvas(renderSession);</span>
859
+ <span class="cstat-no" title="statement not covered" > }</span>
860
+ <span class="cstat-no" title="statement not covered" > if (target._mask) {</span>
861
+ <span class="cstat-no" title="statement not covered" > renderSession.maskManager.popMask(renderSession);</span>
862
+ <span class="cstat-no" title="statement not covered" > }</span>
863
+ <span class="cstat-no" title="statement not covered" >};</span>
864
+ &nbsp;</pre></td></tr></table></pre>
865
+
866
+ <div class='push'></div><!-- for sticky footer -->
867
+ </div><!-- /wrapper -->
868
+ <div class='footer quiet pad2 space-top1 center small'>
869
+ Code coverage generated by
870
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
871
+ at 2025-08-19T06:39:20.400Z
872
+ </div>
873
+ <script src="../../../prettify.js"></script>
874
+ <script>
875
+ window.onload = function () {
876
+ prettyPrint();
877
+ };
878
+ </script>
879
+ <script src="../../../sorter.js"></script>
880
+ <script src="../../../block-navigation.js"></script>
881
+ </body>
882
+ </html>
883
+