From d6662e80948d80274e4d3b029ab4bd2191385de9 Mon Sep 17 00:00:00 2001 From: Signal Date: Wed, 17 Sep 2025 01:12:02 -0400 Subject: [PATCH] Add more things --- mods/rgt_cosmetics/init.lua | 98 ++++++ mods/rgt_cosmetics/mod.conf | 2 + mods/rgt_cosmetics/textures/rgt_base_key.png | Bin 0 -> 2433 bytes mods/rgt_cosmetics/textures/rgt_base_vix.png | Bin 0 -> 2493 bytes mods/rgt_outback/init.lua | 22 +- mods/rgt_outback/mapgen.lua | 30 +- .../rgt_outback/textures/rgt_cobble_mossy.png | Bin 0 -> 556 bytes mods/rgt_outback/textures/rgt_dirt_dark.png | Bin 0 -> 546 bytes mods/rgt_outback/textures/rgt_dirt_stony.png | Bin 0 -> 626 bytes mods/rgt_player/init.lua | 281 +++++++++++++++++- mods/rgt_player/models/rgt_character.gltf | 1 + mods/rgt_player/models/rgt_hand.gltf | 1 + mods/rgt_player/textures/crosshair.png | Bin 0 -> 117 bytes mods/rgt_player/textures/object_crosshair.png | Bin 0 -> 117 bytes mods/rgt_player/textures/rgt_pumpkin.png | Bin 214 -> 203 bytes mods/rgt_player/textures/rgt_pumpkin_alt.png | Bin 0 -> 233 bytes .../textures/rgt_pumpkin_alt_empty.png | Bin 0 -> 205 bytes mods/rgt_realms/init.lua | 8 + mods/rgt_towns/rgt_towns_editor/init.lua | 78 ++++- mods/rgt_towns/rgt_towns_main/init.lua | 2 + mods/rgt_world/init.lua | 68 ++++- mods/rgt_world/schems/tree.mts | Bin 0 -> 138 bytes mods/rgt_world/textures/rgt_cobble.png | Bin 386 -> 440 bytes mods/rgt_world/textures/rgt_dirt_mossy.png | Bin 0 -> 644 bytes mods/rgt_world/textures/rgt_oak_leaves.png | Bin 0 -> 437 bytes mods/rgt_world/textures/rgt_oak_log_side.png | Bin 279 -> 277 bytes 26 files changed, 565 insertions(+), 26 deletions(-) create mode 100644 mods/rgt_cosmetics/init.lua create mode 100644 mods/rgt_cosmetics/mod.conf create mode 100644 mods/rgt_cosmetics/textures/rgt_base_key.png create mode 100644 mods/rgt_cosmetics/textures/rgt_base_vix.png create mode 100644 mods/rgt_outback/textures/rgt_cobble_mossy.png create mode 100644 mods/rgt_outback/textures/rgt_dirt_dark.png create mode 100644 mods/rgt_outback/textures/rgt_dirt_stony.png create mode 100644 mods/rgt_player/models/rgt_character.gltf create mode 100644 mods/rgt_player/models/rgt_hand.gltf create mode 100644 mods/rgt_player/textures/crosshair.png create mode 100644 mods/rgt_player/textures/object_crosshair.png create mode 100644 mods/rgt_player/textures/rgt_pumpkin_alt.png create mode 100644 mods/rgt_player/textures/rgt_pumpkin_alt_empty.png create mode 100644 mods/rgt_world/schems/tree.mts create mode 100644 mods/rgt_world/textures/rgt_dirt_mossy.png create mode 100644 mods/rgt_world/textures/rgt_oak_leaves.png diff --git a/mods/rgt_cosmetics/init.lua b/mods/rgt_cosmetics/init.lua new file mode 100644 index 0000000..64ab59a --- /dev/null +++ b/mods/rgt_cosmetics/init.lua @@ -0,0 +1,98 @@ +rgt_cosmetics = { + characters = {} +} +local ns = rgt_cosmetics + +--[[ + { + name = "", -- Technical name + label = "", -- Displayed name + texture = "", + scale = 0.88, -- Amount by which to scale visual_size for this character + eye_height = 1.6, -- For use with `scale` + } +]] +function ns.register_character(def) + ns.characters[def.name] = def +end + +function ns.set_character(m, chr) + if type(chr) == "string" then + chr = ns.characters[chr] + end + m.object:set_properties { + visual = "mesh", + mesh = "rgt_character.gltf", + textures = {chr.texture}, + visual_size = vector.new(1,1,1) *chr.scale, + eye_height = chr.eye_height, + shaded = false, + } + m.object:get_inventory():set_stack("hand", 1, ItemStack("red_glazed_terracotta:_hand_"..chr.name)) +end + +minetest.register_on_joinplayer(function(p) + local m = rgt.players[p:get_player_name()] + ns.set_character(m, m.object:get_meta():get("character") or "key") +end) + +minetest.register_chatcommand("character", { + func = function(name, args) + ns.set_character(rgt.players[name], args) + end +}) + +local _hand = minetest.registered_items[""] +function rgt.register_hand(name, caps, realname) + rgt.register_node("_hand_"..name, { + description = "", + paramtype = "light", + drawtype = "mesh", + mesh = "rgt_hand.gltf", + tiles = {"rgt_base_"..(realname or name or "placeholder")..".png"}, + use_texture_alpha = "opaque", + visual_scale = 1, + wield_scale = vector.new(2,2,2), + node_placement_prediction = "", + on_construct = function(pos) + minetest.remove_node(pos) + end, + drop = "", + on_drop = function() + return "" + end, + range = _hand.range, + pointabilities = caps and caps.pointabilities or {}, + tool_capabilities = caps or { + full_punch_interval = 0, + max_drop_level = 0, + groupcaps = { +-- dig_immediate = {times = {0}, uses = 0, maxlevel = 5}, + hand_breakable = {times = {0.3, 0.5, 0.7}, uses = 0, maxlevel = 5} + }, + damage_groups = {fleshy=1}, + }, + groups = {not_in_creative_inventory = 1, dig_immediate = 1} + }) +end + +rgt.register_hand("key") +rgt.register_hand("vix") + +-- Builtin characters + +ns.register_character { + name = "key", + label = "Key", + texture = "rgt_base_key.png", + scale = 0.88, + eye_height = 1.6 +} + +ns.register_character { + name = "vix", + label = "Vix", + texture = "rgt_base_vix.png", + scale = 0.8, + eye_height = 1.5 +} \ No newline at end of file diff --git a/mods/rgt_cosmetics/mod.conf b/mods/rgt_cosmetics/mod.conf new file mode 100644 index 0000000..27c9345 --- /dev/null +++ b/mods/rgt_cosmetics/mod.conf @@ -0,0 +1,2 @@ +name = rgt_cosmetics +depends = rgt_player \ No newline at end of file diff --git a/mods/rgt_cosmetics/textures/rgt_base_key.png b/mods/rgt_cosmetics/textures/rgt_base_key.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b8920e1ea70c390a0dd187c4e328fb2bf57dc3 GIT binary patch literal 2433 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

ZhJj$&M?HHj2g0=BojalWbLR}L=7}7XX%BWV z#Ro^Uv~ecULz(>~CMU|*eeMXUn_`C})Nqd>ayEo%qv0NhoClG!WhX@2HZKmye^Uoc zOzFUB+s=-jo}c*AV)Dk{WjV#Imo>3)&c1R_mvv|A+I z(WSZ4PWv6+*F^ccuTB=20LU3qUE@@dp>D9feb^BQfpWvt4`%0H_domH_prTv7^+Wl zexfuXa{)v}dgAW(x`7au_BOd%JM2lbQe}vAgL>VGjKpN20iNgL$9MmoS=_O24S2D0 z$0xNP}V9d_F?&~gQbl<-7@g6+SMP>IfUN(%<=(ta3eR3w~)`UN+_W%Gw@2KFhyNCCe{J4}=+6cLp z)M`y_258m@o1@{ei=g813q$vOSs>ql2TxxH^SF$|P_N*rFysJH+vHpChc-_-PCxtd zQ{$B%{3O&yx6B7$e3FW{D@WPTi0gQwl*7q~}5n^`+no>G}VD9a{&wvwEu@7Ds~Wu ze&Y)K0F?%r3*fZjXoD5kq@~G31ETT?q6ET2?O?WBjq^hj8s~Wd1fA0~H-FOy z0AaP4f)G}4RGyI=Z6+GvxL!v%oky5S07Hem+$4$lr&CKZD5498g@w`%qbFsPrA6j@ z0F=-<g2QvqokD=qA5FeNKuT zbBoYzlsO5RE`hlG0@rKFG@K~tGCGBKBeqF`|?u*S@;38Ttu$TB*%a?9Lg_%60tql{;a3(CY=t| zOO%5zJ~1ZWdf!(sN-`0E8j@BKm0th=&mR4)r| 0.65 then + vm_data[vi] = c_mossy_cobble + elseif n_surface[ni] > 0.3 then + vm_data[vi] = c_cobble + elseif n_surface[ni] > -0.3 then + vm_data[vi] = c_stony_dirt + elseif n_surface[ni] < -0.8 then + vm_data[vi] = c_mossy_dirt + else + vm_data[vi] = c_dirt + end elseif y < height +1 and math.random() > 0.98 then trees[#trees +1] = vector.new(x, y, z) else diff --git a/mods/rgt_outback/textures/rgt_cobble_mossy.png b/mods/rgt_outback/textures/rgt_cobble_mossy.png new file mode 100644 index 0000000000000000000000000000000000000000..16c9c1fec01f8e6ead2425584e7bf4cad8597f5b GIT binary patch literal 556 zcmV+{0@MA8P)Px$=1D|BR5*=Il22>fKoG^B|5S_ZoyD;nHLFbM9on%t{!q5)oC09wrsp(=t2!_Pu#C`1JKUZXy6g1fVF2&1M52NfH23N+Kd6 zrBsq6>-BmRZC6Ei8`DZDC4|WH{B$~5Ydz2NeZOtnwr!0uNs>q@opYn>x1SHNqjF%a z&GVd*LI`dpqF-WPbhl@J=d5B#MDJ+}0Kom~f&L#BMnrG$x@nrauDL!`N@ZErd-y%c z0Vt&a)ODR@nRD*SU6%UD4Wrp?2Eg}y09TV2f9`IYo4YU!(==_{R%^}j=B;wh8DmD~ z%gbj*gyRb#gi`95RZ>c8EmPQ!F(%J*&-1LcV*u+mW({eYvT4?KK#2|?7aw>;kCL|0 zJLlYTxlEGecpC70J3c=@AJ=uw?EBS2+(euaS0=$^x))EgOVf17 zaRLYqzH_ec1`s!q)*1lUzg6D>jJ4LzIc5|^@pL2lSv%*rn~28!gHq~8_Y(nvgU>k< z5l1AY?DuW7SS$b-W0(;)kr1M)Dh5YURFPx$+(|@1R5*=Il1p#fKn#S3TvF7_ijp8L0`$;J{{O!!inMMNNAh~TuO8I8y%8S< z!^e_SKYhRM27DHj0NYv0SxONA^)KTPJBPRnIC?nYgX9zX#e9=qk}Q?7US zttzkYK>(=o&)4&ge!QMTNc*_Ex;xmm#g9{90Dzl%<%$@~VQQA6AMY$(a|}7=$`v^m z?~@Rm<4kB9;c0HgoH+XRb}^IF@@M0xPraA}K!BM{vvH|n&h?H`sVSAAl@QYB=kXfy zwN&p@x+G_A92^?-&X5&zHb{Q5f+dt$6Nu3xe$^Jy>922 zQZW;!+^Ktiy8sw^4I!mexN*09{^hV63_}w_5=VFU?P0c^GvStxD$~pJaJx5v?qJsN zUXODtj`n((OqKl_1%K5$y1mWEdfnB##m)h6%+;@PZ?_yh0RXmB$gzM3z}|4|wJ?dW z`}*a;!Xf0~lbKv&aZF~?k4?!nhPPx%EJ;K`R5*=IlFLpMQ4ogzI+wo9oFhX-NNbEyl!U~EIJ0x(1K`3}lm{?A02@~Z zTu9h3F~%`OF>)EZXZn6lxo9BP^2?t;mHLX_zIq&J00?8gydo_TCsY;;AkdJSl=A;` z5ok0m3P*KGT0*7c+jQkbS#Y@|sYTD@ghUuK00EMkR5}JQ+Ik%)6viyP2cSa=Hg=3L z565pDAo7gjglxiP!RBVxws-T49K5mIuDtA_wbs=v04U|>e_fnV_iNu61Hf7fV8v3N zk(ht()5rUJ&OvV89|=&~@nC>Fqw4Bwx;Z}H-)kKN$az#17H21aW=9=Sq#$>;SEVGe zK3QCzMGDJ;FJ?!97RGpx=vpxQD5PY-U4)A{L9N0bD# zEPP!;rxTa`bRLj`qtqBPdhooNPp>@ykeZSRO$#N3F>+WQTyr2^92jGM9DY#B%O~rr zEclK^ZO6m4Enm)(n3oGw6~#k}BVI1h)YQzUam;l|qQ7@Job+}!ws(7#oggKAIh+Iu z8OvGDc}7hO(K_6wt+n4iy$4Vh%q{o4uNXw=1W5^D4e1+~(~o-$(SM#bblc*cUsh0_ zgOKE-dm|-qd3sV_e90Cxh!8}?9(4_$eNUfFW{2;JN(jw^Sh$w|0ciITks_vSY5)KL M07*qoM6N<$g7vZyP5=M^ literal 0 HcmV?d00001 diff --git a/mods/rgt_player/init.lua b/mods/rgt_player/init.lua index 3fccc09..795622c 100644 --- a/mods/rgt_player/init.lua +++ b/mods/rgt_player/init.lua @@ -10,24 +10,274 @@ Player = { local inv = p:get_inventory() inv:set_size("hand", 1) - inv:set_stack("hand", 1, ItemStack("red_glazed_terracotta:hand")) e:set_hotbar_size(8) - p:hud_add { + e.textures = {_textures = {}} + setmetatable(e.textures, { + __newindex = function(tbl, key, value) + tbl._textures[idx] = value + p:set_properties { + textures = tbl._textures + } + end, + __index = e.textures._textures + }) + + e.hunger_bar = p:hud_add { type = "statbar", position = {x=0.5,y=1}, offset = {x=10,y=-96}, scale = {x=4,y=4}, alignment = {x=-1, y=-1}, size = {x=27,y=27}, - text = "rgt_pumpkin.png", + text = "rgt_pumpkin_alt.png", number = 20, item = 20, text2 = "rgt_pumpkin_empty.png" } + e.props = p:get_properties() + + e.eye_height = 1.6 + + + + e.health_display = minetest.add_entity(p:get_pos(), "display") + e.health_display:set_attach(p, nil, vector.new(0, 17, 0)) + e:update_hp(p:get_hp()) + return e end, + update_hp = function(m, hp) + if not (m.health_display and m.health_display:is_valid()) then + m.health_display = minetest.add_entity(m.object:get_pos(), "display") + m.health_display:set_attach(m.object, nil, vector.new(0, 17, 0)) + end + local tx = "[combine:90x90" + for i = math.floor(hp /2), math.floor(m.props.hp_max /2) -1 do + tx = tx..":"..(i *9)..",0=rgt_heart_empty.png" + end + for i = 0, math.floor(hp /2) -1 do + tx = tx..":"..(i *9)..",0=rgt_heart.png" + end + if hp %2 ~= 0 then + tx = tx..":"..((math.floor(hp /2)) *9)..",0=rgt_heart.png\\^[fill\\:5x9\\:4,0\\:#000\\^[makealpha\\:#000" + end + m.health_display:set_properties { + visual = "sprite", + textures = {tx}, + shaded = false + } + end, + tick = function(m, dtime) + local time = minetest.get_us_time() + local p = m.object + if not p or not p:is_player() then + return + end + local pitch = p:get_look_vertical() + local yaw = p:get_look_horizontal() + local dir = p:get_look_dir() + local pos = p:get_pos() + pos.y = pos.y +m.eye_height + + -- Animation + if not m.in_third_person then + local c = p:get_player_control() + local moving = c.up or c.down or c.left or c.right + + if moving then + m.moving = true + if c.aux1 and c.up then + if p:get_animation().y ~= 2 then p:set_animation({x=1, y=2}, 1.5, 0.2, true) end + p:set_physics_override{ + speed = 1.5 + } + else + if p:get_animation().y ~= 1 then p:set_animation({x=0, y=1}, 1.5, 0.2, true) end + p:set_physics_override{ + speed = 1 + } + end + else + m.moving = false + if p:get_animation().y ~= 0 then p:set_animation({x=0, y=0}) end + end + + if not m.rot then m.rot = 0 end + if moving then + local fac = 0 + if c.left then fac = 30 elseif c.right then fac = -30 end + m.rot = yaw +math.rad(fac) + elseif math.abs(yaw -m.rot) > math.rad(40) then + m.rot = m.rot +(yaw -(m.yaw or 0)) + end + m.rot = m.rot %math.rad(360) + m.yaw = yaw + + p:set_bone_override("Head", { + rotation = {vec = vector.new(math.min(math.max(pitch, math.rad(-60)), math.rad(60)),-(yaw -m.rot),0), interpolation = 0.1, absolute = true} + }) + + p:set_bone_override("root", { + rotation = {vec = vector.new(0,yaw -m.rot,0), interpolation = 0.1, absolute = true} + }) + m.ctl = c + else -- Third-person camera + local c = m.camera.ref + local me = m.focus and m.focus.ref or false + local ctl = p:get_player_control() +-- local lv = p:get_look_vertical() +-- local lh = p:get_look_horizontal() +-- local ldir = p:get_look_dir() + local ppos = c:get_pos() + if not ppos then + m:enter_third_person_view(m.third_person_focus, me ~= false) + return + end + local dir = vector.new(0,0,1):rotate(vector.new(math.rad(-45),yaw,0)) +-- if lv < 0 then +-- lv = 0 +-- p:set_look_vertical(0) +-- end + local radius = m.third_person_camera_radius or 10 + local t = (me and me:get_pos() or m.third_person_focus) +(-dir *radius) +-- local standing_on = minetest.get_node(pos:offset(0, -0.05, 0)) +-- local can_jump = minetest.registered_nodes[standing_on.name].walkable + local dist = math.min(radius *2, t:distance(ppos) ^2) + local vel = t:direction(ppos) *dist + local tvel = vector.zero() + local was_moving = m.ctl.up or m.ctl.down or m.ctl.left or m.ctl.right or m.ctl.jump or m.ctl.sneak + local moving = ctl.up or ctl.down or ctl.left or ctl.right +-- if e.jumping == 0 and can_jump and ctl.jump then +-- e.jumping = 10 +-- tvel = tvel +vector.new(0,5,0) +-- end + if ctl.jump then + tvel.y = 3 + elseif ctl.sneak then + tvel.y = -3 + end + if moving then + dir.y = 0 + v_normalize(dir) + local rot = 0 + if ctl.up then + if ctl.left then + rot = math.rad(45) + elseif ctl.right then + rot = math.rad(-45) + end + elseif ctl.down then + if ctl.left then + rot = math.rad(180 -45) + elseif ctl.right then + rot = math.rad(180 +45) + else + rot = math.rad(180) + end + elseif ctl.left then + rot = math.rad(90) + elseif ctl.right then + rot = math.rad(-90) + end + dir = dir:rotate(vector.new(0,rot,0)) + if me then me:set_velocity(tvel +(dir *5)) end + vel = vel -(dir *5) +-- if not was_moving then +-- me:set_animation({x=0, y=1}, 1.5, 0.2, true) +-- end +-- me:set_bone_override("root", { +-- rotation = { +-- vec = -dir:dir_to_rotation(), interpolation = 0.07, absolute = true +-- } +-- }) + elseif was_moving and me then +-- me:set_animation({x=0, y=0}) + me:set_velocity(tvel) + end +-- e.jumping = math.max(0, e.jumping -1) + --vel.y = 0 + c:set_velocity(-vel) + m.ctl = ctl + end + + -- Health regen + -- TODO: Move to combat mod + + if time -(m.last_time or 0) >= 10 *1000000 then + local hp = p:get_hp() + if hp < p:get_properties().hp_max then + p:set_hp(hp +1) + -- Make sure the health display is still loaded. + elseif not (m.health_display and m.health_display:is_valid()) then + m.health_display = minetest.add_entity(m.object:get_pos(), "display") + m.health_display:set_attach(m.object, nil, vector.new(0, 17, 0)) + end + + m.last_time = time + end + + -- Custom on-hover effects + + m.pointed_node = nil + + local pointed_found = false + for pointed in minetest.raycast(pos, pos +(dir *7)) do -- TODO: Automatic range + if pointed and pointed.type == "object" then + local e = pointed.ref:get_luaentity() + if e then + local names_match = m.pointed_obj and (m.pointed_obj._name or m.pointed_obj.name) == (e._name or e.name) + if m.pointed_obj and not names_match then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + m.hover_trigger_range = nil + end + if (m.pointed_obj and not names_match and e.on_hover) or not m.pointed_obj then + if e.on_hover then + m.hover_trigger_range = e:on_hover(m) or 8 + end + pointed_found = true + m.pointed_obj = e + break + elseif m.pointed_obj and names_match and e.on_hover then + pointed_found = true + break + end + end + elseif pointed and pointed.type == "node" and not m.pointed_node then + m.pointed_node = pointed + end + end + if not pointed_found and m.pointed_obj then + if m.pointed_obj.on_unhover then + m.pointed_obj:on_unhover(m) + end + m.pointed_obj = nil + m.hover_trigger_range = nil + end + + m.pos = pos + + -- Run on_wield callbacks + local w = p:get_wielded_item() + local wname = w:get_name() + local def = minetest.registered_items[wname] + if m.prev_wielditem ~= wname then + if m.prev_wielditem then + local def = minetest.registered_items[m.prev_wielditem] + local onunselect = def and def.on_unwield + if onunselect then onunselect(m) end + end + m.prev_wielditem = wname + local onselect = def and def.on_wield + if onselect then onselect(m, w) end + end + + local while_wielded = def and def.while_wielded + if while_wielded then while_wielded(m, w) end + end, set_hotbar_size = function(m, slots) local p = m.object p:hud_set_hotbar_itemcount(slots) @@ -68,3 +318,28 @@ minetest.hud_replace_builtin("health", { minetest.register_on_joinplayer(function(p) ns.players[p:get_player_name()] = Player(p) end) + +minetest.register_on_leaveplayer(function(p) + ns.players[p:get_player_name()] = nil +end) + +minetest.register_globalstep(function(time) + for _, x in pairs(rgt.players) do + x:tick(time) + end +end) + +minetest.register_on_player_hpchange(function(p, hp_change) + rgt.players[p:get_player_name()]:update_hp(p:get_hp() +hp_change) +end) + +minetest.register_chatcommand("hungerbar", { + func = function(name, args) + local m = rgt.players[name] + if args == "pumpkin_alt" then + m.object:hud_change(m.hunger_bar, "text", "rgt_"..args..".png") + else + m.object:hud_change(m.hunger_bar, "text", "rgt_pumpkin.png") + end + end +}) diff --git a/mods/rgt_player/models/rgt_character.gltf b/mods/rgt_player/models/rgt_character.gltf new file mode 100644 index 0000000..7b9364e --- /dev/null +++ b/mods/rgt_player/models/rgt_character.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.11.0 glTF exporter"},"scenes":[{"nodes":[9],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[0,15,0],"name":"Head"},{"translation":[0,15,0],"name":"Body"},{"translation":[3.125,13.75,0],"name":"RightArm"},{"translation":[-3.125,13.75,0],"name":"LeftArm"},{"translation":[0.06250000000000006,-6.875,-0.9375],"name":"RightLegFoot"},{"translation":[1.1875,7.5,0],"name":"RightLeg","children":[4]},{"translation":[-0.06250000000000006,-6.875,-0.9375],"name":"LeftLegFoot"},{"translation":[-1.1875,7.5,0],"name":"LeftLeg","children":[6]},{"name":"root","children":[0,1,2,3,5,7]},{"name":"root","mesh":0,"children":[8],"skin":0}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":4032,"byteLength":4032,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":8064,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":10752,"byteLength":2688,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":13440,"byteLength":5376,"target":34962,"byteStride":16},{"buffer":0,"byteOffset":18816,"byteLength":1008,"target":34963},{"buffer":0,"byteOffset":19824,"byteLength":576},{"buffer":0,"byteOffset":20400,"byteLength":20},{"buffer":0,"byteOffset":20420,"byteLength":80},{"buffer":0,"byteOffset":20500,"byteLength":36},{"buffer":0,"byteOffset":20536,"byteLength":108},{"buffer":0,"byteOffset":20644,"byteLength":20},{"buffer":0,"byteOffset":20664,"byteLength":80},{"buffer":0,"byteOffset":20744,"byteLength":36},{"buffer":0,"byteOffset":20780,"byteLength":144},{"buffer":0,"byteOffset":20924,"byteLength":36},{"buffer":0,"byteOffset":20960,"byteLength":144},{"buffer":0,"byteOffset":21104,"byteLength":36},{"buffer":0,"byteOffset":21140,"byteLength":144},{"buffer":0,"byteOffset":21284,"byteLength":36},{"buffer":0,"byteOffset":21320,"byteLength":144},{"buffer":0,"byteOffset":21464,"byteLength":36},{"buffer":0,"byteOffset":21500,"byteLength":144},{"buffer":0,"byteOffset":21644,"byteLength":36},{"buffer":0,"byteOffset":21680,"byteLength":144}],"buffers":[{"byteLength":21824,"uri":"data:application/octet-stream;base64,AAAgQAAAoEEAACBAAAAgQAAAoEEAACDAAAAgQAAAcEEAACBAAAAgQAAAcEEAACDAAAAgwAAAoEEAACDAAAAgwAAAoEEAACBAAAAgwAAAcEEAACDAAAAgwAAAcEEAACBAAAAgwAAAoEEAACDAAAAgQAAAoEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgwAAAcEEAACDAAAAgQAAAcEEAACDAAAAgwAAAoEEAACBAAAAgQAAAoEEAACBAAAAgwAAAcEEAACBAAAAgQAAAcEEAACBAAAAgQAAAoEEAACDAAAAgwAAAoEEAACDAAAAgQAAAcEEAACDAAAAgwAAAcEEAACDAAAA0QACAokEAADRAAAA0QACAokEAADTAAAA0QAAAa0EAADRAAAA0QAAAa0EAADTAAAA0wACAokEAADTAAAA0wACAokEAADRAAAA0wAAAa0EAADTAAAA0wAAAa0EAADRAAAA0wACAokEAADTAAAA0QACAokEAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0wAAAa0EAADTAAAA0QAAAa0EAADTAAAA0wACAokEAADRAAAA0QACAokEAADRAAAA0wAAAa0EAADRAAAA0QAAAa0EAADRAAAA0QACAokEAADTAAAA0wACAokEAADTAAAA0QAAAa0EAADTAAAA0wAAAa0EAADTAAAAgQAAAcEEAAHA/AAAgQAAAcEEAAHC/AAAgQAAA8EAAAHA/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgwAAA8EAAAHC/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgwAAA8EAAAHC/AAAgQAAA8EAAAHC/AAAgwAAAcEEAAHA/AAAgQAAAcEEAAHA/AAAgwAAA8EAAAHA/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AAAgwAAAcEEAAHC/AAAgQAAA8EAAAHC/AAAgwAAA8EAAAHC/AAAqQACAckEAAIw/AAAqQACAckEAAIy/AAAqQAAA60AAAIw/AAAqQAAA60AAAIy/AAAqwACAckEAAIy/AAAqwACAckEAAIw/AAAqwAAA60AAAIy/AAAqwAAA60AAAIw/AAAqwACAckEAAIy/AAAqQACAckEAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqwAAA60AAAIy/AAAqQAAA60AAAIy/AAAqwACAckEAAIw/AAAqQACAckEAAIw/AAAqwAAA60AAAIw/AAAqQAAA60AAAIw/AAAqQACAckEAAIy/AAAqwACAckEAAIy/AAAqQAAA60AAAIy/AAAqwAAA60AAAIy/AACMQAAAcEEAAHA/AACMQAAAcEEAAHC/AACMQAAA8EAAAHA/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHC/AAAgQAAAcEEAAHA/AAAgQAAA8EAAAHC/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AAAgQAAA8EAAAHC/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHC/AACMQAAA8EAAAHC/AAAgQAAA8EAAAHC/AACRQACAckEAAIw/AACRQACAckEAAIy/AACRQAAA60AAAIw/AACRQAAA60AAAIy/AAAWQACAckEAAIy/AAAWQACAckEAAIw/AAAWQAAA60AAAIy/AAAWQAAA60AAAIw/AAAWQACAckEAAIy/AACRQACAckEAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AAAWQAAA60AAAIy/AACRQAAA60AAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AACRQACAckEAAIy/AAAWQACAckEAAIy/AACRQAAA60AAAIy/AAAWQAAA60AAAIy/AAAgwAAAcEEAAHA/AAAgwAAAcEEAAHC/AAAgwAAA8EAAAHA/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHC/AACMwAAAcEEAAHA/AACMwAAA8EAAAHC/AACMwAAA8EAAAHA/AACMwAAAcEEAAHC/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AACMwAAA8EAAAHC/AAAgwAAA8EAAAHC/AACMwAAAcEEAAHA/AAAgwAAAcEEAAHA/AACMwAAA8EAAAHA/AAAgwAAA8EAAAHA/AAAgwAAAcEEAAHC/AACMwAAAcEEAAHC/AAAgwAAA8EAAAHC/AACMwAAA8EAAAHC/AAAWwACAckEAAIw/AAAWwACAckEAAIy/AAAWwAAA60AAAIw/AAAWwAAA60AAAIy/AACRwACAckEAAIy/AACRwACAckEAAIw/AACRwAAA60AAAIy/AACRwAAA60AAAIw/AACRwACAckEAAIy/AAAWwACAckEAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AACRwAAA60AAAIy/AAAWwAAA60AAAIy/AACRwACAckEAAIw/AAAWwACAckEAAIw/AACRwAAA60AAAIw/AAAWwAAA60AAAIw/AAAWwACAckEAAIy/AACRwACAckEAAIy/AAAWwAAA60AAAIy/AACRwAAA60AAAIy/AAAcQAAA8EAAAHA/AAAcQAAA8EAAAHC/AAAcQAAAAAAAAHA/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHC/AACAvQAA8EAAAHA/AACAvQAAAAAAAHC/AACAvQAAAAAAAHA/AACAvQAA8EAAAHC/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAA8EAAAHA/AAAcQAAA8EAAAHA/AACAvQAAAAAAAHA/AAAcQAAAAAAAAHA/AAAcQAAA8EAAAHC/AACAvQAA8EAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAAHC/AAAmQAAA9UAAAIw/AAAmQAAA9UAAAIy/AAAmQAAAIL4AAIw/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIy/AABgvgAA9UAAAIw/AABgvgAAIL4AAIy/AABgvgAAIL4AAIw/AABgvgAA9UAAAIy/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AABgvgAAIL4AAIy/AAAmQAAAIL4AAIy/AABgvgAA9UAAAIw/AAAmQAAA9UAAAIw/AABgvgAAIL4AAIw/AAAmQAAAIL4AAIw/AAAmQAAA9UAAAIy/AABgvgAA9UAAAIy/AAAmQAAAIL4AAIy/AABgvgAAIL4AAIy/AAAcQAAAoD8AAHC/AAAcQAAAoD8AADTAAAAcQAAAAAAAAHC/AAAcQAAAAAAAADTAAACAvQAAoD8AADTAAACAvQAAoD8AAHC/AACAvQAAAAAAADTAAACAvQAAAAAAAHC/AACAvQAAoD8AADTAAAAcQAAAoD8AADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AACAvQAAAAAAADTAAAAcQAAAAAAAADTAAACAvQAAoD8AAHC/AAAcQAAAoD8AAHC/AACAvQAAAAAAAHC/AAAcQAAAAAAAAHC/AAAcQAAAoD8AADTAAACAvQAAoD8AADTAAAAcQAAAAAAAADTAAACAvQAAAAAAADTAAACAPQAA8EAAAHA/AACAPQAA8EAAAHC/AACAPQAAAAAAAHA/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHC/AAAcwAAA8EAAAHA/AAAcwAAAAAAAAHC/AAAcwAAAAAAAAHA/AAAcwAAA8EAAAHC/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAA8EAAAHA/AACAPQAA8EAAAHA/AAAcwAAAAAAAAHA/AACAPQAAAAAAAHA/AACAPQAA8EAAAHC/AAAcwAAA8EAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAAHC/AABgPgAA9UAAAIw/AABgPgAA9UAAAIy/AABgPgAAIL4AAIw/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIy/AAAmwAAA9UAAAIw/AAAmwAAAIL4AAIy/AAAmwAAAIL4AAIw/AAAmwAAA9UAAAIy/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AAAmwAAAIL4AAIy/AABgPgAAIL4AAIy/AAAmwAAA9UAAAIw/AABgPgAA9UAAAIw/AAAmwAAAIL4AAIw/AABgPgAAIL4AAIw/AABgPgAA9UAAAIy/AAAmwAAA9UAAAIy/AABgPgAAIL4AAIy/AAAmwAAAIL4AAIy/AACAPQAAoD8AAHC/AACAPQAAoD8AADTAAACAPQAAAAAAAHC/AACAPQAAAAAAADTAAAAcwAAAoD8AADTAAAAcwAAAoD8AAHC/AAAcwAAAAAAAADTAAAAcwAAAAAAAAHC/AAAcwAAAoD8AADTAAACAPQAAoD8AADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AAAcwAAAAAAAADTAAACAPQAAAAAAADTAAAAcwAAAoD8AAHC/AACAPQAAoD8AAHC/AAAcwAAAAAAAAHC/AACAPQAAAAAAAHC/AACAPQAAoD8AADTAAAAcwAAAoD8AADTAAACAPQAAAAAAADTAAAAcwAAAAAAAADTAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAOQBAAD4AgP89AEAAPgAAgDkAwH8+AID/PQDAfz4AIIA+AEAAPgDgvz4AQAA+ACCAPgDAfz4A4L8+AMB/PgDAfz4AgP89AEAAPgCA/z0AwH8+AACAOQBAAD4AAIA5AOC/PgAAgDkAIIA+AACAOQDgvz4AgP89ACCAPgCA/z0AIMA+AEAAPgDg/z4AQAA+ACDAPgDAfz4A4P8+AMB/PgBAAD4AQAA+AMB/PgBAAD4AQAA+AMB/PgDAfz4AwH8+ABAAPwBAAD4A8B8/AEAAPgAQAD8AwH8+APAfPwDAfz4AEEA/AEAAPgDwXz8AQAA+ABBAPwDAfz4A8F8/AMB/PgDwPz8AgP89ABAgPwCA/z0A8D8/AACAOQAQID8AAIA5APBfPwAAgDkAEEA/AACAOQDwXz8AgP89ABBAPwCA/z0AEGA/AEAAPgDwfz8AQAA+ABBgPwDAfz4A8H8/AMB/PgAQID8AQAA+APA/PwBAAD4AECA/AMB/PgDwPz8AwH8+AACIPgAAoD4AAKA+AACgPgAAiD4AAAA/AACgPgAAAD8AAOA+AACgPgAA+D4AAKA+AADgPgAAAD8AAPg+AAAAPwAA4D4AAKA+AACgPgAAoD4AAOA+AACIPgAAoD4AAIg+AAAQPwAAiD4AAOA+AACIPgAAED8AAKA+AADgPgAAoD4AAAA/AACgPgAAID8AAKA+AAAAPwAAAD8AACA/AAAAPwAAoD4AAKA+AADgPgAAoD4AAKA+AAAAPwAA4D4AAAA/AACIPgAAED8AAKA+AAAQPwAAiD4AAEA/AACgPgAAQD8AAOA+AAAQPwAA+D4AABA/AADgPgAAQD8AAPg+AABAPwAA4D4AABA/AACgPgAAED8AAOA+AAAEPwAAoD4AAAQ/AAAQPwAABD8AAOA+AAAEPwAAED8AABA/AADgPgAAED8AAAA/AAAQPwAAID8AABA/AAAAPwAAQD8AACA/AABAPwAAoD4AABA/AADgPgAAED8AAKA+AABAPwAA4D4AAEA/ABAkPwAgoD4A8C8/ACCgPgAQJD8A4P8+APAvPwDg/z4AEDw/ACCgPgDwRz8AIKA+ABA8PwDg/z4A8Ec/AOD/PgDwOz8A4J8+ABAwPwDgnz4A8Ds/ACCIPgAQMD8AIIg+APBHPwAgiD4AEDw/ACCIPgDwRz8A4J8+ABA8PwDgnz4AEEg/ACCgPgDwUz8AIKA+ABBIPwDg/z4A8FM/AOD/PgAQMD8AIKA+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AAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAUAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAHAAAAAAAAAAcAAAAAAAAABwAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAGAAaABkAGgAbABkAHAAeAB0AHgAfAB0AIAAiACEAIgAjACEAJAAmACUAJgAnACUAKAAqACkAKgArACkALAAuAC0ALgAvAC0AMAAyADEAMgAzADEANAA2ADUANgA3ADUAOAA6ADkAOgA7ADkAPAA+AD0APgA/AD0AQABCAEEAQgBDAEEARABGAEUARgBHAEUASABKAEkASgBLAEkATABOAE0ATgBPAE0AUABSAFEAUgBTAFEAVABWAFUAVgBXAFUAWABaAFkAWgBbAFkAXABeAF0AXgBfAF0AYABiAGEAYgBjAGEAZABmAGUAZgBnAGUAaABqAGkAagBrAGkAbABuAG0AbgBvAG0AcAByAHEAcgBzAHEAdAB2AHUAdgB3AHUAeAB6AHkAegB7AHkAfAB+AH0AfgB/AH0AgACCAIEAggCDAIEAhACGAIUAhgCHAIUAiACKAIkAigCLAIkAjACOAI0AjgCPAI0AkACSAJEAkgCTAJEAlACWAJUAlgCXAJUAmACaAJkAmgCbAJkAnACeAJ0AngCfAJ0AoACiAKEAogCjAKEApACmAKUApgCnAKUAqACqAKkAqgCrAKkArACuAK0ArgCvAK0AsACyALEAsgCzALEAtAC2ALUAtgC3ALUAuAC6ALkAugC7ALkAvAC+AL0AvgC/AL0AwADCAMEAwgDDAMEAxADGAMUAxgDHAMUAyADKAMkAygDLAMkAzADOAM0AzgDPAM0A0ADSANEA0gDTANEA1ADWANUA1gDXANUA2ADaANkA2gDbANkA3ADeAN0A3gDfAN0A4ADiAOEA4gDjAOEA5ADmAOUA5gDnAOUA6ADqAOkA6gDrAOkA7ADuAO0A7gDvAO0A8ADyAPEA8gDzAPEA9AD2APUA9gD3APUA+AD6APkA+gD7APkA/AD+AP0A/gD/AP0AAAECAQEBAgEDAQEBBAEGAQUBBgEHAQUBCAEKAQkBCgELAQkBDAEOAQ0BDgEPAQ0BEAESAREBEgETAREBFAEWARUBFgEXARUBGAEaARkBGgEbARkBHAEeAR0BHgEfAR0BIAEiASEBIgEjASEBJAEmASUBJgEnASUBKAEqASkBKgErASkBLAEuAS0BLgEvAS0BMAEyATEBMgEzATEBNAE2ATUBNgE3ATUBOAE6ATkBOgE7ATkBPAE+AT0BPgE/AT0BQAFCAUEBQgFDAUEBRAFGAUUBRgFHAUUBSAFKAUkBSgFLAUkBTAFOAU0BTgFPAU0BAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAHDBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAABwwQAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAABIwAAAXMEAAAAAAACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAASEAAAFzBAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAJi/AADwwAAAAAAAAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAACgvwAAIL8AAHA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAmD8AAPDAAAAAAAAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAAAAAKA/AAAgvwAAcD8AAIA/AAAAAAAAAD8AAIA/AADAPwAAAEAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAIA+AAAAPwAAQD8AAIA/AACgPwAAwD8AAOA/AAAAQAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAACC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/AACAPwAAwD8AAABAAAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/wsVHvgAAAAAAAAAAvhR7PwAAAAAAAAAAAAAAAAAAgD/CxUc+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7L4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsPgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/7mNzPgAAAAAAAAAA4Kl4PwAAAAAAAAAAAAAAAAAAgD/CxUe+AAAAAAAAAAC+FHs/AAAAAAAAAAAAAAAAAACAP1Bq7D4AAAAAAAAAACQTYz8AAAAAAAAAAAAAAAAAAIA/UGrsvgAAAAAAAAAAJBNjPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZPgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pm+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2D4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYvgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD+oqAU+AAAAAAAAAABVz30/AAAAAAAAAAAAAAAAAACAP7Z+sr0AAAAAAAAAAJ4Gfz8AAAAAAAAAAAAAAAAAAIA/PMYbPgAAAAAAAAAAQwV9PwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/HPaZvgAAAAAAAAAAyyZ0PwAAAAAAAAAAAAAAAAAAgD8c9pk+AAAAAAAAAADLJnQ/AAAAAAAAAAAAAAAAAACAP2xh2L4AAAAAAAAAAMoDaD8AAAAAAAAAAAAAAAAAAIA/bGHYPgAAAAAAAAAAygNoPwAAAAAAAAAAAAAAAAAAgD8AAAAAAACAPgAAAD8AAEA/AACAPwAAoD8AAMA/AADgPwAAAEAAAAAAAAAAAAAAAAAAAIA/qKgFPgAAAAAAAAAAVc99PwAAAAAAAAAAAAAAAAAAgD+2frK9AAAAAAAAAACeBn8/AAAAAAAAAAAAAAAAAACAPzzGGz4AAAAAAAAAAEMFfT8AAAAAAAAAAAAAAAAAAIA/tn6yvQAAAAAAAAAAngZ/PwAAAAAAAAAAAAAAAAAAgD8="}],"accessors":[{"bufferView":0,"componentType":5126,"count":336,"max":[4.53125,20.3125,2.8125],"min":[-4.53125,-0.15625,-2.8125],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":336,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":336,"max":[0.999755859375,1],"min":[0.000244140625,0.000244140625],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":336,"max":[0,8,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":4,"componentType":5126,"count":336,"max":[0,1,0,0],"min":[0,1,0,0],"type":"VEC4"},{"bufferView":5,"componentType":5123,"count":504,"max":[335],"min":[0],"type":"SCALAR"},{"bufferView":6,"componentType":5126,"count":9,"max":[1,0,0,0,0,1,0,0,0,0,1,0,3.125,0,0.9375,1],"min":[1,0,0,0,0,1,0,0,0,0,1,0,-3.125,-15,0,1],"type":"MAT4"},{"bufferView":7,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":8,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":9,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":10,"componentType":5126,"count":9,"max":[0,0,0],"min":[0,-1.25,0],"type":"VEC3"},{"bufferView":11,"componentType":5126,"count":5,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":12,"componentType":5126,"count":5,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":13,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":14,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":15,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":16,"componentType":5126,"count":9,"max":[0.4617486000061035,0,0,1],"min":[-0.4617486000061035,0,0,0.8870108127593994],"type":"VEC4"},{"bufferView":17,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":18,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":19,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":20,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"},{"bufferView":21,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":22,"componentType":5126,"count":9,"max":[0.4226182699203491,0,0,1],"min":[-0.4226182699203491,0,0,0.9063078165054321],"type":"VEC4"},{"bufferView":23,"componentType":5126,"count":9,"max":[2],"min":[0],"type":"SCALAR"},{"bufferView":24,"componentType":5126,"count":9,"max":[0.15212339162826538,0,0,1],"min":[-0.08715574443340302,0,0,0.9883615374565125],"type":"VEC4"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"artifact_key"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2,"JOINTS_0":3,"WEIGHTS_0":4},"indices":5,"material":0}]}],"skins":[{"inverseBindMatrices":6,"joints":[8,0,1,2,3,5,4,7,6],"skeleton":8}],"animations":[{"name":"animation","samplers":[{"input":7,"output":8,"interpolation":"LINEAR"},{"input":9,"output":10,"interpolation":"LINEAR"},{"input":11,"output":12,"interpolation":"LINEAR"},{"input":13,"output":14,"interpolation":"LINEAR"},{"input":15,"output":16,"interpolation":"LINEAR"},{"input":17,"output":18,"interpolation":"LINEAR"},{"input":19,"output":20,"interpolation":"LINEAR"},{"input":21,"output":22,"interpolation":"LINEAR"},{"input":23,"output":24,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":8,"path":"translation"}},{"sampler":2,"target":{"node":1,"path":"rotation"}},{"sampler":3,"target":{"node":2,"path":"rotation"}},{"sampler":4,"target":{"node":3,"path":"rotation"}},{"sampler":5,"target":{"node":5,"path":"rotation"}},{"sampler":6,"target":{"node":4,"path":"rotation"}},{"sampler":7,"target":{"node":7,"path":"rotation"}},{"sampler":8,"target":{"node":6,"path":"rotation"}}]}]} \ No newline at end of file diff --git a/mods/rgt_player/models/rgt_hand.gltf b/mods/rgt_player/models/rgt_hand.gltf new file mode 100644 index 0000000..b3f1685 --- /dev/null +++ b/mods/rgt_player/models/rgt_hand.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.11.0 glTF exporter"},"scenes":[{"nodes":[3],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[-7.341186189470692,-10.221666105894709,3.75],"name":"Right Arm","mesh":0},{"translation":[-7.341186189470692,-10.221666105894709,3.75],"name":"Right Arm Layer","mesh":1},{"rotation":[0.9829629131445342,0.12940952255126037,-0.017037086855465768,0.12940952255126018],"name":"RightArm","children":[0,1]},{"children":[2]}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":288,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":576,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":768,"byteLength":72,"target":34963},{"buffer":0,"byteOffset":840,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1128,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1416,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":1608,"byteLength":72,"target":34963}],"buffers":[{"byteLength":1680,"uri":"data:application/octet-stream;base64,AACMQAAAcEEAAHA/AACMQAAAcEEAAHC/AACMQAAA8EAAAHA/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHC/AAAgQAAAcEEAAHA/AAAgQAAA8EAAAHC/AAAgQAAA8EAAAHA/AAAgQAAAcEEAAHC/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AAAgQAAA8EAAAHC/AACMQAAA8EAAAHC/AAAgQAAAcEEAAHA/AACMQAAAcEEAAHA/AAAgQAAA8EAAAHA/AACMQAAA8EAAAHA/AACMQAAAcEEAAHC/AAAgQAAAcEEAAHC/AACMQAAA8EAAAHC/AAAgQAAA8EAAAHC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/ABAkPwAgoD4A8C8/ACCgPgAQJD8A4P8+APAvPwDg/z4AEDw/ACCgPgDwRz8AIKA+ABA8PwDg/z4A8Ec/AOD/PgDwOz8A4J8+ABAwPwDgnz4A8Ds/ACCIPgAQMD8AIIg+APBHPwAgiD4AEDw/ACCIPgDwRz8A4J8+ABA8PwDgnz4AEEg/ACCgPgDwUz8AIKA+ABBIPwDg/z4A8FM/AOD/PgAQMD8AIKA+APA7PwAgoD4AEDA/AOD/PgDwOz8A4P8+AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAAACRQACAckEAAIw/AACRQACAckEAAIy/AACRQAAA60AAAIw/AACRQAAA60AAAIy/AAAWQACAckEAAIy/AAAWQACAckEAAIw/AAAWQAAA60AAAIy/AAAWQAAA60AAAIw/AAAWQACAckEAAIy/AACRQACAckEAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AAAWQAAA60AAAIy/AACRQAAA60AAAIy/AAAWQACAckEAAIw/AACRQACAckEAAIw/AAAWQAAA60AAAIw/AACRQAAA60AAAIw/AACRQACAckEAAIy/AAAWQACAckEAAIy/AACRQAAA60AAAIy/AAAWQAAA60AAAIy/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAkPwAAED8AADA/AAAQPwAAJD8AAEA/AAAwPwAAQD8AAEA/AAAQPwAATD8AABA/AABAPwAAQD8AAEw/AABAPwAAPD8AABA/AAAwPwAAED8AADw/AAAEPwAAMD8AAAQ/AABIPwAABD8AADw/AAAEPwAASD8AABA/AAA8PwAAED8AAEw/AAAQPwAAWD8AABA/AABMPwAAQD8AAFg/AABAPwAAMD8AABA/AAA8PwAAED8AADA/AABAPwAAPD8AAEA/AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUA"}],"accessors":[{"bufferView":0,"componentType":5126,"count":24,"max":[4.375,15,0.9375],"min":[2.5,7.5,-0.9375],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":24,"max":[0.827880859375,0.499755859375],"min":[0.640869140625,0.265869140625],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"},{"bufferView":4,"componentType":5126,"count":24,"max":[4.53125,15.15625,1.09375],"min":[2.34375,7.34375,-1.09375],"type":"VEC3"},{"bufferView":5,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":24,"max":[0.84375,0.75],"min":[0.640625,0.515625],"type":"VEC2"},{"bufferView":7,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"artifact_key.png"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":0}]}]} \ No newline at end of file diff --git a/mods/rgt_player/textures/crosshair.png b/mods/rgt_player/textures/crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc0468abb0f581949b49800df7cdd3841a03c50 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|^gUf1Lo9le z6Am!{b7r(N_4%RF$+(y;fYIPlmzo<8q}b_|GQVftlVGBH=_CV#J+}mlUDK5&pjHM? LS3j3^P6D4FNaeO~~`&1_Wj2Jl_v2Q&JKV5@uwms{N2(*4;mqGtcYo%l;mq2|Ns; WH;vyPIbYJt00f?{elF{r5}E*=)<#GG diff --git a/mods/rgt_player/textures/rgt_pumpkin_alt.png b/mods/rgt_player/textures/rgt_pumpkin_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c48ee1fbe10e95734815bb2bc3b4806d6a7bc1 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|7JIrlhGw2j1XiGW6mfiVD-E5g5tBy1~JFv_*(O*(kZ2Io! feeTRSjsx8LuUjXuw+DX&I+wxI)z4*}Q$iB}xt&=H literal 0 HcmV?d00001 diff --git a/mods/rgt_player/textures/rgt_pumpkin_alt_empty.png b/mods/rgt_player/textures/rgt_pumpkin_alt_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..d11ee261cc722092f051059c154136ac83b1809c GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|+C5zyLo_D# z_8W2?HsEoc@5OW|Zd3J@7u7%Z?DIL+v(KR|Va~zWR};jzDrX;Y|L^%@LeMLQbCyNt z4)v~o7$3lJW)1U|s7}L8>$F#K9oUwuly+_J_c_l!vwNeoSDm`?_V>Ax^`Gx;*5N*0 z$Y5~Zm_c9egGNawe|w-|jhAN8UP-4H`^CL9nLe;ZOfXxhb>+feppzIpUHx3vIVCg! E08fBX%K!iX literal 0 HcmV?d00001 diff --git a/mods/rgt_realms/init.lua b/mods/rgt_realms/init.lua index 2b34b2a..19acf43 100644 --- a/mods/rgt_realms/init.lua +++ b/mods/rgt_realms/init.lua @@ -1,10 +1,18 @@ rgt_realms = { realms = { void = { + name = "void", + label = "Void", sky = { type = "plain", base_color = "#000" } + }, + surface = { + name = "surface", + label = "Surface", + max = vector.new(-31000, -5000, -31000), + min = vector.new(31000, 1000, 31000) } } } diff --git a/mods/rgt_towns/rgt_towns_editor/init.lua b/mods/rgt_towns/rgt_towns_editor/init.lua index 645910f..73bce32 100644 --- a/mods/rgt_towns/rgt_towns_editor/init.lua +++ b/mods/rgt_towns/rgt_towns_editor/init.lua @@ -94,7 +94,7 @@ end function ns.get_workspace(name) local ws = db:get("workspace:"..name) - if ws then return mietest.deserialize(ws) end + if ws then return minetest.deserialize(ws) end end function ns.place_workspace(name, pos) @@ -127,12 +127,68 @@ function ns.clear_workspace(ws) vm:write_to_map() end -function ns.load_plot(ws, plot) +function ns.load_plot(ws, plot, actor) + if vector.distance(ws.size, rgt_towns.plots[plot].size) > 0.1 then + tell(actor, "Workspace size and plot size do not match!") + return + end minetest.place_schematic(ws.pos, rgt_towns.plots[plot].schematic, nil, nil, true, {}) end -function ns.set_workspace_size(ws, x, y, z) - +local vm_data = {} +function ns.init_plot(ws, lvl) + if lvl and lvl -1 > 0 and lvl < ws.size.y *15 then + lvl = lvl -1 + local min = ws.pos + local max = vector.add(ws.pos, vector.multiply(ws.size, 15)) + local vm = minetest.get_voxel_manip(min, max) + local area = VoxelArea(vm:get_emerged_area()) + + local c_grass = minetest.get_content_id("dirt_grass") + local c_path = minetest.get_content_id("path_grass") + local c_dirt = minetest.get_content_id("dirt") + + vm:get_data(vm_data) + + for x = min.x, max.x -1 do + for z = min.z, max.z -1 do + for y = 0, lvl do + vm_data[area:index(x, ws.pos.y +y, z)] = y == lvl and (( + x +1 == max.x or x == min.x or + z +1 == max.z or z == min.z or + x +2 == max.x and z +2 == max.z or + x +2 == max.x and z -1 == min.z or + x -1 == min.x and z +2 == max.z or + x -1 == min.x and z -1 == min.z + ) and c_path or c_grass) or c_dirt + end + end + end + vm:set_data(vm_data) + vm:write_to_map() + end +end + +function ns.set_workspace_size(name, x, y, z) + local ws = ns.get_workspace(name) + ws.size.x = x + ws.size.y = y + ws.size.z = z + db:set_string("workspace:"..name, minetest.serialize(ws)) + for k, x in pairs(ns.workspaces[name]) do + if k ~= "marker" then + if x.remove then + + elseif type(x) == "table" then + for _, y in pairs(x) do + minetest.delete_particlespawner(y) + end + else + minetest.delete_particlespawner(y) + end + end + end + ns.workspaces[name].outline = rgt_towns.add_cube(vector.offset(ws.pos, -0.5,-0.5,-0.5), vector.add(ws.pos, vector.multiply(ws.size, 15)):offset(-0.5,-0.5,-0.5)) end function ns.export_workspace(ws, label) @@ -144,8 +200,10 @@ end minetest.register_chatcommand("new_plot", { func = function(name, args) local ws = ns.place_workspace(name, minetest.get_player_by_name(name):get_pos()) - if args == "clear" then + if args == "clear" then ns.clear_workspace(ws) + else + ns.init_plot(ws, tonumber(args)) end end }) @@ -159,7 +217,7 @@ minetest.register_chatcommand("load_plot", { return end if args and args ~= "" then - ns.load_plot(ws, args) + ns.load_plot(ws, args, name) end end }) @@ -167,10 +225,14 @@ minetest.register_chatcommand("load_plot", { minetest.register_chatcommand("set_plot_size", { func = function(name, args) if args and args ~= "" then - local x, y, z = args:match "(%d+)%s+(%d+)%s+(%d+)" + local x, y, z, regen, lvl = args:match "^(%d+)%s+(%d+)%s+(%d+)%s+(regenerate)%s+(%d+)" + if not x then return end if not y then y = x end if not z then z = x end - ns.set_workspace_size(ns.get_workspace(name), x, y, z) + ns.set_workspace_size(name, x, y, z) + if regen and lvl then + ns.init_plot(ns.get_workspace(name), tonumber(lvl)) + end tell(name, "Size set to "..x.."x"..y.."x"..z..".") end end diff --git a/mods/rgt_towns/rgt_towns_main/init.lua b/mods/rgt_towns/rgt_towns_main/init.lua index 9401931..7bc88fe 100644 --- a/mods/rgt_towns/rgt_towns_main/init.lua +++ b/mods/rgt_towns/rgt_towns_main/init.lua @@ -34,6 +34,7 @@ rgt_towns.register_plot{ label = "Empty Plot", description = "Hello world", schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/empty_plot.mts", + size = vector.new(1, 2, 1), recipe = { "", "", "", "dirt_grass 1", "dirt_grass 1", "dirt_grass 1", @@ -48,6 +49,7 @@ rgt_towns.register_plot{ label = "House", description = "Hello world", schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/house.mts", + size = vector.new(1, 2, 1), recipe = { "oak_planks 1", "oak_planks 1", "oak_planks 1", "oak_log 1", "glass 1", "oak_log 1", diff --git a/mods/rgt_world/init.lua b/mods/rgt_world/init.lua index f67ee76..6215b3b 100644 --- a/mods/rgt_world/init.lua +++ b/mods/rgt_world/init.lua @@ -30,6 +30,11 @@ rgt.register_node("dirt", { groups = {dig_immediate = 3} }) +rgt.register_node("dirt_mossy", { + tiles = {{name = rep("rgt_dirt.png", 4).."^rgt_path_grass.png", scale = 4, align_style = "world"}, "rgt_dirt.png"}, + groups = {dig_immediate = 3} +}) + rgt.register_node("dirt_grass", { tiles = {"rgt_grass_top.png", "rgt_dirt.png", "rgt_dirt.png^rgt_grass_side.png"}, -- tiles = {"[fill:16x16:0,0:#3e7e7b^[fill:14x14:1,1:#326764"}, @@ -55,7 +60,14 @@ rgt.register_node("path_grass", { rgt.register_node("oak_log", { - tiles = {"rgt_oak_log_top.png", "rgt_oak_log_side.png"}, + tiles = {"rgt_oak_log_top.png", "rgt_oak_log_top.png", "rgt_oak_log_side.png"}, + groups = {dig_immediate = 3} +}) + +rgt.register_node("oak_leaves", { + drawtype = "allfaces", + tiles = {"rgt_oak_leaves.png"}, + use_texture_alpha = "clip", groups = {dig_immediate = 3} }) @@ -132,8 +144,8 @@ rgt.register_node("water", { }) rgt.register_node("water_flowing", { - tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}}, - special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = false}}, + tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, groups = {dig_immediate = 3}, drawtype = "flowingliquid", use_texture_alpha = "blend", @@ -150,8 +162,48 @@ rgt.register_node("water_flowing", { liquid_range = 5, }) +rgt.register_node("river_water", { + tiles = {"[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33"}, + groups = {dig_immediate = 3}, + drawtype = "liquid", + use_texture_alpha = "blend", + paramtype = "light", + walkable = false, + climbable = true, + post_effect_color = "#2d5a7c55", + + liquidtype = "source", + -- Minetest pro tip: Do not try to use aliases for these. + liquid_alternative_source = "red_glazed_terracotta:river_water", + liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing", + liquid_viscosity = 1, + liquid_range = 2, + liquid_renewable = false +}) + +rgt.register_node("river_water_flowing", { + tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + special_tiles = {{name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}, {name = "[fill:16x16:0,0:#2d5a7c77^[fill:14x14:1,1:#2d5a7c33", backface_culling = true}}, + groups = {dig_immediate = 3}, + drawtype = "flowingliquid", + use_texture_alpha = "blend", + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + climbable = true, + post_effect_color = "#2d5a7c55", + + liquidtype = "flowing", + liquid_alternative_source = "red_glazed_terracotta:river_water", + liquid_alternative_flowing = "red_glazed_terracotta:river_water_flowing", + liquid_viscosity = 1, + liquid_range = 2, + liquid_renewable = false +}) + minetest.register_alias("mapgen_stone", "red_glazed_terracotta:stone") minetest.register_alias("mapgen_water_source", "red_glazed_terracotta:water") +minetest.register_alias("mapgen_river_water_source", "red_glazed_terracotta:river_water") -- Remove @@ -160,6 +212,16 @@ minetest.register_alias("adrift:dirt", "red_glazed_terracotta:dirt") minetest.register_alias("adrift:dirt_grass", "red_glazed_terracotta:dirt_grass") minetest.register_alias("adrift:water", "red_glazed_terracotta:water") +--minetest.register_decoration { +-- deco_type = "schematic", +-- place_on = "dirt_grass", +-- y_min = 1, +-- fill_ratio = 0.01, +-- schematic = minetest.get_modpath(minetest.get_current_modname()).."/schems/tree.mts", +-- flags = "place_center_x, place_center_z", +-- place_offset_y = 1, +--} + minetest.register_biome{ name = "!", diff --git a/mods/rgt_world/schems/tree.mts b/mods/rgt_world/schems/tree.mts new file mode 100644 index 0000000000000000000000000000000000000000..b6da9cf637559e62706676ed776dab7ac0953b15 GIT binary patch literal 138 zcmeYb3HD`RVPFNpdJte>W?)XtEMib7N==DR&q=HTQYEQHMTyDzB_)Yg`H9)_IjM1fE5*$ zX~0G7Ca$iSlXW@@B*x3`%v*oW^DH6&`1amU(*$5y768^-5fKsR+_Eg=I934meW&D{ zODU>V^Er-V+cvgrnkMI*bAJ|*5W@TYHpb9JB_iWE z0{Ck{L}*Mzx~@wprIe^w&bf76ONJOD0OuTll+wDcF-B``DX1@(3xM102B2-*ec#XX z?E79-bIx7Y(Vj6T#yAW^#c%}$jj1YtqEFM5QUai=-<-u#!YSVPOw&X})GM+t;QxkZ z*3v~phGD4h_kVlNnc#}CrfF2w7(@3(SJjH9iIqE|x5BjO6zkXP#Rau(8)MwI&3n(T z1!d0pI1YY(mjmaV_r6S{$Q6~uB2r(kR{+B>6dO&`gb?WD@pzo)X^aUW^nDNDYo2HJ vBWbcP=*lSGfM2Zt^6_evW$}Nu7m**DCEK;WPfrv8015yANkvXXu0mjfIiAQj delta 346 zcmV-g0j2)91A+sPF@HQsL_t(Ijb&21t-~-3WRwT15mgxoEEVYjPmwXaK-TpDLnfN;ItZvL6)x%dA0d`c-0&CD@IGefRgYZzr9aZ1VAE)S|iBT;jR07*qoM6N<$f*p3CoB#j- diff --git a/mods/rgt_world/textures/rgt_dirt_mossy.png b/mods/rgt_world/textures/rgt_dirt_mossy.png new file mode 100644 index 0000000000000000000000000000000000000000..b20d95bd3794da9bb9c7d666a27eedffb755bb9d GIT binary patch literal 644 zcmV-~0(Px%K1oDDR5*=Ql1*zQRTzcOd%x-V;zuZK)bdhyYNOlog^< z0$?*LGGdR}?|}i;HpCv^{uO;EZ9~qY8p|#-QoV4#lg(2+yN}gacn||%xf<3Vq^h(r z>GC)OaQaL1ozzG9>@v8LxTmL%H53398G|PP#-z3(0Nmr^z(&UWHUQYPq7xaVwuiHKm$9P zJ&Z}FZD`i?)tJtwjy>l0ak(1WhTemU5gC=*20MDW8U|1L#b=XeW3&x@zD}!BPu}u2 zQc+UR^m1lDdYxQJUp#I{f2VCEPXFKG^ezw*0N;s3VUO#tTxL?+&|Z$MBCVmu6Px$Z%IT!R5*=wQ$dP@KoG2!D1jh}LvoRT5PXC`@B^NFU`~Euk9*rkgn%FmOBPKK zL6oKUFx#<}>}h6tx~8kTdMHc{yFQ~V8j^ii5jIB~i?V>nmLNF*uulx{PQW-YR{FyA z8Dnd~T}1$Z{zh0IY)+gT9tXzQ0{1K6Z3zSbQswilrYH-zs|el}v#Jw#&c@Lc0iY}z z(%?8Z9AyFDub6?OEMNc=1JNx^URCWX!uLl_nz6G4yFO!|*s7OvP5*&~F~ZdR?JN@k zhpAoVPM`Hka;Y1$v~$T&pI2g^o`bTeXYTAy!2LRb06Zl*(s?}xLeceX@;FQmNrN{> zMwl9Q;@q%yLMTcTe|lTZ+fLfGoEcT^@p52Z<&;HZC5$a$cuZ23iD7EEEE;lsMt>vh z6MGI*!xW~5hsT^&Sv0gy4C|Qd5iaNY8Sig|ulJf(GXEO<>Q~A<$fN6nZS2zpU0MH1 fEn_J!&JF(pyRU10v+}x+00000NkvXXu0mjf#tOQU literal 0 HcmV?d00001 diff --git a/mods/rgt_world/textures/rgt_oak_log_side.png b/mods/rgt_world/textures/rgt_oak_log_side.png index 3e61a6132ab30ecce0c40f8f51d6c9c98b662b4f..5a55aa9597106b028ea946fe8abd1ee34b25749a 100644 GIT binary patch delta 236 zcmV`D2Ss?rG;>wj>M1(=4_{z7A zun@%ik<#P+db-EDrt`ekHMvL5sgw|rWzl_iGtD_2$CY#1wvUR4nTiM^sfw7Lh&!+{f_beXAp)CBZx!Ehl=J7r9V4u)Y|wu1deoab&~ z=;{Uq7)uP96^X4&2`*p=C1hReFfpOcw3Ha^wZrfT!`v-o2QVkkA4Cbj=NyD~uyw@< mjSGxW?+$-=*ZvEXVAvP2>8QCMDCc?r0000rW99VO8r1t{cI81810MWm~5)2R_)SxvlU{Pyhe`07*qoM6N<$f>QZ!>i_@%